我理解,有两种方法可以在android中捕获视频。
1)使用SurfaceView API
2)使用MediaRecorder API
我想使用Android(3.0+)的默认编码器捕获H.264编码帧,以便使用RTP通过网络发送。
在使用SurfaceView和SurfaceHolder类的预览回调时,我们可以将原始帧显示为用户的预览。我们在“PreviewCallback”类的“onPreviewFrame”方法中获取了帧。 但是,这些帧是H.264编码的。 因此,我尝试使用“MediaRecorder”API来设置H.264编码和“SurfaceView”来获取预览帧。 在这种情况下,不会调用previewcallbacks。
您能否告诉我如何实现这一目标。我们的主要目标是获得H.264编码帧(使用android的默认编解码器进行编码)。 参考:1)https://stackoverflow.com/a/8655244/698316 2)类似问题:http://permalink.gmane.org/gmane.comp.handhelds.android.devel/214422
您能否建议使用Android默认的H.264编解码器支持来捕获H.264编码帧。
答案 0 :(得分:3)
请参阅Spydroid http://code.google.com/p/spydroid-ipcamera/
基本上,您让视频编码器将带有H.264的.mp4写入一个特殊的文件描述符,该描述符在写入时调用您的代码。然后剥离MP4标头并将H.264 NALU转换为RTP数据包。