我正在尝试解码 1920x1080 30fps 的 h264 流。单个帧在 VLC 媒体播放器中看起来非常出色(暂停播放),但当我使用 avconv 解码时(ffmpeg 已被弃用并由 avconv 取代),相比之下帧质量真的很差(我的主要抱怨是块状)。
以下是我调用 avconv 的方式:
avconv -i video.h264 -s 1920x1080 -f image2 temp/images/video-%03d.jpg
avconv 是否有 jpg 输出设置?我阅读了 avconv 文档中我认为最重要的部分(即http://libav.org/avconv.html#image2-1),并且找不到任何方法来指定输出 jpg 质量。
此外,avconv 似乎在开始解码之前读取了整个流,因此如果流正在进行中,它只会解码到 avconv 开始解码过程时流的位置。有什么办法可以解决这个问题吗?换句话说,如果 10 秒长的流在 t 秒时启动,而 avconv 在 t+1 秒时启动,则 avconv 将仅解码 1 秒的流。
答案1
您可以使用以下参数强制将 JPEG 质量等级设置为最佳 JPEG 质量-q:v 1
:
avconv -i video.h264 -s 1920x1080 -f image2 -q:v 1 temp/images/video-%03d.jpg
答案2
JPEG 是有损编解码器,或许可以使用 PNG
ffmpeg -i video.h264 -s 1920x1080 temp/images/video-%03d.png