就我而言,视频流来自Android MediaRecorder。 [更新]从一些在线信息中,视频流通常可以在函数setOutputFile(FileDescriptor fd)中以fd格式输入。
与捕获帧相关的帖子在这里: “Processing Android video frame by frame while recording”
答案是:
- 使用NDK打开流(可能是api,具体取决于实现)
- 修改流的字节 - 每个帧作为单独的数据包发送。您必须从相机中抓取每个数据包,然后进行修改。 您可以替换颜色,也可以翻译。你也可以使用 OpenGL通过添加玻璃之类的东西来完全修改图像 的效果。
- ...
醇>
但我不知道可以使用哪些API /库来捕获/抓取视频流中的每个帧。 (我已经能够使用ffmpeg将帧编码为视频文件)
我看了“wiki: Streaming media with ffserver”
但我不清楚如何用C / c ++编写程序来捕获/抓取视频流中的帧。
赞赏与示例和教程的链接。
答案 0 :(得分:0)
您可能使用FFmpeg命令行工具将帧编码为视频。现在是时候使用FFmpeg使用的库:libavcodec,libavformat,libavutil等。只需从the FFmpeg download page下载源代码,您就会在doc/examples/
目录中找到一些如何使用它们的示例。一个很好的例子是decoding and encoding示例。