mac系统自动使用 ffmpeg 将flv下载的分段视频合并为mp4
效果
下载的分段视频:
合并后:
原理
使用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"
添加「过滤 Finder 项目」「给 Finder 项目排序」「运行 Shell 脚本」组件
按图配置就行了,其中 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