gpt4 book ai didi

FFMPEG API——流参数逐帧改变多少?

转载 作者:行者123 更新时间:2023-12-04 22:56:08 24 4
gpt4 key购买 nike

我正在尝试使用 ffmpeg 从设备和文件中提取原始流。我注意到关键帧信息(视频:宽度、高度、像素格式、色彩空间、音频:样本格式)都存储在 AVCodecContext 和 AVFrame 中。这意味着我可以在流播放之前访问它,并且我可以在每一帧中访问它。

我需要多少考虑这些值逐帧变化?我找到了https://ffmpeg.org/doxygen/trunk/demuxing__decoding_8c_source.html#l00081这表明至少宽度、高度和像素格式可能会逐帧更改。

  • 颜色空间和样本格式也会逐帧变化吗?
  • 这些变化是暂时的(单帧)还是持久的(重要的帧 block ),有没有办法预测这个流会发生什么行为?
  • 有没有办法找到这个流可能产生的最具描述性的属性,这样我就可以放大所有质量较低的帧,但不能提供比源质量更高的结果,即使这是我无法提前播放所有帧的设备或网络流?

  • 基本问题是:如何在原始流(我的输出)没有任何方式在流中指定流属性更改的限制下解决此 API 的灵 active 。我想我需要预测最具描述性的属性来提供流,或者在属性发生变化时提供新的流。做出哪种选择取决于这些值是会迅速变化还是保持相对稳定。

    最佳答案

    所以,添加到 @szatmary says ,流参数更改的典型用例是自适应流:

  • 想象一下,您正在使用各种互联网连接方法的笔记本电脑上观看 youtube,突然带宽减少了。您的流将自动切换到较低的带宽。 FFmpeg(由 Chrome 使用)需要支持这一点。
  • 或者,想象一下 rtc 视频聊天中的类似场景。

  • FFmpeg 这样做的原因是因为 API 本质上是试图适应共同点。用手机拍摄的视频永远不会改变分辨率。大多数从视频编辑软件导出的视频也不会。即使来自 youtube-dl 的视频通常也不会切换分辨率,这是客户端的决定,而 youtube-dl 根本不会这样做。那你该怎么办?我只是使用来自第一帧的流信息并将所有后续帧重新缩放到该分辨率。这将适用于 99.99% 的案例。您是否希望将您的服务适应这剩余的 0.01% 取决于您认为人们会上传什么类型的视频,以及在这种情况下分辨率更改是否有意义。

    色彩空间会改变吗?他们可以(理论上)在将屏幕录制与视频片段混合在一起的软件中,但这是极不可能的(实际上)。样本格式的变化与视频分辨率一样频繁:在自适应场景中经常发生变化,但您是否关心取决于您的服务和您希望获得的视频类型。

    关于FFMPEG API——流参数逐帧改变多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32437717/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com