FFmpeg命令行常用命令-宝剑锋从磨砺出
ffmpeg视频常用命令
- 视频压缩
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k -maxrate 2500k output.mp4
- 视频转动方向
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
0:逆时针旋转90度并垂直翻转,这是默认值。
1:顺时针旋转90度。
2:逆时针旋转90度。
3:顺时针旋转90度并垂直翻转。
- 音量增大
ffmpeg -i input.wav -af "volume=2" output.wav
- Replace volume=X with a suitable number. For example 0.5 will half, 2 will double the volume.
- 去除水印
1. 查看文件信息ffmpeg -i xxx.mp4
- 制作gif文件
//从第2s开始截取10秒数据 -r 15 一秒15帧.
ffmpeg -ss 1 -t 10 -i 20200408.mp4 -s 360x640 -r 15 output2.gif
- 播放 rtsp - tcp 流
ffplay -rtsp_transport tcp rtsp://192.168.1.8:554/onvif1
- 缩放图片
ffmpeg -i home.png -s 540x1200 hometiny.png
- 视频转码
flv -> mp4
ffmpeg -i flv.flv -vcodec copy out.mp4
ffmpeg -i flv.flv -vcodec copy -acodec aac out.mp4
ffmpeg -i out.ogv -vcodec h264 out.mp4
ffmpeg -i input.flv -codec copy output.mp4
高级
ffmpeg -i flv.flv -c:v libx264 -crf 19 -strict experimental filename.mp4
张瑞推荐参数:
ffmpeg -i flv.flv -c:v copy -c:a aac -ab 128k -ar 44100 3.mp4
- 命令行
String[] commands = new String[8]; commands[0] = "ffmpeg"; commands[1] = "-i"; commands[2] = inputPath; commands[3] = "-vcodec"; commands[4] = "copy"; commands[5] = "-acodec"; commands[6] = "copy"; commands[7] = outputPath;
- 下载直播流保存到本地mp4文件. ```java ffmpeg -i rtsp://@192.168.241.1:62159 -vcodec copy -acodec copy -f mp4 -r 15 C:/DB_Videos/111.mp4
ffmpeg -rtsp_transport tcp -i rtsp://116.62.177.94:5555/rtsp/deb77464-a4b6-42d7-86bf-bc6d73f29189 -vcodec copy -acodec aac -f mp4 -y D:/111.mp4
10. 播放tcp的rtsp数据
```shell
ffplay -rtsp_transport tcp rtsp://47.108.81.159:5555/rtsp/00716e06-e3bf-4a53-bd2e-96e3256f96f8
- 调整视频速率
- 视频的倍速播放与慢速播放
- 通过使用 av filter 中的 setpts 来实现:
ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv
- 通过使用 av filter 中的 setpts 来实现:
- 如果担心会出现丢帧的情况,可以使用 -r 指定输入帧数,如果源视频是30fps,我们想4倍播放:
ffmpeg -i input.mkv -r 120 -filter:v "setpts=0.25*PTS" output.mkv
- 音频的倍速播放与慢速播放
- 通过 av filter 中的 atempo 来实现:
ffmpeg -i input.mkv -filter:"atempo = 2.0" -vn output.mkv
- atempo filter 配置区间在0.5和2.0之间,如果需要更高倍,可以使用多个 atempo filter 串在一起来实现
- 通过 av filter 中的 atempo 来实现:
ffmpeg -i input.mkv -filter:"atempo=2.0,atempo=2.0" -vn output.mkv
- 同时对视频和音频倍速播放:
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv
Android移动端如何使用ffmpeg命令
ffmprobe视频信息分析
- 分析视频帧信息
ffprobe -show_frames We_Are_Young.mp4 > frames.info
- 统计I帧数量
keyframe=1 : key frame
pict_type=I : I-frame
cat frames.info | grep “pict_type=I” |wc -l
- 统计视频帧数量
cat frames.info | grep “media_type=video” |wc -l
ffprobe -show_format -show_streams filename
- 转换视频颜色格式为yuv420p(默认yuvj422p)
ffmpeg -rtsp_transport tcp -i rtsp://47.108.81.159:5555/rtsp/1bac7b77-8a39-425b-9e2f-c2d66d441aef -pix_fmt yuv420p t.mp4