Max*_*lle 11 ffmpeg extract subtitle srt
我检查了FFMpeg文档和许多论坛,并找出正确的命令行来从.MP4视频中提取字幕应如下所示:
ffmpeg -i video.mp4 -vn -an -codec:s:0 srt out.srt
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误,这让我怀疑这是否可行:
打开输出流#0的编码器时出错:0 - 可能是不正确的参数,如bit_rate,rate,width或height
使用ffmpeg -codecs
,我可以确认ffmpeg应该能够编码subrip字幕.
使用ffmpeg -i video.mp4
,我可以看到视频中嵌入了两个字幕轨道:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
...
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 720x572 [SAR 64:45 DAR 256:143], 1341 kb/s, 25 fps, 25 tbr, 90k tbn, 180k tbc
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s
Stream #0:2(fra): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 191 kb/s
Stream #0:3(eng): Subtitle: dvd_subtitle (mp4s / 0x7334706D)
Stream #0:4(und): Subtitle: mov_text (text / 0x74786574)
Run Code Online (Sandbox Code Playgroud)
编辑
我已经使用注释中显示的简化命令行进行了测试,但我仍然得到相同的错误.以下是运行该命令的详细详细输出的链接.我还尝试完全禁用结果输出中的元数据和章节,但仍然会产生相同的错误.
Max*_*lle 22
我当然想通了为什么我没有成功:
如果来自源视频的字幕是在基于文本的表示中编码的,则指定的命令行将完全正常.但是,从输出到ffmpeg -i
命令行可以看出,字幕以"dvd_subtitle"格式编码.
dvd_subtitle格式存储视频中每个字幕的位图.因此,ffmpeg无法将位图转换为文本.
对于此任务,必须使用基于OCR的软件,该软件帮助用户将每个字幕识别为其位图重新呈现的文本.
(源视频中有一个辅助的基于文本的字幕,但我不知道它来自哪里,大多数流行的播放器都看不到.对于所有意图和目的,这个"mov_text"字幕似乎是一个存根占位符,可能是原版DVD转换的神器)
仅供参考(由于代表尚未发表评论),但从 MP4 中提取 SRT 将生成格式为 MOV_Text 的文件,而不是常规 SRT。它仍然会被添加并工作,但就像将 mp4 更改为 m4v 一样。虽然它通常可以工作,但代码中的工作方式并不相同。Mov_text 对于手动调整字体/大小等来说是可怕的。最好的选择是从网络下载并测试 SRT!
这可以工作,但会产生 mov_text 编码的 srt 文件:
ffmpeg -i in.mp4 out.srt
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22330 次 |
最近记录: |