我正在尝试编写批处理脚本,该脚本首先从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”。我的最终目标是让此脚本递归地循环播放一个充满视频的文件夹,以对所有视频进行编码...
已解决: