【发布时间】:2013-06-27 14:48:18
【问题描述】:
我接到了一个从 mp4 文件中检索字幕的任务
我想知道如何做到这一点,通过 java 或 c++,它是否取决于 mp4 编码格式和
我想了解不同视频格式的基本概念和视频处理的基本概念。
【问题讨论】:
-
找到了mp4解析器,但找不到操作字幕的确切API
标签: mp4 video-processing subtitle
我接到了一个从 mp4 文件中检索字幕的任务
我想知道如何做到这一点,通过 java 或 c++,它是否取决于 mp4 编码格式和
我想了解不同视频格式的基本概念和视频处理的基本概念。
【问题讨论】:
标签: mp4 video-processing subtitle
有好几种字幕格式,SRT、STL(主要是苹果用的)等等……而且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) 中找到的曲目编号指示符。
【讨论】:
对于包含多个字幕的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 命令的顺序,而不是使用 ffmpeg -i m.m4v 获得的 X.Y (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
【讨论】:
ffmpeg -i yourFile -map X:Y srt sub.srt
只提取需要的曲目
【讨论】:
将代码更新到 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
【讨论】: