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

neo*_*g88 24 mp4 android buffer 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Ava*_*anz 4

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

在此输入图像描述

在这种情况下,最好的方法是改进现有的内容,将代码与新功能或新性能相结合,并按照预期将信用归功于您遇到并作为软件一部分包含的原始来源。这就是开源的美妙之处,它允许代码被重用、分发和改进。

在此输入图像描述

在 Github 上有很多项目......如你所知,有些很好,有些很棒。对于您的特定情况,我的建议是使用允许您的流记录系统捕获视频的现有代码,无需root设备即可写入视频,因为最终用户不会有兴趣仅使新购买的设备的保修失效运行您的软件。

在此输入图像描述

同样重要的是要实现良好的速度,在 Android 中针对不同的屏幕尺寸至少每秒捕获 20 个屏幕,提供清晰的分辨率和较低的 CPU 使用率。所有这些特性将使您的解决方案保持稳定并且看起来仍然坚如磐石。

在此输入图像描述

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