【问题标题】:libav / FFMPEG streaming in one encoding, saving as anotherlibav / FFMPEG 以一种编码流式传输,另存为另一种编码
【发布时间】:2018-02-25 21:46:57
【问题描述】:

我在嵌入式设备上使用 libav。经过一番努力,我得到了一个碎片化的 MPEG4 直播。我现在对此非常满意。

我现在想做的是从同一个输入中获得两个输出。第一个输出是我目前拥有的,它是在回调中处理并在某处流式传输的网络质量视频(有损@视频速率)。第二个输出应该是以更高的帧速率保存到文件中的无损视频。

我知道我可以独立产生第二个输出,但是 libav 有没有一种巧妙的方法可以一起完成这些输出?还是我两个都独立做?

【问题讨论】:

    标签: video ffmpeg video-streaming html5-video libav


    【解决方案1】:

    根据问题,您似乎会使用“复制”过滤器。

    所以这可以在使用 ffmpeg 时在命令行中完成,或者在使用 libavfilter 的代码中完成。

    这是关于复制过滤器的文档:

    https://ffmpeg.org/ffmpeg-filters.html#copy

    【讨论】:

    • 谢谢,虽然我不确定这是否正确。我希望输出具有不同的 FPS 和不同的损失(crf)设置。复制过滤器只是一个直接复制。
    • 道歉。我误解了问题的语言。我会更新我的答案或删除它。您可能需要发布更多详细信息,但就目前而言,简而言之:
    • 简而言之,您可以在命令行中进行复制,然后对复制的流进行进一步的转码。在代码中,您可能会创建另一个对象或表示第二个输出的“上下文”(来自第一个输出的副本),或者然后在第二个对象上运行不同的转码。对于获取的每一帧输入,您需要将两个不同的输出帧写入两个不同的输出。
    • 干杯,谢谢。这就说得通了。所以基本上我可以在全 FPS 下做一个无损,然后在(比如说)25 FPS 时将其转码为有损。你认为这有意义吗,还是值得在 libav 中使用两个独立的编码器?
    • 很遗憾,此时您已经达到了我的理解极限。不久前我做了类似的事情,但我必须查看代码来刷新我的记忆。我不确定性能差异是什么,但我认为这是您的指南。如果我能找到一个好的代码示例,我会用它来更新我的答案。
    猜你喜欢
    • 1970-01-01
    • 2011-03-17
    • 2020-11-22
    • 2017-11-16
    • 2021-06-16
    • 2017-01-08
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    相关资源
    最近更新 更多