【发布时间】:2015-12-02 22:52:45
【问题描述】:
我正在尝试使用 ffmpeg 从设备和文件中提取原始流。我注意到关键帧信息(视频:宽度、高度、像素格式、色彩空间、音频:样本格式)都存储在 AVCodecContext 和 AVFrame 中。这意味着我可以在流播放之前访问它,并且我可以在每一帧都访问它。
我需要多少考虑这些值的逐帧变化?我找到了https://ffmpeg.org/doxygen/trunk/demuxing__decoding_8c_source.html#l00081,这表明至少宽度、高度和像素格式可能会逐帧改变。
- 色彩空间和样本格式也会逐帧变化吗?
- 这些变化是暂时的(单帧)还是持久的(重要的帧块)?有没有办法预测这个流会发生什么行为?
- 有没有办法找到这个流可能产生的最具描述性的属性,这样我就可以放大所有质量较低的帧,但不能提供比源质量更高的结果,甚至如果这是我无法提前播放所有帧的设备或网络流?
基本问题是:如何解决这个 API 的灵活性问题,因为原始流(我的输出)没有任何方式来指定流中流属性的更改。我想我需要预测最具描述性的属性来提供流,或者在属性发生变化时提供新的流。做出哪种选择取决于这些值是会迅速变化还是保持相对稳定。
【问题讨论】:
标签: ffmpeg libavcodec libav