从mp4中提取字幕

时间:2013-06-30 07:41:32

标签: mp4 video-processing subtitle

我得到了从mp4文件中检索字幕的作业

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

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

我想了解不同视频格式的基本概念和视频处理的基本概念。

4 个答案:

答案 0 :(得分:10)

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

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

1)执行曲目识别

ffmpeg -i yourFile

2)用

提取字幕轨道
ffmpeg -i yourFile -vn -an -codec:s:X.Y srt 
sub.srt

使用X.Y从cmd(1)找到的曲目编号指示符。

答案 1 :(得分:2)

这里的其他任何一个答案都不适用于包含多个字幕的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

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

我的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

我在Macbook Pro 2015上使用Mac OS 10.4.5

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

ffmpeg -i m.m4v -map 0:s:0 sub.srt

答案 2 :(得分:1)

  

ffmpeg -i yourFile -map X:Y srt sub.srt

仅提取所需的曲目

答案 3 :(得分:0)

将代码更新到 v5 版本。

工作还不错。

用法:

ffmpegSubExtract mp4 srt

ffmpegSubExtract mp4 srt 1

@echo off
cls

if "%1"=="" (
echo.
echo Usage:
echo ffmpegSubExtract mp4 srt
echo ffmpegSubExtract mp4 srt 1
goto :eof )

if "%2"=="" (
echo.
echo Usage:
echo ffmpegSubExtract mp4 srt
echo ffmpegSubExtract mp4 srt 1
goto :eof )

set fle=%1
set ext=%2
set str=%3

for %%i in ("*.%fle%") do (set fname=%%i) & call :rename
goto :eof

:rename
if exist "%fname:~0,-4%.%ext%" (
    del "%fname:~0,-4%.%ext%" )

if "%str%"=="" (
    set str=0 )


if "%ext%" == "srt" (
    ffmpeg -i "%fname%" -map 0:s:%str% "%fname:~0,-4%.%ext%"
) else (
    ffmpeg -i "%fname%" -c copy -map 0:s:%str% "%fname:~0,-4%.%ext%" 
)

goto :eof

rem come code from here
rem https://stackoverflow.com/questions/17388253/extracting-subtitles-from-mp4
rem https://superuser.com/questions/583393/how-to-extract-subtitle-from-video-using-ffmpeg