我使用我的 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();
另外,如果有人谈论在处理媒体流保护方面可能存在的“陷阱”,我将不胜感激。
谢谢,希望对您有所帮助!
亚历克斯。
升级版:
为了将视频本地录制到手机存储中,我使用:
//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());