首页 > 解决方案 > 在流中找不到编解码器 subrip 的标记,容器中当前不支持编解码器

问题描述

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

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,则错误消失,但字幕不起作用。其他一切似乎都很好。

标签: ffmpeg

解决方案


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

使用更好的播放器(VLC、mpv、Pot Player),使用不同的输出容器格式(例如 MKV),或使用硬字幕(参见字幕文件管理器)。


推荐阅读