如何通过命令行或批处理脚本与ffmpeg转换整个目录/文件夹?
当前回答
我需要所有的视频使用相同的编解码器合并的目的 这个转换是mp4到mp4 它在ZSH中,但应该很容易转换为bash
for S (*.mp4) { ffmpeg -i $S -c:v libx264 -r 30 new$S }
其他回答
我在linux中使用这一行程序将文件(通常是H265)转换为我可以在Kodi上毫无问题地播放的东西:
for f in *.mkv; do ffmpeg -i "$f" -c:v libx264 -crf 28 -c:a aac -b:a 128k output.mkv; mv -f output.mkv "$f"; done
这将转换为临时文件,然后替换原始文件,以便转换后名称保持不变。
这里有点像代码高尔夫,但由于到目前为止几乎所有的答案都是bash(除了一个孤独的cmd),这里有一个使用powershell的windows跨平台命令(因为很棒):
ls *.avi|%{ ffmpeg -i $_ <ffmpeg options here> $_.name.replace($_.extension, ".mp4")}
你可以改变*。Avi到与源视频相匹配的地方。
一行bash脚本很容易完成——替换*。Avi与您的文件类型:
for i in *.avi; do ffmpeg -i "$i" -qscale 0 "$(basename "$i" .avi)".mov ; done
复制@HiDd3n,你也可以这样做,如果你想递归搜索文件目录,以防你有很多文件夹:
for /r %i in (*.webm) do "C:\Program Files\ffmpeg\bin\ffmpeg.exe" -i "%i" "%~ni.mp3"
我知道这可能是多余的,但我使用这个脚本批量转换文件。
old_extension=$1
new_extension=$2
for i in *."$old_extension";
do ffmpeg -i "$i" "${i%.*}.$new_extension";
done
它需要2个参数使其更灵活:
要转换的扩展名 要转换的新扩展名
我为它创建了一个别名,但你也可以手动使用它,像这样:
sh batch_convert.sh mkv mp4
这将把所有的mkv文件转换为mp4文件。
正如你所看到的,它更多功能。只要ffmpeg可以转换它,您就可以指定任何两个扩展。
推荐文章
- 使用ffmpeg添加文本字幕
- ffmpeg输出的含义(tbc, tbn, tbr)
- 最快的方法提取帧使用ffmpeg?
- 哪个HTTP状态代码表示“尚未准备好,稍后再试”?
- Android上的FFmpeg
- 实时http流到HTML5视频客户端的最佳方法
- 如何添加一个新的音频(不混合)到一个视频使用ffmpeg?
- ffmpeg、libav和avconv之间有什么不同和相似之处?
- Ffmpeg覆盖输出文件,如果存在
- 如何安装和运行phpize
- 使用ffmpeg将音频文件转换为mp3
- FFMPEG (libx264)高度不能被2整除
- 操作系统检测生成文件
- 如何创建一个视频从图像与FFmpeg?
- 如何用ffmpeg转换整个目录?