ffmpeg:2步编码解决了视频转换过程中的问题吗?

时间:2017-11-14 17:03:46

标签: video encoding ffmpeg

我将几个视频编码为x265格式以节省磁盘存储空间,并且其中一些视频会发生一些错误。像下面这些:

[h264 @ 0x285f800] error while decoding MB 15 15, bytestream -29ate=3310.7kbits/s
[h264 @ 0x285f800] concealing 2434 DC, 2434 AC, 2434 MV errors in P frame
[matroska,webm @ 0x22205e0] Read error at pos. 1932044330 (0x7328a82a)
[h264 @ 0x27890c0] illegal short term buffer state detected
[h264 @ 0x27890c0] Missing reference picture, default is 65694
[h264 @ 0x27d0880] mmco: unref short failure
[h264 @ 0x27d0880] error while decoding MB 63 29, bytestream -8rate=3230.1kbits/s dup=0 drop=1
[h264 @ 0x27d0880] concealing 1266 DC, 1266 AC, 1266 MV errors in P frame
[matroska,webm @ 0x22205e0] Read error at pos. 2048927876 (0x7a202884)
[h264 @ 0x27304e0] mmco: unref short failureime=00:48:51.54 bitrate=3229.2kbits/s dup=0 drop=1
[h264 @ 0x27890c0] error while decoding MB 28 35, bytestream -16ate=3177.0kbits/s dup=0 drop=1
[h264 @ 0x27890c0] concealing 821 DC, 821 AC, 821 MV errors in P frame
[matroska,webm @ 0x22205e0] Read error at pos. 2112109973 (0x7de43d95)
[h264 @ 0x285f800] mmco: unref short failureime=00:50:36.21 bitrate=3175.5kbits/s dup=0 drop=1
[h264 @ 0x27d0880] error while decoding MB 51 21, bytestream -28ate=3199.4kbits/s dup=0 drop=1
[h264 @ 0x27d0880] concealing 1918 DC, 1918 AC, 1918 MV errors in P frame
[matroska,webm @ 0x22205e0] Read error at pos. 2202555497 (0x83485469)
[matroska,webm @ 0x22205e0] Read error at pos. 2409903171 (0x8fa43443)306.9kbits/s dup=0 drop=1
[h264 @ 0x27d0880] error while decoding MB 3 30, bytestream -7
[h264 @ 0x27d0880] concealing 1246 DC, 1246 AC, 1246 MV errors in P frame
[h264 @ 0x27890c0] error while decoding MB 7 5, bytestream -7bitrate=3396.2kbits/s dup=0 drop=1
[h264 @ 0x27890c0] concealing 3242 DC, 3242 AC, 3242 MV errors in B frame
[matroska,webm @ 0x22205e0] Read error at pos. 2628527465 (0x9cac2569)
[h264 @ 0x285f800] mmco: unref short failuretime=01:02:15.08 bitrate=3396.3kbits/s dup=0 drop=1
[h264 @ 0x2818040] error while decoding MB 36 30, bytestream -12rate=3473.5kbits/s dup=0 drop=1
[h264 @ 0x2818040] concealing 1213 DC, 1213 AC, 1213 MV errors in P frame
[matroska,webm @ 0x22205e0] Read error at pos. 2874947326 (0xab5c36fe)
[h264 @ 0x27890c0] error while decoding MB 46 8, bytestream -6itrate=3590.8kbits/s dup=0 drop=1
[h264 @ 0x27890c0] concealing 2963 DC, 2963 AC, 2963 MV errors in B frame
[matroska,webm @ 0x22205e0] Read error at pos. 3162785874 (0xbc844852)

如果我添加两步编码,那可以解决这些错误吗? 2步编码究竟做了什么?我使用的命令几乎就是这个答案的https://askubuntu.com/a/718300/396175,那么应该如何(哪个参数)应用两步编码?

谢谢!

1 个答案:

答案 0 :(得分:4)

  

我正在将几个视频编码为x265格式以节省磁盘存储空间,并且其中一些视频会发生一些错误。

看起来像是解码错误。输入有问题,因此在读取文件时会出现错误。如果输入正常,或者输出看起来没问题,则忽略它们。

  

如果我添加两步编码,可以解决这些错误吗?

没有。这是一个解码问题。但是,您的ffmpeg已经过时了,请考虑downloading一个新的,并查看它在解码时是否更强大(可能不是,但您永远不知道)。

  

两步编码究竟做了什么?

我在你提供的链接中没有提到2遍编码。我假设“2步”你指的是“2通”,但如果我弄错的话,请纠正我。 2遍编码通常用于定位特定的输出文件大小。否则,只需使用带有恒定速率因子的编码器的单次传递,例如x264和x265。见FFmpeg Wiki:H.264& H.265了解更多相关信息。

  我应该使用

(哪个参数)来应用两步编码?

使用-pass选项启动2遍。有关示例,请参阅上面的wiki链接。但是,您不需要执行2遍编码。只需使用-crf,如您提供的链接所示。