2017-04-06 167 views
1

我正在寻找以最佳质量编码在VP9中使用iPhone 6s拍摄的4k视频。FFmpeg - 为VP9编码选择合适的比特率

作为参考,我想编码,经由ffprobe视频流数据:

Duration: 00:00:10.48, start: 0.000000, bitrate: 46047 kb/s 
    Stream #0:0(und): Video: h264 (High) (avc1/0x31637661), yuv420p(tv, bt709), 3840x2160, 45959 kb/s, 29.98 fps, 29.97 tbr, 600 tbn, 1200 tbc (default) 
    Metadata: 
     creation_time : 2017-03-13T21:12:56.000000Z 
     handler_name : Core Media Data Handler 
     encoder   : H.264 
    Stream #0:1(und): Audio: aac (LC) (mp4a/0x6134706D), 44100 Hz, mono, fltp, 79 kb/s (default) 
    Metadata: 
     creation_time : 2017-03-13T21:12:56.000000Z 
     handler_name : Core Media Data Handler 

我使用下面的FFmpeg命令,基于these instructions(见Best Quality (Slowest) Recommended Settings部分)。

  1. ffmpeg -i INPUT.mov -c:v libvpx-vp9 -pass 1 -b:v 46000K -threads 4 -speed 4 -g 9999 -an -f webm -y /dev/null
  2. ffmpeg -I INPUT.mov -c:v libvpx-vp9 -pass 2 -b:v 46000K -threads 4 -speed 0 -g 9999 -an -f webm OUTPUT.webm

是否有最佳实践选择最优-b:v值,使得生成的视频是从原来的视觉上不可区分?我尝试过的值范围从36000K-46000K,但是这些会导致整体比特率超过目标比特率的大文件。

在此先感谢!

+2

这就是CRF(恒定质量)模式的用途。使用'-crf 20 -b:v 0'跳过两遍。在输入的短段上测试不同的CRF值(0到63)。一旦你达到产生足够小和足够好的输出的价值,就使用该值。 – Mulvya

+0

@ Mulvya评论之上的奖励点:虽然使用其他编码器,但1-pass和2-pass CRF应该可以得到相同的结果,但遗憾的是libvpx并不是这种情况,并且您仍然应该执行2遍编码,即使在做CRF ... –

回答

0

只需要尝试不同的低得多的比特率并查看结果。我试着去看神器。头发仍然看起来不错吗?布?刻字,就像路标和商店橱窗一样?没有阻塞?锋利的边缘没有黑暗和光线的出血?没有回声?我发现原始运动模糊很难判断,必须并排比较以区分那个和压缩伪影。

尝试36000k的1/10。我发现标称400k比特率的vp9在1280x720视频上效果很好。 (ffmpeg与libvpx-vp9过冲,我通常最终实际比特率高出20%,480k)4K是3840x2160,9x 1280x720的大小,所以看起来3600k比特率应该会产生好的结果。

另一个指南是据说vp9的质量与mp4的质量相当于比特率的一半。在mp4中1000k比特率看起来不错的视频在vp9中应该看起来好于500k。