AFSSDF 发表于 2022-4-21 12:05:30

记录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:14:07

本帖最后由 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.

苏辰汐 发表于 2022-4-21 15:25:52

顺便mpc-hc有一直在维护的社区版本:https://github.com/clsid2/mpc-hc

zzy2000129 发表于 2022-4-21 15:49:32

记得这个是AVC中间更新过一次规范导致的,解决方案是解码器换成ffdshow或者lavfilters 0.67(需要折腾一下共存),常见于日职一些阴间Hi444pp

AFSSDF 发表于 2022-4-21 16:45:09

本帖最后由 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]
查看完整版本: 记录FFmpeg 旧版本yuv444p10le花屏解决