3

我使用我的 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());
4

1 回答 1

1

将此评论标记为已回答的问题:RTMP 应正确编码和流式传输,我的简单套接字解决方案无效,从这个意义上说问题不正确。与如何使用 Java 将 h.264 实时流编码为 RTP 数据包相关

于 2017-04-25T08:34:45.687 回答