使用ffmpeg提取视频流
Using the ffmpeg to extract video stream
中提取视频流
命令如下
ffmpeg -i bbb-1920x1080-cfg02.mkv -map 0:0 -c copy bbb.mkv
但是输出文件不能用播放器(potplayer)播放
我用ffmpeg -i bbb.mkv查了一下资料,有很多
错误信息。
ffmpeg version N-80680-ga887fbb Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
configuration: --enable-vaapi --disable-vda --disable-vdpau --disable-libxcb --disable-ffplay --disable-ffserver --disable-ffprobe --disable-indev=jack --disable-outdev=sdl --enable-libx264 --enable-libx265 --enable-gpl --disable-libxcb --disable-libxcb-shm --disable-libxcb-xfixes --disable-libxcb-shape --disable-x11grab
libavutil 55. 26.100 / 55. 26.100
libavcodec 57. 46.100 / 57. 46.100
libavformat 57. 40.101 / 57. 40.101
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 46.102 / 6. 46.102
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
[hevc @ 0x3a64a60] No start code is found.
[hevc @ 0x3a64a60] Error splitting the input into NAL units.
[hevc @ 0x3a64a60] No start code is found.
即使我只是复制源文件。
ffmpeg -i bbb-1920x1080-cfg02.mkv -map 0 -c copy bbb.mkv
输出文件(bbb.mkv)仍然无法用播放器(potplayer)播放
它仍然有“[hevc @ 0x3a64a60] 找不到起始代码”错误。
正如document所说,它不会做任何事情,只是封装matroska格式。
谁能教我怎么解决这个问题?
谢谢
您将不得不使用比特流过滤器。好像 FFmpeg 没有它就不会编写正确的编解码器标签。
ffmpeg -i bbb-1920x1080-cfg02.mkv -map 0:0 -c copy -vbsf hevc_mp4toannexb bbb.mkv
我尝试了 Gyan 的 ffmpeg 解决方案,但它对我不起作用。我还必须指定格式。这是我为获得 H.265 比特流所做的工作。另外,我确实看到有人建议将输出文件扩展名设置为 .bin,但我喜欢 h264/h265,因为它可以更清楚地表明文件包含哪种比特流。
H.265 附件 B
ffmpeg -i test.mkv -c:v copy -bsf hevc_mp4toannexb -f hevc test.h265
H.264 附件 B
ffmpeg -i test.mkv -c:v copy -bsf h264_mp4toannexb -f h264 test.h264
注意:这也适用于 .mov 文件,可能也适用于其他格式。
命令如下
ffmpeg -i bbb-1920x1080-cfg02.mkv -map 0:0 -c copy bbb.mkv
但是输出文件不能用播放器(potplayer)播放
我用ffmpeg -i bbb.mkv查了一下资料,有很多 错误信息。
ffmpeg version N-80680-ga887fbb Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
configuration: --enable-vaapi --disable-vda --disable-vdpau --disable-libxcb --disable-ffplay --disable-ffserver --disable-ffprobe --disable-indev=jack --disable-outdev=sdl --enable-libx264 --enable-libx265 --enable-gpl --disable-libxcb --disable-libxcb-shm --disable-libxcb-xfixes --disable-libxcb-shape --disable-x11grab
libavutil 55. 26.100 / 55. 26.100
libavcodec 57. 46.100 / 57. 46.100
libavformat 57. 40.101 / 57. 40.101
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 46.102 / 6. 46.102
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
[hevc @ 0x3a64a60] No start code is found.
[hevc @ 0x3a64a60] Error splitting the input into NAL units.
[hevc @ 0x3a64a60] No start code is found.
即使我只是复制源文件。
ffmpeg -i bbb-1920x1080-cfg02.mkv -map 0 -c copy bbb.mkv
输出文件(bbb.mkv)仍然无法用播放器(potplayer)播放 它仍然有“[hevc @ 0x3a64a60] 找不到起始代码”错误。
正如document所说,它不会做任何事情,只是封装matroska格式。
谁能教我怎么解决这个问题?
谢谢
您将不得不使用比特流过滤器。好像 FFmpeg 没有它就不会编写正确的编解码器标签。
ffmpeg -i bbb-1920x1080-cfg02.mkv -map 0:0 -c copy -vbsf hevc_mp4toannexb bbb.mkv
我尝试了 Gyan 的 ffmpeg 解决方案,但它对我不起作用。我还必须指定格式。这是我为获得 H.265 比特流所做的工作。另外,我确实看到有人建议将输出文件扩展名设置为 .bin,但我喜欢 h264/h265,因为它可以更清楚地表明文件包含哪种比特流。
H.265 附件 B
ffmpeg -i test.mkv -c:v copy -bsf hevc_mp4toannexb -f hevc test.h265
H.264 附件 B
ffmpeg -i test.mkv -c:v copy -bsf h264_mp4toannexb -f h264 test.h264
注意:这也适用于 .mov 文件,可能也适用于其他格式。