找回密码
 立即注册
查看: 3020|回复: 4

记录FFmpeg 旧版本yuv444p10le花屏解决

1

主题

1

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
3053
AFSSDF 发表于 2022-4-21 12:05:30 | 显示全部楼层 |阅读模式
测试视频: 花右京メイド隊 01 映像特典 01 「第1話予告(15秒)」 (BD 1440x1080 x264@Hi444p ALAC 2ch AC3 5.1ch).mp4在 mpv-android 播放器中花屏
Screenshot_20220421-110910_mpv.jpg
后使用 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 测试 报错
  1. C:\Users\Li\Pictures\三星多屏联动>ffmpeg -i "花右京メイド隊 01 映像特典 01 「第1話予告(15秒)」 (BD 1440x1080 x264@Hi444p ALAC 2ch AC3 5.1ch).mp4"
  2. ffmpeg version 2022-04-18-git-d5687236ab-full_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers
  3.   built with gcc 11.2.0 (Rev10, Built by MSYS2 project)
  4.   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
  5.   libavutil      57. 24.101 / 57. 24.101
  6.   libavcodec     59. 26.100 / 59. 26.100
  7.   libavformat    59. 22.100 / 59. 22.100
  8.   libavdevice    59.  6.100 / 59.  6.100
  9.   libavfilter     8. 33.100 /  8. 33.100
  10.   libswscale      6.  6.100 /  6.  6.100
  11.   libswresample   4.  6.100 /  4.  6.100
  12.   libpostproc    56.  5.100 / 56.  5.100
  13. [h264 @ 000002bc9a7b5980] <font color="#ff0000">top block unavailable for requested intra mode -1</font>
  14. [h264 @ 000002bc9a7b5980] <font color="#ff0000">error while decoding MB 6 0, bytestream 49221</font>
  15. [h264 @ 000002bc9a7b5980] concealing 6120 DC, 6120 AC, 6120 MV errors in I frame
  16. Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '花右京メイド隊 01 映像特典 01 「第1話予告(15秒)」 (BD 1440x1080 x264@Hi444p ALAC 2ch AC3 5.1ch).mp4':
  17.   Metadata:
  18.     major_brand     : mp42
  19.     minor_version   : 0
  20.     compatible_brands: mp42mp41isomM4A
  21.     creation_time   : 2013-08-28T17:03:25.000000Z
  22.   Duration: 00:00:16.03, start: 0.000000, bitrate: 6703 kb/s
  23.   Stream #0:0[0x1](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)
  24.     Metadata:
  25.       creation_time   : 2013-08-28T17:03:25.000000Z
  26.       handler_name    : L-SMASH Video Media Handler
  27.       vendor_id       : [0][0][0][0]
  28.       encoder         : AVC Coding
  29.   Stream #0:1[0x2](und): Audio: alac (alac / 0x63616C61), 48000 Hz, stereo, s16p, 788 kb/s (default)
  30.     Metadata:
  31.       creation_time   : 2013-08-28T17:03:25.000000Z
  32.       handler_name    : 2ch
  33.       vendor_id       : [0][0][0][0]
  34.   Stream #0:2[0x3](und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
  35.     Metadata:
  36.       creation_time   : 2013-08-28T17:03:25.000000Z
  37.       handler_name    : 5.1ch
  38.       vendor_id       : [0][0][0][0]
  39.     Side data:
  40.       audio service type: main
  41. <font color="#ff0000">At least one output file must be specified</font>
复制代码
使用旧版本 ffmpeg-3.2.6 测试无报错
  1. 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
  2. ffmpeg version 3.2.6 Copyright (c) 2000-2017 the FFmpeg developers
  3.   built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  4.   configuration: --prefix=/home/li/project/ffmpeg-3.2.6/src
  5.   libavutil      55. 34.101 / 55. 34.101
  6.   libavcodec     57. 64.101 / 57. 64.101
  7.   libavformat    57. 56.101 / 57. 56.101
  8.   libavdevice    57.  1.100 / 57.  1.100
  9.   libavfilter     6. 65.100 /  6. 65.100
  10.   libswscale      4.  2.100 /  4.  2.100
  11.   libswresample   2.  3.100 /  2.  3.100
  12. 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':
  13.   Metadata:
  14.     major_brand     : mp42
  15.     minor_version   : 0
  16.     compatible_brands: mp42mp41isomM4A
  17.     creation_time   : 2013-08-28T17:03:25.000000Z
  18.   Duration: 00:00:16.03, start: 0.000000, bitrate: 6703 kb/s
  19.     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)
  20.     Metadata:
  21.       creation_time   : 2013-08-28T17:03:25.000000Z
  22.       handler_name    : L-SMASH Video Media Handler
  23.       encoder         : AVC Coding
  24.     Stream #0:1(und): Audio: alac (alac / 0x63616C61), 48000 Hz, stereo, s16p, 788 kb/s (default)
  25.     Metadata:
  26.       creation_time   : 2013-08-28T17:03:25.000000Z
  27.       handler_name    : 2ch
  28.     Stream #0:2(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
  29.     Metadata:
  30.       creation_time   : 2013-08-28T17:03:25.000000Z
  31.       handler_name    : 5.1ch
  32.     Side data:
  33.       audio service type: main
  34. <font color="#ffa500">At least one output file must be specified</font>
复制代码
使用旧版本 ffmpeg-3.2.8 测试与最新版本测试报错一致
  1. 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
  2. ffmpeg version 3.2.8 Copyright (c) 2000-2017 the FFmpeg developers
  3.   built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  4.   configuration: --prefix=/home/li/project/ffmpeg-3.2.8/src
  5.   libavutil      55. 34.101 / 55. 34.101
  6.   libavcodec     57. 64.101 / 57. 64.101
  7.   libavformat    57. 56.101 / 57. 56.101
  8.   libavdevice    57.  1.100 / 57.  1.100
  9.   libavfilter     6. 65.100 /  6. 65.100
  10.   libswscale      4.  2.100 /  4.  2.100
  11.   libswresample   2.  3.100 /  2.  3.100
  12. [h264 @ 0x561591bb5ce0]<font color="#ff0000"> top block unavailable for requested intra mode -1</font>
  13. [h264 @ 0x561591bb5ce0] <font color="#ff0000">error while decoding MB 6 0, bytestream 49221</font>
  14. [h264 @ 0x561591bb5ce0] concealing 6120 DC, 6120 AC, 6120 MV errors in I frame
  15. 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':
  16.   Metadata:
  17.     major_brand     : mp42
  18.     minor_version   : 0
  19.     compatible_brands: mp42mp41isomM4A
  20.     creation_time   : 2013-08-28T17:03:25.000000Z
  21.   Duration: 00:00:16.03, start: 0.000000, bitrate: 6703 kb/s
  22.     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)
  23.     Metadata:
  24.       creation_time   : 2013-08-28T17:03:25.000000Z
  25.       handler_name    : L-SMASH Video Media Handler
  26.       encoder         : AVC Coding
  27.     Stream #0:1(und): Audio: alac (alac / 0x63616C61), 48000 Hz, stereo, s16p, 788 kb/s (default)
  28.     Metadata:
  29.       creation_time   : 2013-08-28T17:03:25.000000Z
  30.       handler_name    : 2ch
  31.     Stream #0:2(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
  32.     Metadata:
  33.       creation_time   : 2013-08-28T17:03:25.000000Z
  34.       handler_name    : 5.1ch
  35.     Side data:
  36.       audio service type: main
  37. <font color="#ffa500">At least one output file must be specified</font>
复制代码
对比 ffmpeg-3.2.6 ffmpeg-3.2.8 版本差异,最后试出为 [color=var(--color-accent-fg)]libavcodec/[color=var(--color-fg-default)]h264_cabac.c [color=var(--color-fg-default)]原因
[color=var(--color-fg-default)](此处由于ffmpeg-3.2.7与最新版的报错不一致并未加入对比[color=var(--color-fg-default)]
对比关键代码 ( github地址 )
Snipaste_2022-04-21_10-59-50.png
Snipaste_2022-04-21_11-00-10.png
将3.2.6版本的 h264_cabac.c 替换到最新版中,重新编译安装,播放恢复正常
Screenshot_20220421-110744_mpv.jpg

—————————————————————————————————————————————————————————————————
在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版本播放该视频不会花,可以正常观看


回复

使用道具 举报

3

主题

406

回帖

42

VC币

至尊会员

Rank: 16Rank: 16Rank: 16Rank: 16

积分
205625

活跃达人

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.


回复

使用道具 举报

5

主题

492

回帖

215

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
368961
苏辰汐 发表于 2022-4-21 15:25:52 | 显示全部楼层
顺便mpc-hc有一直在维护的社区版本:https://github.com/clsid2/mpc-hc
回复

使用道具 举报

12

主题

162

回帖

1011

VC币

至尊会员

猫娘

Rank: 16Rank: 16Rank: 16Rank: 16

积分
207653
zzy2000129 发表于 2022-4-21 15:49:32 | 显示全部楼层
记得这个是AVC中间更新过一次规范导致的,解决方案是解码器换成ffdshow或者lavfilters 0.67(需要折腾一下共存),常见于日职一些阴间Hi444pp
似了
回复

使用道具 举报

1

主题

1

回帖

0

VC币

中级会员

Rank: 3Rank: 3

积分
3053
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加入这个参数后可以正常播放,感谢大佬分享
  1. --vd-lavc-assume-old-x264=yes
复制代码
Screenshot_20220421-164244_mpv.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表