Windows-FFmpeg-如何将jpg文件映射到视频流0:0,并且仅包括音频流0:2,不包括流0:1和0:2在一起

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

我正在尝试编写批处理脚本,该脚本首先从mkv视频中提取缩略图“ Cover.jpg”。我的最终目标是让此脚本递归地循环播放一个充满视频的文件夹,以一次性对它们进行编码。

:: create cover art jpg
for %%G in (*.mkv) do (
%FF% -hide_banner -ss 30 -y -i "%%G" -vframes 1 -an Cover.jpg
)

然后,我尝试将JPG缩略图从4K的4K mkv视频编码为1920x1080分辨率,而不是原生4K,以使其更易于在家庭plex服务器上播放。]

我有环绕声6声道扬声器系统,所以我想获取杜比DTS 6声道的音频流0:2,并通过将其转换为-c:a ac3 -b:a 640k -ac 6来节省一些HDD空间。

我被困住了,因为我可以实现我想要的一切,除了我最终对4个音频流中的2个进行编码。我只想保留1个音频流,以最大程度地节省空间。

到目前为止是整个脚本。

@echo off
setlocal enabledelayedexpansion
prompt $g
color 0a

pushd "%~dp0"

set FF=C:\MAB\local64\bin-video\ffmpeg.exe
set TITLE=MOVIETITLE

:: create cover art jpg file
for %%G in (*.mkv) do (
%FF% -hide_banner -ss 30 -y -i "%%G" -vframes 1 -an Cover.jpg
)

:: run ffmpeg x265
for %%I in (*.mkv) do (
set fname="%%~nxI"
set fout="%%~nI-temp.mkv"
call :runff !fname! !fout!
del /s /q *.jpg
pause
goto:eof
)

:runff
%FF% -ss 0 ^
-y ^
-i "%~1" ^
-attach "Cover.jpg" ^
-map_metadata 0 ^
-map_chapters 0 ^
-metadata title="%TITLE%" ^
-map 0:0 -metadata:s:v:0 language=eng ^
-map 0:2 -metadata:s:a:0 language=eng -metadata:s:a:0 title="Surround 5.1 (DTS)" ^
-map 0:4 -metadata:s:s:0 language=eng -metadata:s:s:0 title="English" -metadata:s:t:0 filename="Cover.jpg" -metadata:s:t:0 mimetype="image/jpeg" ^
-c:v libx265 -preset medium ^
-x265-params crf=18:qcomp=0.8:aq-mode=1:aq_strength=1.0:qg-size=16:psy-rd=0.7:psy-rdoq=5.0:rdoq-level=1:merange=44 ^
-c:a ac3 -b:a 640k -ac 6 ^
-t 3 ^
"%~2"
exit /b

这里是输出日志。 https://pastebin.com/hVMy3VJW

您可以从底部看到它正在对两个音频流进行编码。

有创意吗?

我正在尝试编写批处理脚本,该脚本首先从mkv视频中提取缩略图“ Cover.jpg”。我的最终目标是让此脚本递归地循环播放一个充满视频的文件夹,以对所有视频进行编码...

windows batch-file encoding ffmpeg audio-streaming
1个回答
0
投票

已解决:

© www.soinside.com 2019 - 2024. All rights reserved.