FFmpeg是一套强大的多媒体工具箱,主要用于视频音频转码
FFmpeg除本地文件外,还支持多种流媒体格式
brew install ffmpeg
ffplay <media>
播放文件,也可播放HLS、RTMP等流媒体ffprobe <media>
获取文件信息,支持流媒体ffmpeg -i <media> <output.format>
文件转码,支持流媒体例: ffprobe -print_format json -show_streams -show_frames hello.flv
-print_format json
输出格式为JSON-show_streams
显示每个Stream的详情-show_frames
显示每帧的详情例: ffmpeg -i hz.flv -vsync cfr -frames:v 1 -ss 00:00:10 -y out.jpg
-i hz.flv
输入文件为hz.flv
-vsync cfr
视频同步方法使用CFR(Constant Frame Rate),常帧率,即通过丢帧或插帧保持视频帧率恒定,适用于文件有损坏的情况-frames:v 1
只截取一帧-ss 00:00:10
从10秒处开始截取-y
提示是否覆盖已有文件时,自动选择是out.jpg
输出文件为out.jpg
,图片格式为jpg
例: ffmpeg -i hello.flv -vsync cfr -r 1 'img-%03d.jpeg'
-i hello.flv
输入文件-vsync cfr
视频同步策略选用CFR-r 1
一秒截取一张。默认一帧截取一张img-%03d.jpeg
输出文件模板。文件名从1开始递增,填充0到3位数。格式选用jpg例: ffmpeg -i rtmp://rtmp.open.ys7.com/openlive/f01018a141094b7fa138b9d0b856507b.hd -t 10 10.flv
-i xxx
流媒体URL-t 10
只截取10秒10.flv
输出文件10.flv
,自动转换为flv格式例: ffmpeg -i "concat:0.ts|1.ts|2.ts|3.ts|4.ts" -t 16 output.ts -y
-i "concat:0.ts|1.ts|2.ts|3.ts|4.ts"
输入文件列表,格式为concat:x|y|z...
-t 16
超出16秒的部分自动丢弃output.ts
输出文件为mpegts
格式-y
自动覆盖同名文件例: ffmpeg -i hz.flv -ss 00:00:02 -t 9 -c copy cut.flv -y
-i hz.flv
指定输入文件-ss 00:00:02
从2秒处截取-t 9
截取长度为9秒-c copy
输出编码为copy
,意思是不重新编码,直接复制原文件,可显著提高执行速度cut.flv
输出格式为flv-y
自动覆盖同名文件