Gen*_*neQ 9 unix macos shell video-processing transcoding
我想批量转换包含数百个FLV文件的目录,以便每个文件都具有MP4等效项.我正在尝试通过编写shell脚本并从终端运行它来自动执行此过程.我该怎么做呢?大多数可用的指令都是针对使用ffmpeg的Linux,但我认为OS X没有它.谢谢.
Mic*_*yan 16
您可以通过Homebrew或MacPorts安装ffmpeg .用Homebrew安装ffmpeg的修改是brew install ffmpeg; 同样,使用MacPorts安装ffmpeg的命令是sudo port install ffmpeg.一旦你安装了ffmpeg,这里有一个简单的(有点天真的)脚本来转换文件.您可能需要添加更多标志,具体取决于您所需的选项.
#! /bin/bash
function convert_all_to_mp4() {
for file in *.flv ; do
local bname=$(basename "$file" .flv)
local mp4name="$bname.mp4"
ffmpeg -i "$file" "$mp4name"
done
}
convert_all_to_mp4
Run Code Online (Sandbox Code Playgroud)
只需将上面脚本放在可执行文件中的任何文件(例如),并通过其完全限定的路径调用它,或者将包含它的目录添加到PATH环境中,并按照您提供的名称调用脚本.chmod a+x path/to/convert_all_to_mp4.sh
rwa*_*rvi 10
目标:使用Bash脚本将多个Adobe Flash Video(FLV)文件转换为MP4.
环境: MAC OS X 10.5.8,终端v.240.2,Bash v.3.2.17
语言: bash
说明: 此脚本将搜索指定位置中的所有FLV文件,遍历每个文件,将它们转换为等效的MP4视频,并将它们放在子目录MP4-yymmdd-HHMMSS中.在此过程中生成的日志文件放在此子目录中的日志目录中.
先决条件:
下载ffmpeg二进制文件并放在/usr/local/bin目录中.
我的代码基于Jan的blog77.com上的博客.有关详细信息,请参见"参考".
从"Bash脚本"部分下载我的bash脚本.
我的代码说明
ffmpeg -i [file].
用法:
convert-flv-to-mp4.sh [folder path]Run Code Online (Sandbox Code Playgroud)
例:
./convert-flv-to-mp4.sh /Users/Shared/MusicRun Code Online (Sandbox Code Playgroud)
输出:MP4-yymmdd-HHMMSS子目录
中的mp4文件
日志:
convert-flv-to-mp4.log.txt - 程序日志
ffmpeg-yyyymmdd -HHMMSS.log.txt - 每个文件转换的ffmpeg二进制日志
ffmpeg.log.txt - 编译所有上述ffmpeg日志
metadata.csv -每个视频文件的元数据
讨论:
在我的第一次尝试中,我无法使用-copyffmpeg选项使用FLV1视频流转换视频.相反,我需要使用以下ffmpeg选项:
-strict experimental -b:a 64k
这意味着转换不会因轻微错误而停止,并且它使用64k音频比特率转换.
使用该-copy选项只需重新输入视频,因此速度很快.否则,ffmpeg将对文件进行转码,这需要相当长的时间.此脚本将确定要使用的选项.
关键代码片段:
ls ${inputdir}/*.flv>$inputlist
for i in $(cat $inputlist); do
...
case $vtype in
flv1)
ffmpeg -report -v info -nostdin -fflags discardcorrupt -i $i -strict experimental -c:v mpeg4 -b:a 64k ${outputdir}/${basename}.mp4
h264)
ffmpeg -report -v verbose -nostdin -fflags discardcorrupt -i $i -vcodec copy -acodec copy ${outputdir}/${basename}.mp4
esac
...
done
Run Code Online (Sandbox Code Playgroud)
哪里:
inputlist - 包含所有FLV文件的文件
vtype - 输入文件的视频编解码器类型
i - 输入FLV文件名
示例日志文件:

元数据日志文件:

结论:
在从youtube下载的73个FLV文件上成功测试了一个完整的解决方案.转换34个文件和重新编写39个文件花了8分钟,平均大小为11MB.
Bash脚本:
convert-flv-to-mp4.sh
参考文献:
FFmpeg二进制
文件下载FFmpeg官方文档
如何在Mac上将.flv Flash视频转换为.mp4
可扩展性:
如果您有任何FLV文件的视频流不是FLV1或H264,例如VP6,FLV4,请添加带有视频文件链接的注释我将更新我的代码来处理它.
| 归档时间: |
|
| 查看次数: |
8278 次 |
| 最近记录: |