1.ffmpeg
1.1 常用参数
视频:
- -b:比特率(bitrate),-b:v 1000k,设置视频的比特率为1000k, -b:a 命令用于设置音频的比特率,比特率(Bitrate)是指每秒传输的比特数量,单位为bps(bit per second)。比特率越高,传送的数据越大。在视频领域,比特率等同于码率。
- -s:设置分辨率,-s 1920x1080,设置视频为1080p。
- -an:取消音频
- -sn:取消字幕
- -vcodec:指定视频编码格式,ffmpeg ivcodec h264
- -r:设置帧率
- -c:v :设置解码器
- -aspect :设置视频比例,如(4:3,16:9)
- -crf:设置视频质量(1-50),一般设置为(18-28)
- -preset:指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。与 veryslow相比,placebo以极高的编码时间为代价,只换取了大概1%的视频质量提升。这是一种收益递减准则:slow 与 medium相比提升了5%~10%;slower 与 slow相比提升了5%;veryslow 与 slower相比提升了3%。针对特定类型的源内容(比如电影、动画等),还可以使用-tune参数进行特别的优化。
音频:
- -b:a,设置码率
- -ar:设置采样率
- -acodec:设置声音编解码
其他: - -threads :设置cpu处理核数
- -q:v,设置图片质量(1-5),1最好
- -vf scale=1080:-1,设置视频分辨率,-1为自适应
1.2 具体应用
视频压缩:
ffmpeg -i input.mp4 -vcodec h264 -vf scale=720:-2 -threads 4 out.mp4 #高度的-2是libx264要求高度是偶数,设置成-2,让软件自动计算得出一个接近等比例的偶数高
视频拼接:
ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex '[0:0][0:1] [1:0][1:1] [2:0][2:1] concat=n=3:v=1:a=1 [v][a]' -map '[v]' -map '[a]’ output.mp4
截取视频帧:
ffmpeg -i input.mp4 -ss 00:1:05 -frames:v 1 out.jpg #-frame:v 1,在video stream上截取1帧。
图片转视频:
有相同命名规则:("image000.jpg",从0开始依次递增。) ffmpeg -f image2 -i 'image%3d.jpg' -vcodec libx264 -r 25 -b 200k out.mp4 有不同命名规则: ffmpeg -r 10 -pattern_type glob -i '*.jpg' out.mp4 #-pattern_type glob:Glob pattern 模糊匹配
2.推流及播放
2.1 推流
将屏幕及声音推流到服务器:
需要先安装screen-capture-recorder,不然无法使用。
ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="virtual-audio-capturer" -vcodec libx264 -preset:v ultrafast -pix_fmt yuv420p -acodec aac -f flv rtmp://114.115.206.93/live/livestream
将视频推流到服务器:
ffmpeg -re -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://114.115.206.93/live/livestream
2.2 播放
播放拉取的流:
ffplay rtsp://127.0.0.1:8554/stream #ip+端口
ffplay input.mp4 #可直接播放输入文件