尝试捕获视频并使用本地套接字将其保存为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播放
答案 0 :(得分:4)
根据您的解释,您要实现的是屏幕录像机。当然,您的意图是系统将其作为您的软件提供的技术的一部分来实现。
在这种情况下,最好的方法是改进已经存在的内容,将代码与新功能或新性能相结合,并将您遇到的原始来源归功于您的软件 - 正如预期的那样。这就是开源之美,它允许重用,分发和改进代码。
在Github有很多项目......如你所知,有些很好,有些很棒。对于您的特定情况,我的建议是使用现有代码,允许您的流式录制系统捕获视频,编写它而无需根设备,因为最终用户不会有兴趣取消新购买设备的保修运行你的软件。
获得良好的速度也很重要,这样可以在Android中为不同的屏幕尺寸至少捕获每秒20个屏幕,从而提供清晰的分辨率和低CPU使用率。所有这些特性将使您的解决方案保持稳定并且仍然坚如磐石。
我认为你可以采取的最佳方法是节省时间和麻烦,将“sji-android-screen-capture”代码作为项目的一部分。如果您的目标设备是Android 4.2~4.4,那么您可以使用,因为它支持这些Android版本。更多信息和源代码本身,您可以在Github repository找到。或者,您也可以使用Android ScreenCapture Sample实时捕获设备屏幕。