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

The*_*One 5 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 -- 
Run Code Online (Sandbox Code Playgroud)

如果我更改-c:s copy-c:s mov_text,则错误消失,但副标题不起作用。其他一切似乎都很好。

llo*_*gan 7

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

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