在流中找不到编解码器子流的标签,容器中当前不支持编解码器

时间:2019-03-02 16:20:23

标签: ffmpeg

我正在尝试使用以下命令将视频转换为较低的质量:

  

ffmpeg -i in.mkv -c:a copy -map 0:5 -map 0:6 -map 0:7 -c:s copy -map 0:9 -c:v h264_nvenc -rc constqp -qp 23 -map 0:0 out.mp4

流0:9为字幕。我得到

Stream mapping:
  Stream #0:5 -> #0:0 (copy)
  Stream #0:6 -> #0:1 (copy)
  Stream #0:7 -> #0:2 (copy)
  Stream #0:9 -> #0:3 (copy)
  Stream #0:0 -> #0:4 (h264 (native) -> h264 (h264_nvenc))
Press [q] to stop, [?] for help
[mp4 @ 0x55c6edd3a640] track 0: codec frame size is not set
[mp4 @ 0x55c6edd3a640] track 1: codec frame size is not set
[mp4 @ 0x55c6edd3a640] track 2: codec frame size is not set
[mp4 @ 0x55c6edd3a640] Could not find tag for codec subrip in stream #3, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:4 -- 

如果我将-c:s copy更改为-c:s mov_text,该错误消失了,但是字幕不起作用。其他一切似乎都很好。

1 个答案:

答案 0 :(得分:0)

您正在输出MP4,但它仅支持5.2.2(流文本格式[14496-17]的通用名称)软字幕。但是,播放器支持并不普遍。

使用更好的播放器(VLC,mpv,Pot Player),使用其他输出容器格式(例如MKV)或使用hardsubs(请参阅subtitles文件管理器)。