ffmpeg 视频处理命令集合
最近用到ffmpeg来处理视频,把用到的命令整理在这里做个备忘。
使用的ffmpeg版本2.0.1,从官网下载源码,编译很简单:
./configure
make
常用命令:
- 查看视频信息
ffmpeg -i a.avi
- 转成mpegts文件
ffmpeg -i 1.avi -vcodec mpeg4 -f mpegts -qscale 1 1.avi.ts
使用 -qscale 来设置视频质量,否则转换后视频质量会下降。
- 转成udp ts流
ffmpeg -re -i 1.avi -vcodec mpeg4 -f mpegts -qscale 1 udp://localhost:1234
- 转成rtp流
ffmpeg -re -i 1.avi -f rtp -an rtp://localhost:554
- 转成灰度裸视频
ffmpeg -i a.ts -f rawvideo -pix_fmt gray a.gray.ts
- 转成yuv裸视频
ffmpeg -i a.ts -f rawvideo -pix_fmt uyvy422 a.gray.ts
- 拼接视频
ffmpeg -i concat:"1.ts|2.ts|3.ts" -vcodec copy merge.ts
使用-vcodec copy参数的话,拼接出来的视频未经过重新编码,可能时间戳会有问题,导致使用ffmpeg对该视频做其他处理时drop frames,所以最好是拼接后重新编码。
- 截取一段视频
ffmpeg -i 1.ts -ss 00:00:00 -t 00:00:10 10_seconds.ts
- 从视频中提取图片
ffmpeg -vcodec rawvideo -f rawvideo -pix_fmt gray -s 720x576 -i sample.ts.gray -f image2 -vcodec bmp %04d.bmp
- 视频添加logo
ffmpeg -i 10.20.ts -vf "movie=../resource/youku_logo.png [logo]; [in][logo] overlay=main_w - overlay_w - 10:10 [out]" -q:v 1 -vcodec mpeg4 10.20.logo.ts
- 转分辨率
ffmpeg -i a.ts -s 720x576 -r 25 -aspect 5:4 b.ts
- 视频裁剪
ffmpeg -i demo.mp4 -filter:v "crop=10:20:100:100" out.mp4
- 视频旋转
ffmpeg -i demo.mp4 -vf "transpose=1" out.mp4
0 = 90CounterCLockwise and Vertical Flip (default) 1 = 90Clockwise 2 = 90CounterClockwise 3 = 90Clockwise and Vertical Flip
For 180 you can use-vf "transpose=2,transpose=2"