ffmpeg一个视频音频处理的工具,很是强大。由于最近做一个视频网站让我不得不接触了下这个工具。简单记录下我使用到的地方。
一、首先是安装
- windowns平台
直接在官网下载最新版本即可。下载地址 - centos7安装
#1、安装EPEL Release
yum install -y epel-release
#2、安装Nux-Dextop源
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-1.el7.nux.noarch.rpm
# 查看repo源是否安装成功
yum repolist
#3、yum安装ffmpeg
yum install -y ffmpeg
# 查看版本
ffmpeg -version
二、将其他格式转换为mp4
html5可直接播放的mp4格式要求视频编码为h.264,音频编码为aac,在转换前可以查看下原视频的编码格式。
ffprobe 111.flv
Input #0, flv, from '.\111.flv':
Metadata:
encoder : Lavf54.6.100
Duration: 00:43:09.28, start: 0.040000, bitrate: 1137 kb/s
Stream #0:0: Video: h264 (High), yuv420p(progressive), 1024x768 [SAR 1:1 DAR 4:3], 1000 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc
Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s
转换命令
ffmpeg -i 111.flv -c:v copy -c:a copy out/oo.mp4
命令说明:
-
-i _file
-i后面跟带转换的文件位置 -
-c:v
等于-vcodec
。目标视频编码格式copy
表示使用以前的格式,转换为h.264则libx264
-
-c:a
等于-acodec
。目标音频格式,转换为aac则libfaac 后 aac
-
-s hd720
目标视频的分辨率 -
-crf 23
设置质量等级,越高越差,也越费时间
总结:如果原始视频的编码符合h.264 + aac那就直接使用贴出的命令即可,比较快
三、将视频转ts切片并生成m3u8播放列表
- 1、分两步转换,效率高
先将mp4格式的转换为ts格式,命令如下:
ffmpeg -i out/oo.mp4 -c copy -bsf:v h264_mp4toannexb out/oo.ts
再将完整的ts文件进行切片处理,命令如下:
ffmpeg -i .\pp.ts -c copy -map 0 -f segment -segment_time 8 -segment_list pp.m3u8 pp_%03d.ts
说明:
-
%03d
有没有很像c语言中的格式化,表示三位整数 -
-segment_time
每个切片的视频时长,单位s -
-segment_list
m3u8文件输出位置 -
-f
大概就是格式化方式吧
注:m3u8中文件路径是以相对路径存放的,可以按需修改