video - 我无法使用 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 编码。
问题
有没有办法根据十六进制数据检测视频的编码格式,或者谁能告诉我下面的数据是哪种视频编码格式?
非常感谢!
解决方案
像这样试试
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
推荐阅读
- flutter - 配置 Flutter 进行 Web 开发时,“连接的设备”上不会出现“Web 服务器”
- flutter - 无法从 Firestore Flutter 中检索数据
- google-bigquery - 从 Google Ads 到 BigQuery 的转移服务问题
- dotcms - 谁能确定这段代码是什么语言?
- javascript - 在 HTML 中使用 js 文件作为 cdn
- python - 用不等式 astropy 混合建模约束参数
- android-studio - Android Studio 多平台项目的 commonMain 中的 ktor 依赖项在 IDE 中未解决,但代码运行
- flutter - 我正在寻找类似颤动的导航栏,如果你知道,请指导我
- python-venv - 使用整个 venv 复制文件夹后的 pip 列表
- html - 未显示所选选项(角度,html)