Я новичок в разработке Android и сталкиваюсь с этой проблемой, которую мой клиент хочет передать видеофайлам с его камеры на свой Android-телефон, используя только подключение к локальной сети .. это возможно? пока что единственное, что я могу сделать, это воспроизвести видео из хранилища телефона и потокового видео HTTP или RTSP, но можно ли передавать видеофайл при отправке через LAN? Спасибо.Android: Воспроизведение видеофайла mp4 при загрузке через LAN возможно?
@ Androider-я извиняюсь за не комментирование, потому что я не могу, так или иначе, это мой код, и любая помощь будет оценена благодаря вам. Отредактировано:
стороне клиента
` общественного класса Client расширяет Activi ти {
private Socket client;
private FileInputStream fileInputStream;
private BufferedInputStream bufferedInputStream;
private OutputStream outputStream;
private Button button;
private TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.button1);
text = (TextView) findViewById(R.id.textView1);
//Button press event listener
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
File file = new File("/storage/emulated/BaseAhri.jpg");
try {
client = new Socket("10.0.2.2", 4444);
byte[] mybytearray = new byte[(int) file.length()];
fileInputStream = new FileInputStream(file);
bufferedInputStream = new BufferedInputStream(fileInputStream);
bufferedInputStream.read(mybytearray, 0, mybytearray.length);
outputStream = client.getOutputStream();
outputStream.write(mybytearray, 0, mybytearray.length);
outputStream.flush();
bufferedInputStream.close();
outputStream.close();
client.close();
text.setText("File Sent");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Server Side
private static ServerSocket serverSocket;
private static Socket clientSocket;
private static InputStream inputStream;
private static FileOutputStream fileOutputStream;
private static BufferedOutputStream bufferedOutputStream;
private static int filesize = 10000000;
private static int bytesRead;
private static int current = 0;
public static void main(String[] args) throws IOException {
serverSocket = new ServerSocket(4444);
System.out.println("Server started. Listening to the port 4444");
clientSocket = serverSocket.accept();
byte[] mybytearray = new byte[filesize];
inputStream = clientSocket.getInputStream();
fileOutputStream = new FileOutputStream("/sdcard/DCIM/Camera/BaseAhri.jpg");
bufferedOutputStream = new BufferedOutputStream(fileOutputStream);});
System.out.println("Receiving...");
bytesRead = inputStream.read(mybytearray, 0, mybytearray.length);
current = bytesRead;
do {
bytesRead = inputStream.read(mybytearray, current, (mybytearray.length - current));
if (bytesRead >= 0) {
current += bytesRead;
}
} while (bytesRead > -1);
bufferedOutputStream.write(mybytearray, 0, current);
bufferedOutputStream.flush();
bufferedOutputStream.close();
inputStream.close();
clientSocket.close();
serverSocket.close();
System.out.println("Sever recieved the file");
}
Error Server Side
[2014-01-22 15:20:15 - AndroidSocketSERVER] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.javacodegeeks.android.androidsocketserver/.Server }
[2014-01-22 15:20:15 - AndroidSocketSERVER] ActivityManager: Error type 3
[2014-01-22 15:20:15 - AndroidSocketSERVER] ActivityManager: Error: Activity class {com.javacodegeeks.android.androidsocketserver/com.javacodegeeks.android.androidsocketserver.Server} does not exist.
И в стороне клиента он выходит из строя после того, как я отправляю. Не уверен, s является ошибкой, так как у моего сервера есть проблема.
@ Androider -Изменить для позднего обновления. Вот мой результирующий код, где теперь я могу передать видеофайл и управлять его битами, но проблема в том, мои данные всегда повреждены из-за пропавшего байта или что-то в этом роде, и теперь, как я его потоку? Я не могу воспроизвести файл, потому что он не завершен? если это так, то какова цель управления байтом? Надеюсь, ты сможешь помочь мне снова.
КОДЕКСА Клиент и Сервер:
serverTransmitButton = (Button) findViewById(R.id.button_TCP_server);
serverTransmitButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.i("Start Server Button Clicked", "yipee");
try {
// create socket
// TODO: the port should match the one in Client
ServerSocket servsock = new ServerSocket(5005);
while (true) {
Log.i("************", "Waiting...");
Socket sock = servsock.accept(); // blocks until connection opened
Log.i("************", "Accepted connection : " + sock);
// sendfile
// TODO: put the source of the file
int filesize=8192;
File myFile = new File ("/sdcard/DCIM/Camera/test.mp4");
byte [] mybytearray = new byte [filesize];
Log.i("####### file length = ", String.valueOf(myFile.length()));
FileInputStream fis = new FileInputStream(myFile);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(mybytearray,0,mybytearray.length);
OutputStream os = sock.getOutputStream();
Log.i("************", "Sending...");
int read;
while((read = fis.read(mybytearray)) != -1){
os.write(mybytearray,0,read);
}
os.flush();
os.close();
fis.close();
bis.close();
}
} catch (IOException e) {
Log.i("Io execption ", "e: " + e);
}
Log.i("=============== the end of start ==============", "==");
}
});
clientReceiveButton = (Button) findViewById(R.id.button_TCP_client);
clientReceiveButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.i("Read Button Clicked", "yipee");
try {
int bufferSize;// filesize temporary hardcoded
long start = System.currentTimeMillis();
int bytesRead;
int current;
// localhost for testing
// TODO: server's IP address. Socket should match one above in server
Socket sock = new Socket("192.168.123.186",5005);
Log.i("************", "Connecting...");
// receive file
bufferSize=sock.getReceiveBufferSize();
byte [] mybytearray = new byte [bufferSize];
InputStream is = sock.getInputStream();
FileOutputStream fos = new FileOutputStream("/storage/emulated/0/testinggo.mp4");
BufferedOutputStream bos = new BufferedOutputStream(fos);
bytesRead = is.read(mybytearray,0,mybytearray.length);
while((current = is.read(mybytearray)) >0){
bos.write(mybytearray, 0 , current);
}
bos.flush();
bos.close();
is.close();
sock.close
} catch (UnknownHostException e) {
Log.i("******* :(", "UnknownHostException");
} catch (IOException e){
Log.i("Read has IOException", "e: " + e);
}
Log.i("=============== the end of read ===============", "==");
}
});
}
}
спасибо за быстрый ответ случайный «goodguygreg», если это не проблема, вы можете спросить, где начать некоторые ссылки, возможно ? относительно этого продукта сокета-сервера ... – user3213989
Вот несколько ссылок: http://android-er.blogspot.co.il/2011/01/implement-simple-socket-server-in.html http: // android-er .blogspot.co.il/2011/01/simple-communication-using.html – Androider
И какой-то подобный вопрос http://stackoverflow.com/questions/2511045/streaming-to-the-android-mediaplayer – Androider