【问题标题】:How to capture / grab frames from the video stream?如何从视频流中捕获/抓取帧?
【发布时间】:2013-03-18 04:37:18
【问题描述】:

就我而言,视频流来自 Android MediaRecorder。 [更新] 从网上的一些资料来看,视频流通常可以在函数setOutputFile(FileDescriptor fd)中输入fd。

这里有一篇与捕获帧相关的帖子: "Processing Android video frame by frame while recording"

一个答案是:

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

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

我读到“wiki: Streaming media with ffserver

但我不清楚如何用 C/c++ 制作程序以从视频流中捕获/抓取帧。

我们将不胜感激提供示例和教程的链接。

【问题讨论】:

    标签: android video-streaming packet-capture


    【解决方案1】:

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

    【讨论】:

    • 谢谢。实际上,我使用 FFmpeg 库来解码视频文件,并处理每一帧,然后编码为另一个视频文件。有用。现在,我将输入视频文件更改为输入视频流。但是ffmpeg中的例子并没有涉及到这个话题。
    • 那你的问题还不清楚。请提供有关您想要什么的更多信息。比如你想提供什么流?其中一些是 RTP、RTMP 或 MPEGTS。 Streamingguide 或许可以帮助您选择。
    • 在我的帖子中,它写道:“就我而言,视频流来自 Android MediaRecorder。”。我想你以前可能不会触及这个话题。我在 ffmpeg 文档中阅读了相关教程。但问题是不存在 api 示例。我不知道可以使用哪些 API/库来捕获/抓取视频流中的每一帧。不过还是谢谢你。
    猜你喜欢
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    相关资源
    最近更新 更多