FFmpeg:如何将任何类型的字幕刻录成视频

问题描述 投票:0回答:1

作为标题,我想编辑hardsub一些包含字幕的mkv视频。这些潜艇可能是ASS,SRT或基于图片的。我已经阅读了FFmpeg文档和内容,但只有在知道sub的类型时才找到烧掉sub的方法。

我尝试使用mediainfo获取字幕信息:

mediainfo "--Output=Text;%Format%\r\n" input.mkv

输出是“ASS”与屁股,“文字”或“Subrip”或“UTF-8”与SRT ....但我发现很难继续前进,因为我可以得到很多种输出,这仍然是如此很难创建一个批处理文件来告诉ffmpeg自动检测到的子类,所以自动选择正确的过滤器。

有没有办法做到这一点?谢谢 !

batch-file video command-line ffmpeg video-processing
1个回答
1
投票

我不熟悉ffmpeg,所以这是我的猜测。

for /f %%G in ('mediainfo "--Output=Text;%Format%\r\n" input.mkv') do (
    set type=%%G
)

rem rename Text, Subrip and UTF-8 to SRT
if "%type%"=="Text"   set type=SRT
if "%type%"=="Subrip" set type=SRT
if "%type%"=="UTF-8"  set type=SRT

rem ffmpeg burn as %type%

说明:

  • 获取mediainfo的结果并将其设置为变量type
  • 如果type等于“Text”/“Subrip”/“UTF-8”,则将其设置为“SRT”
  • 刻录文件(我不知道命令)

注意:如果要循环遍历文件列表,则需要双循环,如下所示:

setlocal enableDelayedExpansion

for /f %%A in (*.mkv) do (
    for /f %%G in ('mediainfo "--Output=Text;%Format%\r\n" %%A') do (
        set type=%%G
    )

    if "!type!"=="Text"   set type=SRT
    if "!type!"=="Subrip" set type=SRT
    if "!type!"=="UTF-8"  set type=SRT

    rem ffmpeg burn as %type%
)
  • 循环遍历所有.mkv文件; 获取mediainfo的结果并将其设置为变量type 如果type等于“Text”/“Subrip”/“UTF-8”,则将其设置为“SRT” 刻录文件(我不知道命令)
© www.soinside.com 2019 - 2024. All rights reserved.