记录FFmpeg 旧版本yuv444p10le花屏解决
测试视频: 花右京メイド隊 01 映像特典 01 「第1話予告(15秒)」 (BD 1440x1080 x264@Hi444p ALAC 2ch AC3 5.1ch).mp4在 mpv-android 播放器中花屏后使用 MX Player1.42.12、Nova Video Player6.0.53、VLC3.3.4、KMPlayer Pro2.3.9、XPlayer2.1.9.4、UPlayer2.0.3、三星视频播放器7.3.16.2,播放测试均花屏或显示不支持编码格式
之后在PC中播放 Potplayer、mpv(均为最新版)显示花屏, MPC-HC 播放正常
使用 最新版 ffmpeg -i 测试 报错
C:\Users\Li\Pictures\三星多屏联动>ffmpeg -i "花右京メイド隊 01 映像特典 01 「第1話予告(15秒)」 (BD 1440x1080 x264@Hi444p ALAC 2ch AC3 5.1ch).mp4"
ffmpeg version 2022-04-18-git-d5687236ab-full_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 11.2.0 (Rev10, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
libavutil 57. 24.101 / 57. 24.101
libavcodec 59. 26.100 / 59. 26.100
libavformat 59. 22.100 / 59. 22.100
libavdevice 59.6.100 / 59.6.100
libavfilter 8. 33.100 /8. 33.100
libswscale 6.6.100 /6.6.100
libswresample 4.6.100 /4.6.100
libpostproc 56.5.100 / 56.5.100
<font color="#ff0000">top block unavailable for requested intra mode -1</font>
<font color="#ff0000">error while decoding MB 6 0, bytestream 49221</font>
concealing 6120 DC, 6120 AC, 6120 MV errors in I frame
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '花右京メイド隊 01 映像特典 01 「第1話予告(15秒)」 (BD 1440x1080 x264@Hi444p ALAC 2ch AC3 5.1ch).mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41isomM4A
creation_time : 2013-08-28T17:03:25.000000Z
Duration: 00:00:16.03, start: 0.000000, bitrate: 6703 kb/s
Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p10le(tv, bt709, progressive), 1440x1080, 5276 kb/s, 23.98 fps, 23.98 tbr, 24k tbn (default)
Metadata:
creation_time : 2013-08-28T17:03:25.000000Z
handler_name : L-SMASH Video Media Handler
vendor_id :
encoder : AVC Coding
Stream #0:1(und): Audio: alac (alac / 0x63616C61), 48000 Hz, stereo, s16p, 788 kb/s (default)
Metadata:
creation_time : 2013-08-28T17:03:25.000000Z
handler_name : 2ch
vendor_id :
Stream #0:2(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
Metadata:
creation_time : 2013-08-28T17:03:25.000000Z
handler_name : 5.1ch
vendor_id :
Side data:
audio service type: main
<font color="#ff0000">At least one output file must be specified</font>使用旧版本 ffmpeg-3.2.6 测试无报错
li@DESKTOP:~/project/ffmpeg-3.2.6/src$ ./bin/ffmpeg -i ~/花右京メイド隊\ 01\ 映像特典\ 01\ 「第1話予告(15秒)」\ \(BD\ 1440x1080\ x264@Hi444p\ ALAC\ 2ch\ AC3\ 5.1ch\).mp4
ffmpeg version 3.2.6 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
configuration: --prefix=/home/li/project/ffmpeg-3.2.6/src
libavutil 55. 34.101 / 55. 34.101
libavcodec 57. 64.101 / 57. 64.101
libavformat 57. 56.101 / 57. 56.101
libavdevice 57.1.100 / 57.1.100
libavfilter 6. 65.100 /6. 65.100
libswscale 4.2.100 /4.2.100
libswresample 2.3.100 /2.3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/li/花右京メイド隊 01 映像特典 01 「第1話予告(15秒)」 (BD 1440x1080 x264@Hi444p ALAC 2ch AC3 5.1ch).mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41isomM4A
creation_time : 2013-08-28T17:03:25.000000Z
Duration: 00:00:16.03, start: 0.000000, bitrate: 6703 kb/s
Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p10le(tv, bt709), 1440x1080, 5276 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2013-08-28T17:03:25.000000Z
handler_name : L-SMASH Video Media Handler
encoder : AVC Coding
Stream #0:1(und): Audio: alac (alac / 0x63616C61), 48000 Hz, stereo, s16p, 788 kb/s (default)
Metadata:
creation_time : 2013-08-28T17:03:25.000000Z
handler_name : 2ch
Stream #0:2(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
Metadata:
creation_time : 2013-08-28T17:03:25.000000Z
handler_name : 5.1ch
Side data:
audio service type: main
<font color="#ffa500">At least one output file must be specified</font>使用旧版本 ffmpeg-3.2.8 测试与最新版本测试报错一致
li@DESKTOP:~/project/ffmpeg-3.2.8/src$ ./bin/ffmpeg -i ~/花右京メイド隊\ 01\ 映像特典\ 01\ 「第1話予告(15秒)」\ \(BD\ 1440x1080\ x264@Hi444p\ ALAC\ 2ch\ AC3\ 5.1ch\).mp4
ffmpeg version 3.2.8 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
configuration: --prefix=/home/li/project/ffmpeg-3.2.8/src
libavutil 55. 34.101 / 55. 34.101
libavcodec 57. 64.101 / 57. 64.101
libavformat 57. 56.101 / 57. 56.101
libavdevice 57.1.100 / 57.1.100
libavfilter 6. 65.100 /6. 65.100
libswscale 4.2.100 /4.2.100
libswresample 2.3.100 /2.3.100
<font color="#ff0000"> top block unavailable for requested intra mode -1</font>
<font color="#ff0000">error while decoding MB 6 0, bytestream 49221</font>
concealing 6120 DC, 6120 AC, 6120 MV errors in I frame
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/li/花右京メイド隊 01 映像特典 01 「第1話予告(15秒)」 (BD 1440x1080 x264@Hi444p ALAC 2ch AC3 5.1ch).mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41isomM4A
creation_time : 2013-08-28T17:03:25.000000Z
Duration: 00:00:16.03, start: 0.000000, bitrate: 6703 kb/s
Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p10le(tv, bt709), 1440x1080, 5276 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2013-08-28T17:03:25.000000Z
handler_name : L-SMASH Video Media Handler
encoder : AVC Coding
Stream #0:1(und): Audio: alac (alac / 0x63616C61), 48000 Hz, stereo, s16p, 788 kb/s (default)
Metadata:
creation_time : 2013-08-28T17:03:25.000000Z
handler_name : 2ch
Stream #0:2(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
Metadata:
creation_time : 2013-08-28T17:03:25.000000Z
handler_name : 5.1ch
Side data:
audio service type: main
<font color="#ffa500">At least one output file must be specified</font>对比 ffmpeg-3.2.6 ffmpeg-3.2.8 版本差异,最后试出为 libavcodec/h264_cabac.c 原因
(此处由于ffmpeg-3.2.7与最新版的报错不一致并未加入对比)
对比关键代码 ( github地址 )
将3.2.6版本的 h264_cabac.c 替换到最新版中,重新编译安装,播放恢复正常
—————————————————————————————————————————————————————————————————
在PC中,只有 MPC-HC 可以正常播放, 可能是由于 MPC-HC 最后一次发布时间为 2017-07-16,
根据 ffmpeg发行时间 ffmpeg的下一个报错版本 3.2.7 发布时间为 2017-07-30
—————————————————————————————————————————————————————————————————
对于此错误只针对该视频花屏修复(本人使用Android平板看,不习惯使用PC),并不是说现版本的ffmpeg有问题。
本人也并非视频编解码专业,也看不懂 h264_cabac.c 中的代码逻辑,只是测试出改成3.2.6版本播放该视频不会花,可以正常观看
本帖最后由 shadows 于 2022-4-21 15:30 编辑
说不定相关 https://trac.ffmpeg.org/ticket/8126 https://trac.ffmpeg.org/ticket/6717
https://github.com/mpv-player/mpv/issues/4559 可尝试使用--vd-lavc-assume-old-x264 解决
https://mpv.io/manual/master/#options-vd-lavc-assume-old-x264:
--vd-lavc-assume-old-x264=<yes|no>
Assume the video was encoded by an old, buggy x264 version (default: no). Normally, this is autodetected by libavcodec. But if the bitstream contains no x264 version info (or it was somehow skipped), and the stream was in fact encoded by an old x264 version (build 150 or earlier), and if the stream uses 4:4:4 chroma, then libavcodec will by default show corrupted video. This option sets the libavcodec x264_build option to 150, which means that if the stream contains no version info, or was not encoded by x264 at all, it assumes it was encoded by the old version. Enabling this option is pretty safe if you want your broken files to work, but in theory this can break on streams not encoded by x264, or if a stream encoded by a newer x264 version contains no version info.
顺便mpc-hc有一直在维护的社区版本:https://github.com/clsid2/mpc-hc 记得这个是AVC中间更新过一次规范导致的,解决方案是解码器换成ffdshow或者lavfilters 0.67(需要折腾一下共存),常见于日职一些阴间Hi444pp 本帖最后由 AFSSDF 于 2022-4-21 16:47 编辑
shadows 发表于 2022-4-21 15:14
说不定相关 https://trac.ffmpeg.org/ticket/8126 https://trac.ffmpeg.org/ticket/6717
https://github.co ...
测试mpv-android加入这个参数后可以正常播放,感谢大佬分享
--vd-lavc-assume-old-x264=yes
页:
[1]