首页 > 解决方案 > 我无法使用 ffplay 播放 HEVC 编码的 Flv 格式视频文件

问题描述

我无法解码视频文件

我有一个 FLV 格式的视频文件。有人告诉我这个视频的编码格式是HEVC,所以我尝试用ffplay播放这个视频。但是我发现原生ffplay无法播放flv格式的HEVC编码文件,于是我找了相关资料解码FLV格式的HEVC编码文件,但是这个文件还是不能播放。

以下是报错信息,内容是NAL部分分析失败

[hevc @ 0x7fba4800fc00] Invalid NAL unit size in extradata.
[flv @ 0x7fba4800f000] Could not find codec parameters for stream 0 (Video: hevc, none, 5494 kb/s): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options

我尝试用ffplay播放其他FLV格式的HEVC编码视频,结果没有问题。所以我用十六进制编辑器查看无法正常播放的文件。下面是第一帧视频的数据。

000003a0: xx xx xx xx xx xx xx 09 00 00 4E 00 00 00 00 00    ..........N.....
000003b0: 00 00 1E 00 00 00 00 01 00 00 00 FF E2 00 17 40    ............b..@
000003c0: 01 0C 01 FF FF 01 00 01 00 00 B0 00 00 03 00 00    ..........0.....
000003d0: 03 00 96 1D 94 09 00 1E 42 01 01 01 00 01 00 00    ........B.......
000003e0: B0 00 00 03 00 00 03 00 96 A0 01 E0 20 02 1C 5A    0..........`...Z
000003f0: 1D 96 49 0A 40 A2 01 00 07 44 01 C0 13 18 21 20    ..I.@"...D.@..!.

我们可以看到09代表视频类型,4E代表TAG数据的长度,1C代表HEVC的关键帧,但是我无法判断后面的数据是不是HEVC编码的数据,所以我怀疑后面的数据可能不被 HEVC 编码。

问题

有没有办法根据十六进制数据检测视频的编码格式,或者谁能告诉我下面的数据是哪种视频编码格式?

非常感谢!

标签: videoffmpeghevc

解决方案


像这样试试

sudo apt-get update -qq && sudo apt-get -y install autoconf automake   build-essential cmake git-core libass-dev libfreetype6-dev libgnutls28-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev meson ninja-build pkg-config texinfo wget yasm zlib1g-dev libx265-dev

git clone https://github.com/ksvc/FFmpeg.git
git reset --hard origin/release/3.4

./configure --enable-static --enable-pic --disable-encoders --enable-encoder=aac --enable-encoder=libx264 --enable-gpl --enable-libx264 --enable-encoder=libx265  --enable-libx265 --disable-decoders --enable-decoder=aac --enable-decoder=h264 --enable-decoder=hevc --disable-demuxers --enable-demuxer=aac --enable-demuxer=mov --enable-demuxer=mpegts --enable-demuxer=flv --enable-demuxer=h264 --enable-demuxer=hevc --enable-demuxer=hls --disable-muxers --enable-muxer=h264 --enable-muxer=flv --enable-muxer=f4v  --enable-muxer=mp4 --disable-doc

make -j8

./ffplay video.flv

推荐阅读