使用ffmpeg提取视频流

时间:2016-06-27 09:07:00

标签: video ffmpeg hevc

我尝试从bbb-1920x1080-cfg02.mkv

中提取视频流

命令如下。

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格式。

有人可以教我如何解决这个问题吗?

由于

2 个答案:

答案 0 :(得分:5)

您必须使用比特流过滤器。好像FFmpeg没有编写正确的编解码器标签。

ffmpeg -i bbb-1920x1080-cfg02.mkv -map 0:0 -c copy -vbsf hevc_mp4toannexb bbb.mkv

答案 1 :(得分:0)

我尝试了Gyan的ffmpeg解决方案,但对我而言不起作用。我还必须指定格式。这是我为获得H.265比特流所做的工作。另外,我确实看到有人建议将输出文件扩展名设置为.bin,但我喜欢h264 / h265,因为它可以更清楚地显示文件包含哪种比特流。

附件B的H.265

array = ['a', 'b', 'c']
for i in array:
  print(i, end='')

附件B的H.264

ffmpeg -i test.mkv -c:v copy -bsf hevc_mp4toannexb -f hevc test.h265

注意:这也适用于.mov文件以及其他格式。