首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FFMPEG API --流参数在多大程度上改变帧到帧?

FFMPEG API --流参数在多大程度上改变帧到帧?
EN

Stack Overflow用户
提问于 2015-09-07 11:35:03
回答 2查看 668关注 0票数 1

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

我需要多少钱来解释这些值的变化帧对帧?我发现了source.html#l00081,它表明至少宽度、高度和像素格式可能会改变帧到帧。

  • 颜色空间和样本格式也会改变帧到帧吗?
  • 这些变化是暂时的(单个框架)还是持久的(一个重要的帧块),对于这个流是否有任何方法来预测会发生什么行为?
  • 有没有一种方法可以找到这个流可能产生的最具描述性的属性,这样我就可以扩展所有低质量的帧,但不能提供比源更高质量的结果,即使这是一个设备或网络流,我不能预先播放所有的帧?

基本问题是:如何解决这个API的灵活性,限制原始流(我的输出)不能指定流属性的变化。我想我需要预测最具描述性的属性来给出流,或者在属性发生变化时提供一个新的流。哪些选择取决于这些值是会迅速变化,还是会保持相对稳定。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-08 12:19:01

因此,要添加到@szatmary says中,流参数更改的典型用例是自适应流:

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

FFmpeg之所以这样做,是因为该API本质上是为了适应公共分母。在电话上拍摄的视频永远不会改变分辨率。大多数视频也不会从视频编辑软件中导出。即使是youtube-dl的视频通常也不会改变分辨率,这是一个客户端的决定,youtube-dl根本不会这样做。那你该怎么办?我只需使用来自第一个帧的流信息,并重新确定该分辨率的所有后续帧。这将适用于99.99%的案件。你是否想把你的服务安排到剩下的0.01%,取决于你认为人们会上传什么类型的视频,以及在这种情况下分辨率的改变是否有任何意义。

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

票数 2
EN

Stack Overflow用户

发布于 2015-09-07 19:57:57

通常不经常,或者永远不会。但是,这是基于编解码器,是在编码时选择的选项。为了以防万一,我把解码后的帧通过swscale。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32437717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档