24

尝试捕获视频并使用本地套接字以 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;
    }
}

最后没有什么对我有用。我需要做些什么才能使这些视频文件可以使用本地套接字播放

4

1 回答 1

4

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

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

于 2015-06-02T15:33:27.957 回答