返回列表 发帖

[其他] BAT脚本如何批量压缩芒果视频mtv格式为mp4?

网友给了这段,但运行不了,win10系统,不知怎样修改下,谢了。
@echo off
cd /d "%~dp0"
for /f "delims=" %%a in ('dir /b /a-d *.mp4') do (
    ffmpeg -i %%a -vcodec  h264_videotoolbox -b:v 330k -acodec copy /%%~na_output.mp4
)COPY

回复 1# tmp05

根据有关文档说明(https://trac.ffmpeg.org/wiki/HWAccelIntro):h264_videotoolbox 编码选项仅在 macOS/iOS 系统可行...

TOP

回复 2# aloha20200628
那这个怎么修改,mtv源文件480p的大概140m,要求压缩为差不多大小的mp4拷贝到优盘插到tv上播放

TOP

本帖最后由 aloha20200628 于 2025-2-22 14:31 编辑

回复 3# tmp05

用以下两行代码先试一个样本文件对比一下效果...
ffmpeg -i 1.mtv -fs 14000000 1.mp4COPY
或更简单
ffmpeg -i 1.mtv 1.mp4COPY

TOP

回复 4# aloha20200628

按照这个语句ffmpeg -i 1.mtv 1.mp4
转换出来的体积大了很多,mtv的123M,mp4的234M.不知是否可以加上参数优化一下

TOP

本帖最后由 aloha20200628 于 2025-2-23 10:38 编辑

回复 5# tmp05

要看一下 1.mtv 和 1.mp4 的有关参数,可用以下代码提取,请将其屏显结果贴上来,以便诊断优化...
ffmpeg -i 1.mtv 2<&1|findstr /i "kb duration: stream bps"
ffmpeg -i 1.mp4 2<&1|findstr /i "kb duration: stream bps"COPY

TOP

本帖最后由 tmp05 于 2025-2-23 11:09 编辑

回复 6# aloha20200628

这是mtv的


这是mp4的

TOP

试试https://zhidao.baidu.com/question/622933365212802732.html
bat小白,请多指教!谢谢!

TOP

本帖最后由 aloha20200628 于 2025-2-23 11:21 编辑

回复 7# tmp05

贴哪去了 ...

手头没有 *.mtv 视频,所以要看你的 *.mtv 参数,不过用ds查询结果是说其视频数据用mp4/h264编码,如属实便可直接更改扩展名为 *.mp4 即可一试 ...

TOP

看看支不支持mkv , 试试封装成mkv
ffmpeg -i 1.mtv -codec copy 1.mkvCOPY
mp4容器的话可能不一定支持原来的格式
不支持的话封装成mp4可能会转码 , 转码体积可能会变大(特别是265转264) , 想要体积差不多得牺牲画质或音质
支持的话虽然可以无损转换成mp4 , 但是播放器有可能不支持
总之可以试试
ffmpeg -i 1.mtv -vcodec copy -acodec copy 1.mp4COPY

TOP

回复  tmp05

贴哪去了 ...

手头没有 *.mtv 视频,所以要看你的 *.mtv 参数,不过用ds查询结果 ...
aloha20200628 发表于 2025-2-23 11:11

直接改扩展名没用的。上传了一个样例mtv文件到度盘,方便的话帮测下,谢谢!链接: https://pan.baidu.com/s/1mn3KrGe1LJYwyhGIZwJbbA 提取码: pbcw

TOP

回复 11# tmp05

网盘提供的样本视频是x265编码,如果楼主的电视机可以直接播放x265编码的*.mp4文件,就省事多了,用以下代码即可完成批量转码...
@echo off &for %%F in (*.mtv) do ffmpeg -i "%%F" -c:v copy -c:a copy -y "%%~nF.mp4"
pause&exit/bCOPY
如果电视机不能直接播放x265编码的*.mp4文件,则须用以下代码完成批量转码,虽然转换结果文件*.mp4的尺寸与源文件相当,但视频质量会略有下降,且转码过程须耗时较长...
@echo off &for %%F in (*.mtv) do for /f "tokens=2 delims=]" %%a in ('ffmpeg -i "%%F" 2^>^&1^|find /i "stream #0:0"') do for /f "delims=, " %%x in ("%%a") do ffmpeg -i "%%F" -c:v libx264 -b:v %%xk -c:a copy -y "%%~nF.mp4"
pause&exit/bCOPY

TOP

本帖最后由 aloha20200628 于 2025-2-23 23:20 编辑

回复 11# tmp05

如果楼主电脑提供显卡(如 nvidia/amd/intel)加速编解码能力,可试用以下代码(自动检测显卡类型且首选n卡其次a卡最后i卡)以便显著提高批量转码速度...
@echo off &setlocal &set "e=libx264"
for /f "tokens=2 delims=(= " %%a in ('wmic path Win32_VideoController get name /value^|find "="') do set "_%%a=1"
if defined _nvidia (set "e=h264_nvenc") else if defined _amd (set "e=h264_amf") else if defined _intel (set "e=h264_qsv")
for %%F in (*.mtv) do for /f "tokens=2 delims=]" %%a in ('ffmpeg -i "%%F" 2^>^&1^|find /i "stream #0:0"') do for /f "delims=, " %%x in ("%%a") do ffmpeg -i "%%F" -c:v %e% -b:v %%xk -c:a copy -y "%%~nF.mp4"
pause&exit/bCOPY
2

评分人数

    • tmp05: 非常感谢!技术 + 1
    • czjt1234: 乐于助人,技术高超技术 + 1

TOP

本帖最后由 tmp05 于 2025-2-25 17:00 编辑
回复  tmp05

网盘提供的样本视频是x265编码,如果楼主的电视机可以直接播放x265编码的*.mp4文件,就省事 ...
aloha20200628 发表于 2025-2-23 22:34



问题完美解决,感谢!虽然速度慢了点,但第二种转换出来的文件可以到旧式TV上播放。此前是用handbrake very fast 480p30模式转换的,速度快但文件体积比源文件大了许多
另外,qlv、qsv、kux是否也可以同理操作?

TOP

学习学习,感谢楼上几位大佬的分享!

TOP

返回列表