如何在android中捕获H.264编码的帧?

时间:2012-07-11 10:24:50

标签: android video native h.264 codec

我理解,有两种方法可以在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编码帧。

1 个答案:

答案 0 :(得分:3)

请参阅Spydroid http://code.google.com/p/spydroid-ipcamera/

基本上,您让视频编码器将带有H.264的.mp4写入一个特殊的文件描述符,该描述符在写入时调用您的代码。然后剥离MP4标头并将H.264 NALU转换为RTP数据包。