我使用我的Android应用程序将视频从手机摄像头传输到我的PC服务器,并需要将它们保存到HDD上的文件中。因此,文件创建和流成功保存,但生成的文件无法播放任何视频播放器(GOM,KMP,Windows Media Player,VLC等) - 没有图片,没有声音,只有播放错误。
我将我的Android应用程序测试到了手机中,并且可能会说在此实例中捕获的视频成功存储在手机SD卡上,并且在将其传输到PC后出现了错误,因此,我的代码是正确的。
最后,我意识到视频容器中的问题:数据以MP4格式从手机流式传输并存储在PC上的* .mp4文件中,在这种情况下,文件可能不适合播放视频播放器。任何人都可以建议如何正确地将流式视频保存到文件中?
我的代码处理和存储流数据(没有错误处理以简化):
// getOutputMediaFile() returns a new File object
DataInputStream in = new DataInputStream (server.getInputStream());
FileOutputStream videoFile = new FileOutputStream(getOutputMediaFile());
int len;
byte buffer[] = new byte[8192];
while((len = in.read(buffer)) != -1) {
videoFile.write(buffer, 0, len);
}
videoFile.close();
server.close();
此外,如果有人会谈论可能的"陷阱,我将不胜感激。处理媒体流的保护。
谢谢,我希望你的帮助!
亚历。
UPD:
对于本地到手机存储的录制视频,我使用:
//targetFile - new File object, represents a file on phone SD card
myMediaRecorder.setOutputFile(targetFile);
用于将其流式传输到PC(无错误处理以简化)
ParcelFileDescriptor pfd = null;
Socket socket = null;
String hostname = "my IP";
int port = 8081;
socket = new Socket(InetAddress.getByName(hostname), port);
pfd = ParcelFileDescriptor.fromSocket(socket);
myMediaRecorder.setOutputFile(pfd.getFileDescriptor());
答案 0 :(得分:1)
将此评论标记为已回答的问题:RTMP应该被正确编码和流式传输,我的简单套接字解决方案无效且问题在这个意义上是不正确的。与How to encode h.264 live stream to RTP packet with Java
相关