我有一个嵌入了一些流的mkv文件:
Stream #0:0: Video: h264 (High), yuv420p(tv, smpte170m/smpte170m/bt709), 720x300, SAR 1:1 DAR 12:5, 25 fps, 25 tbr, 48003.07 tbn, 50 tbc (default)
Stream #0:1(tr): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s (default)
Stream #0:2(fr): Subtitle: dvd_subtitle, 720x300
Run Code Online (Sandbox Code Playgroud)
在我的电脑上播放时,我可以看到字幕.从我的旧DVD/DIVX播放器播放时,我看不到字幕(其他mkv/avi工作正常).
所以我想改变字幕编码,看看是否有另一个可以用于我的DVD播放器.
ffmpeg -encoders报道:
S..... ssa ASS (Advanced SubStation Alpha) subtitle (codec ass)
S..... ass ASS (Advanced SubStation Alpha) subtitle
S..... dvbsub DVB subtitles (codec dvb_subtitle)
S..... dvdsub DVD subtitles (codec dvd_subtitle)
S..... mov_text 3GPP Timed Text subtitle
S..... srt SubRip subtitle (codec subrip)
S..... subrip SubRip subtitle
S..... text Raw text subtitle
S..... webvtt WebVTT subtitle
S..... xsub DivX subtitles (XSUB)
Run Code Online (Sandbox Code Playgroud)
所以我尝试过:
ffmpeg -i input.mkv -acodec copy -vcodec copy -scodec "codec" converted.mkv
Run Code Online (Sandbox Code Playgroud)
与各种版本的"编解码器".他们都不会工作(原来dvdsub
...... 除外):
xsub报告:
[matroska @ 0x24558c0] Subtitle codec 94211 is not supported.
av_interleaved_write_frame(): Function not implemented
[matroska @ 0x24558c0] Subtitle codec 94211 is not supported.
Error writing trailer of mustang_converted.mkv: Function not implementedframe= 244 fps=0.0 q=-1.0 Lsize= 1kB time=00:00:10.01 bitrate= 1.0kbits/s speed=1.23e+03x
video:321kB audio:235kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Conversion failed!
Run Code Online (Sandbox Code Playgroud)
ssa或ass报告:
[ssa @ 0x262e000] Only SUBTITLE_ASS type supported.
Subtitle encoding failed
Run Code Online (Sandbox Code Playgroud)
其他报道:
Error while opening encoder for output stream #0:2 - maybe incorrect parameters such as bit_rate, rate, width or height
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?某些字幕编解码器是否与当前的视频或音频编解码器不兼容?我应该改变那些而不是复制吗?
或者,是否可以选择合并视频图像流中的字幕(然后只有两个输出流:音频和视频,但保留字幕显示)?
注意:如果在Linux(mint)下工作,使用除ffmpeg之外的其他工具的答案是可以接受的.
Gya*_*yan 10
您的字幕是基于图像的,需要转换为基于文本的格式,如SRT.使用Subtitle Edit或类似工具从MKV导入潜艇.这将对子进行OCR处理.完成后,另存为SRT或任何常见的基于文本的字幕格式.
然后使用您选择的scodec运行您的ffmpeg命令.
或者,如果要刻录字幕,可以尝试使用其中一种方法
ffmpeg -i input.mkv -vf subtitles=input.mkv -acodec copy -sn converted.mkv
Run Code Online (Sandbox Code Playgroud)
要么
ffmpeg -i input.mkv -filter_complex "[0:v:0][0:2]overlay" -acodec copy -sn converted.mkv
Run Code Online (Sandbox Code Playgroud)