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将.h264批量转换为.avi [重复]

使用ffmpeg将文件夹中的所有mp4音频文件转换为mp3 [重复]

sh shell脚本使用ffmpeg将当前工作目录中的所有wav文件转换为mp3文件

ffmpeg:如何将 wav 作为音频输入来创建视频?

ffmpeg 如何转换其他格式的音频文件?