使用Android中的本地插槽将实时视频录制保存到SD卡 - 视频无法播放

时间:2014-06-19 07:23:43

标签: android buffer mp4 video-recording localsocket

尝试捕获视频并使用本地套接字将其保存为Mp4 / 3gp格式的SD卡。能够按字节写入sd卡,但视频文件无法播放。我已经通过了很多例子:

https://github.com/fyhertz/spydroid-ipcamera

https://github.com/mconf/sipdroid

还有更多。我注意到有人建议这可能是文件头的问题。我试图跳过那些" mdat"标题中的数据:

private void skipHeader() throws IOException {
    // Skip all atoms preceding mdat atom
    byte[] buffer = new byte[3];
    while (true) {
        while (mReceiver.getInputStream().read() != 'm');
        mReceiver.getInputStream().read(buffer,0,3);
        if (buffer[0] == 'd' && buffer[1] == 'a' && buffer[2] == 't') break;
    }
}

最后没有什么对我有用。我需要做些什么来使这些视频文件可以使用Local Socket播放

1 个答案:

答案 0 :(得分:4)

根据您的解释,您要实现的是屏幕录像机。当然,您的意图是系统将其作为您的软件提供的技术的一部分来实现。

enter image description here

在这种情况下,最好的方法是改进已经存在的内容,将代码与新功能或新性能相结合,并将您遇到的原始来源归功于您的软件 - 正如预期的那样。这就是开源之美,它允许重用,分发和改进代码。

enter image description here

在Github有很多项目......如你所知,有些很好,有些很棒。对于您的特定情况,我的建议是使用现有代码,允许您的流式录制系统捕获视频,编写它而无需根设备,因为最终用户不会有兴趣取消新购买设备的保修运行你的软件。

enter image description here

获得良好的速度也很重要,这样可以在Android中为不同的屏幕尺寸至少捕获每秒20个屏幕,从而提供清晰的分辨率和低CPU使用率。所有这些特性将使您的解决方案保持稳定并且仍然坚如磐石。

enter image description here

我认为你可以采取的最佳方法是节省时间和麻烦,将“sji-android-screen-capture”代码作为项目的一部分。如果您的目标设备是Android 4.2~4.4,那么您可以使用,因为它支持这些Android版本。更多信息和源代码本身,您可以在Github repository找到。或者,您也可以使用Android ScreenCapture Sample实时捕获设备屏幕。