从mp4中提取字幕

vec*_*tor 5 mp4 video-processing subtitle

我得到了从mp4文件中检索字幕的任务

https://www.facebook.com/photo.php?v=161795267334572

我想知道如何做到这一点,通过java或c ++,它是否依赖于mp4编码格式和

我想知道不同视频格式的基本概念和视频处理的基本概念.

ale*_*son 11

有几种字幕格式,SRT,STL(主要由Apple使用)等......而ffmpeg支持很多格式http://ffmpeg.org/general.html#Subtitle-Formats

和ffmpeg可以使用cmd行从以下命令序列中提取它们:

1)执行轨道识别

ffmpeg -i yourFile
Run Code Online (Sandbox Code Playgroud)

2)用字母提取字幕轨道

ffmpeg -i yourFile -vn -an -codec:s:X.Y srt 
sub.srt
Run Code Online (Sandbox Code Playgroud)

使用XY从cmd(1)找到的轨道编号指示器.


Ton*_*y M 8

这里的其他答案都不适用于m.m4v包含多个字幕的我。但以下确实有效(同时适用于 .m4v 和 .mp4 文件):

ffmpeg -i m.m4v -map 0:s:0 eng.srt
ffmpeg -i m.m4v -map 0:s:1 ita.srt
ffmpeg -i m.m4v -map 0:s:2 fre.srt
Run Code Online (Sandbox Code Playgroud)

m.m4v有 3 个字幕流,第一个是英语,第二个是意大利语,第三个是法语。它似乎是用于 ffmpeg 命令的顺序,而不是使用X.Y它获得的(input.stream) 值ffmpeg -i m.m4v

这对于我m.m4v给了:

Stream #0:2(eng): Subtitle: mov_text (tx3g / 0x67337874), 0 kb/s (default)
Metadata:
  handler_name    : SubtitleHandler
Stream #0:3(ita): Subtitle: mov_text (tx3g / 0x67337874), 0 kb/s
Metadata:
  handler_name    : SubtitleHandler
Stream #0:4(fre): Subtitle: mov_text (tx3g / 0x67337874), 0 kb/s
Metadata:
  handler_name    : SubtitleHandler
Run Code Online (Sandbox Code Playgroud)

我在 Macbook Pro 2015 上使用 Mac OS 10.4.5

顺便说一句,如果只有一个字幕轨道,那么您可以使用:

ffmpeg -i m.m4v -map 0:s:0 sub.srt
Run Code Online (Sandbox Code Playgroud)