gpt4 book ai didi

ffmpeg - 有没有办法 -map 0 :m:language:eng if it exists, 否则使用默认值?

转载 作者:行者123 更新时间:2023-12-04 22:50:49 24 4
gpt4 key购买 nike

如果源具有' 英文 ' 作为音轨,使用它,否则使用默认或音轨零?

这可能吗?

我努力了:

 -map 0:m:language:eng? -map 0:a:0?

但这最终总是使用默认的。

最佳答案

好问题。我不认为 ffmpeg 有这个功能,所以我最终写了一个 .bat 脚本来模仿它。该脚本使用 ffprobe探测媒体文件。对于每个流,如果设置了语言属性并且该语言!=“eng”,则省略它。否则,映射所有没有语言的流 + 那些使用“eng”语言的流,并复制到 basename-fixed.ext。

它可能比它应该的更复杂,但你可能会发现它很有用。 *耸耸肩*

@echo off

for %%I in (*.mkv *.mp4) do (
setlocal
for /f "delims=" %%x in (
'ffprobe -v quiet -show_entries "stream=codec_name:stream_tags=language" -of flat "%%~I"'
) do set "%%~x"
for /f "tokens=1* delims==" %%a in ('set streams') do (
echo(%%a | find /i "language" >NUL && if /i not "%%~b"=="eng" (
for /f "tokens=1-3 delims=." %%p in ("%%a") do (
for /f "tokens=1 delims==" %%s in ('set %%p.%%q.%%r') do set "%%~s="
)
)
)

setlocal enabledelayedexpansion
for /f "tokens=3 delims=." %%x in ('set streams ^| find "codec_name"') do (
if not defined map (
set "map=-map 0:%%x"
) else set "map=!map! -map 0:%%x"
)
echo ffmpeg -i "%%~I" !map! -c:v copy -c:a copy -c:s copy "%%~nI-fixed%%~xI"
ffmpeg -i "%%~I" !map! -c:v copy -c:a copy -c:s copy "%%~nI-fixed%%~xI"
endlocal
endlocal
)

关于ffmpeg - 有没有办法 -map 0 :m:language:eng if it exists, 否则使用默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36514127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com