mac系统自动使用 ffmpeg 将flv下载的分段视频合并为mp4

mac系统自动使用 ffmpeg 将flv下载的分段视频合并为mp4

效果

下载的分段视频:

a1.jpg

合并后:

a2.jpg


  • 原理

使用ffmpeg转换flv到mp4

ffmpeg -i out.flv -vcodec copy -acodec copy out.mp4


使用ffmpeg合并MP4文件

ffmpeg -i "Apache Sqoop Tutorial Part 1.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
ffmpeg -i "Apache Sqoop Tutorial Part 2.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
ffmpeg -i "Apache Sqoop Tutorial Part 3.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate3.ts
ffmpeg -i "Apache Sqoop Tutorial Part 4.mp4" -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate4.ts
ffmpeg -i "concat:intermediate1.ts|intermediate2.ts|intermediate3.ts|intermediate4.ts" -c copy -bsf:a aac_adtstoasc "Apache Sqoop Tutorial.mp4"


然后写个脚本调用就行了,我是用 Automator 建了个服务


  • 工具

* Automator

* ffmpeg

未安装homebrew,需安装homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

ffmpeg安装

brew install ffmpeg



新建一个系统服务

使用 Automator 新建一个服务:文件➜新建➜服务,我这里命名为"flv合并为mp4"

a3.jpg

添加「过滤 Finder 项目」「给 Finder 项目排序」「运行 Shell 脚本」组件

a4.jpg

按图配置就行了,其中 Shell 脚本如下:

注: 脚本中包含 rm 方法,会将视频源文件和临时文件删除

for f in "$@"
do
concat_file+="${f%.*}.ts"\|
/usr/local/bin/ffmpeg -i "$f" -vcodec copy -acodec copy -c copy -bsf:v h264_mp4toannexb -f mpegts "${f%.*}.ts"
done
/usr/local/bin/ffmpeg -i "concat:${concat_file%|*}" -c copy -bsf:a aac_adtstoasc "${f%-*}.mp4"
for f in "$@"
do
rm "${f%.*}.flv"
rm "${f%.*}.ts"
done
exit 0


  • 使用方法

选中 所有 分段的视频,右键➜服务➜flv合并为mp4

a5.jpg


猜你喜欢