如何从视频流中捕获/抓取帧?

时间:2013-03-27 21:36:51

标签: android video-streaming packet-capture

就我而言,视频流来自Android MediaRecorder。 [更新]从一些在线信息中,视频流通常可以在函数setOutputFile(FileDescriptor fd)中以fd格式输入。

与捕获帧相关的帖子在这里: “Processing Android video frame by frame while recording

答案是:

  
      
  1. 使用NDK打开流(可能是api,具体取决于实现)
  2.   
  3. 修改流的字节 - 每个帧作为单独的数据包发送。您必须从相机中抓取每个数据包,然后进行修改。   您可以替换颜色,也可以翻译。你也可以使用   OpenGL通过添加玻璃之类的东西来完全修改图像   的效果。
  4.   
  5. ...
  6.   

但我不知道可以使用哪些API /库来捕获/抓取视频流中的每个帧。 (我已经能够使用ffmpeg将帧编码为视频文件)

我看了“wiki: Streaming media with ffserver

但我不清楚如何用C / c ++编写程序来捕获/抓取视频流中的帧。

赞赏与示例和教程的链接。

1 个答案:

答案 0 :(得分:0)

您可能使用FFmpeg命令行工具将帧编码为视频。现在是时候使用FFmpeg使用的库:libavcodec,libavformat,libavutil等。只需从the FFmpeg download page下载源代码,您就会在doc/examples/目录中找到一些如何使用它们的示例。一个很好的例子是decoding and encoding示例。