1 在任意目录下使用 ffmpeg命令,需要把ffmpeg可执行文件路径提前设置到环境变量中
vim ~/.bash_profile
在文件末尾加上:
export PATH="/usr/local/ffmpeg/bin:$PATH"
保存并关闭后使其生效:
source ~/.bash_profile
2 分解与复用命令
ffplay animals.mp4
ffmpeg -i animals.mp4 -vcodec copy -acodec copy animal.mov 格式转换,将mp4转成mov
ffplay animals.mov
ffmpeg -i animal.mov -an -vcodec copy animal.h264 将mov抽取出视频,去掉音频
ffplay animals.h264 可以直接播放h264
ffmpeg -i animal.mov -acodec copy -vn animal.aac 抽取音频
3 处理原始数据的命令
针对mp4格式的视频文件,不要音频,视频编码格式用rawvideo,像素格式为yuv420p,输出结果为yuv格式
ffmpeg -i animals.mp4 -an -c:v rawvideo -pix_fmt yuv420p animal.yuv
ffplay -s 720x1280 animal.yuv 播放时一定要加分辨率大小
不要视频,只要音频,音频采样率 44100,通道数 2,-f表示音频存储格式,s表示有正有负,每一个数值都用16位表示,l表示little,e表示end,小端存储
ffmpeg -i animals.mp4 -vn -ar 44100 -ac 2 -f s16le animal.pcm
ffplay -ar 44100 -ac 2 -f s16le animal.pcm 播放时一定要加参数
4 滤镜命令
视频画面大小裁剪
-vf表明后面是视频滤镜,这里使用crop滤镜,crop的参数是:in_w是本身视频的宽,减去200,in_h-200视频高度减去200
视频编码器libx264,音频编码器采用copy的模式,表示不处理音频
ffmpeg -i animal.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy animal_crop.mp4
ffmpeg -i animal.mov -vf crop=in_w-200:in_h-200 -vcodec libx264 -acodec copy animal_crop.mp4 完全同上,使用-vcodec代替-c:v
5 裁剪与合并命令
视频裁剪:
从第0小时,第0分钟,第20s开始,裁剪10s的视频,输出格式是ts
ffmpeg -i animals.mp4 -ss 00:00:20 -t 10 animal_10s.ts
视频拼接
将txt文件中的所有视频文件拼接成一个文件
ffmpeg -f concat -i inputs.txt animal_concat.mp4
其中inputs.txt:
file 'animal_10s.ts'
file 'animal_5s.ts'
6 图片与视频互转命令
视频转图片
-r指定转换图片的帧率,每秒转出1帧
-f告诉ffmpeg,我要将图片输出为image2格式
最后是命名格式
ffmpeg -i animals.mp4 -r 1 -f image2 images/image-%3d.jpeg 这里要自己提前建立好一个空的images文件夹
得到:
image-001.jpeg image-002.jpeg image-003.jpeg image-004.jpeg image-005.jpeg image-006.jpeg image-007.jpeg
图片转视频
ffmpeg -i images/image-%3d.jpeg animal_images.mp4
7 直播拉流和推流
推流
-re 减慢帧率,不要追求尽可能快的播放
-c 表示同时包括音视频的编解码方式,都是copy
-f 表示推送出去的文件格式,是flv格式
ffmpeg -re -i animals.mp4 -c copy -f flv rtmp://server/live/streamName
拉流
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv
可以用ffplay去播放湖南卫视的rtmp地址:
ffplay rtmp://58.200.131.2:1935/livetv/hunantv
然后用ffmpeg播放同样的地址:
ffmpeg -i rtmp://58.200.131.2:1935/livetv/hunantv -c copy dump.flv
同样的方法拉取cctv1的视频,它会保存成一段一段的:
ffmpeg -i http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8 -c copy dump.m3u8