8

我接到了一项从 mp4 文件中检索字幕的任务

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

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

4

4 回答 4

12

有几种字幕格式,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

使用 XY 是您从 cmd (1) 中找到的曲目编号指示器。

于 2013-07-11T18:40:25.643 回答
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

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

我在 Macbook Pro 2015 上使用 Mac OS 10.4.5

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

ffmpeg -i m.m4v -map 0:s:0 sub.srt
于 2019-07-02T13:52:44.000 回答
3

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

只提取需要的曲目

于 2019-05-06T20:07:23.673 回答
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
于 2021-05-07T16:47:59.677 回答