FFMpeg创建脚本来转换文件夹[重复]
Posted
技术标签:
【中文标题】FFMpeg创建脚本来转换文件夹[重复]【英文标题】:FFMpeg creating script to convert folder [duplicate] 【发布时间】:2018-04-19 07:20:26 【问题描述】:我有一个将mov
文件转换为mp4
的基本命令;我希望能够将视频文件夹从mov
转换为mp4
。我希望它从.mov
文件中获取文件名,并将其用作.mp4
的文件名。我该怎么做?
ffmpeg -i video1.mov -r 60 -c:v libx264 -b:v 70000k -c:a aac -b:a 192k -movflags faststart video2.mp4
Windows 10
【问题讨论】:
您使用的是什么操作系统? 查看上面链接中 lxs 的回答。 嗨,我阅读了该线程,但不确定是否应该将此命令作为 .bat 文件运行。这是我从那个线程改编的。我该如何运行?命令提示符?我在 Windows 10 上。FOR /F "tokens=*" %G IN ('dir /b *.mov') DO ffmpeg -i "%G" -map_metadata -1 -c:v libx264 -b:v 70000k -c:a aac -b:a 192k -movflags faststart "%~nG .mp4"
好的,所以我从 cmd 提示符运行了该命令,它可以工作。但是,我想要一个指定源文件夹的命令,我试过:FOR /F "tokens=*" %G IN ('dir 60fps /b *.mov') DO ffmpeg -i "%G" -r 60 -map_metadata -1 -c:v libx264 -b:v copy -c:a aac -b:a copy -movflags faststart "%~nG .mp4"
,但它不起作用。
作为答案的第一条评论,您需要“将 %
符号加倍 => %%
”以便在 .bat 文件中使用。我建议对有关源文件夹的答案发表评论,因为我不使用 Windows。
【参考方案1】:
我可能是错的,但我不认为 ffmpeg 可以自己做到这一点。但是,使用几种流行的脚本语言是微不足道的,例如php:
<?php
declare(strict_types = 1);
if ($argc !== 2)
fprintf ( STDERR, "usage: %s dir\n", $argv [0] );
die ( 1 );
$dir = rtrim ( $argv [1], DIRECTORY_SEPARATOR );
if (! is_readable ( $dir ))
die ( "supplied path is not readable! (try running as an administrator?)" );
if (! is_dir ( $dir ))
die ( "supplied path is not a directory!" );
$files = glob ( $dir . DIRECTORY_SEPARATOR . '*.mov' );
foreach ( $files as $file )
system ( "ffmpeg -i " . escapeshellarg ( $file ) . ' ' . escapeshellarg ( $file . '.mp4' ) );
【讨论】:
还有其他方法可以从 Windows 运行吗? @JK81 是的,在 Windows 中你可以使用 batch scripting 或 Powershell scripting ,但是我已经很多年没有做过批处理脚本了,我也不知道其他人有,而且我很多更喜欢 php 脚本而不是批处理脚本,我已经广泛使用了这两种脚本。不过,我从来没有学过 powershell 脚本。 还有,php is fully windows compatible以上是关于FFMpeg创建脚本来转换文件夹[重复]的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Windows 的 FFMPEG 批量转换 [重复]
使用ffmpeg将文件夹中的所有mp4音频文件转换为mp3 [重复]