安装
安装 epel 源
代码语言:javascript复制yum install epel-release
安装 Nux Dextop yum 源
代码语言:javascript复制rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
安装 ffmpeg 和 ffmpeg 开发包
代码语言:javascript复制yum install ffmpeg ffmpeg-devel
常用命令
查看视频信息
代码语言:javascript复制ffmpeg -i mp4
提取音频
代码语言:javascript复制ffmpeg -i input.mp4 -f mp3 -vn output.mp3
-vn 表示去掉视频
指定时间截图
代码语言:javascript复制ffmpeg -ss 0:28:34 -i input.mp4 -vframes 1 -q:v 2 output.jpg
-vframes 1指定只截取一帧,-q:v 2表示输出的图片质量,一般是1到5之间(1 为质量最高)
截取某时间段的视频
代码语言:javascript复制ffmpeg -ss 0:0:19 -i test.mp4 -to 0:13:11 -c copy test-t.mp4
前面的时间是开始时间,后面的时间是结束时间
-c copy表示不对视频进行任何转码或修改,只截取视频
为音频添加封面
代码语言:javascript复制ffmpeg -loop 1 -i cover.jpg -i input.mp3 -c:v libx264 -c:a aac -b:a 192k -shortest output.mp4
上面命令中,有两个输入文件,一个是封面图片cover.jpg,另一个是音频文件input.mp3。-loop 1参数表示图片无限循环,-shortest参数表示音频文件结束,输出视频就结束。
格式转换
代码语言:javascript复制ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
上面的命令表式的是音频、视频都直接 copy,只是将 mp4 的封装格式转成了flv
音视频合并
代码语言:javascript复制ffmpeg -i out.h264 -i out.aac -vcodec copy -acodec copy out.mp4
视频转 gif
代码语言:javascript复制ffmpeg -i out.mp4 -ss 00:00:00 -t 10 out.gif
avi 转换成 mp4
代码语言:javascript复制ffmpeg -i input.avi -c:v libx264 -s 1280x720 -pix_fmt yuv420p -b:a 63k -b:v 753k -r 18 output.mp4
-c:v # 视频编码为 x264,x264编码是H264的一种开源编码格式
-s # 设置分辨率
-pix_fmt yuv420p # 设置像素采样方式
-b # 设置码率
-b:a和-b:v # 分别表示音频的码率和视频的码率,-b表示音频加视频的总码率
-r # 帧率,表示每秒更新图像画面的次数,通常大于24肉眼就没有连贯与停顿的感觉了
mp4 转换 m3u8
代码语言:javascript复制ffmpeg -i output.mp4 -hls_time 10 -hls_list_size 0 -hls_segment_filename ./hls/lucene_d.ts ./hls/lucene.m3u8
-hls_time # 每片的长度,单位秒
-hls_list_size n # 保存的分片的数量,设置为0表示保存所有分片
-hls_segment_filename # 段文件的名称,d表示5位数字
生成效果:将 output.mp4 视频文件每10秒生成一个 ts 文件,最后生成一个 m3u8 文件,m3u8文件是ts的索引