Ubuntu使用ffmpeg切割视频
1、安装FFmpeg
1、安装依赖
当前环境 ubuntu16
sudo apt-get update
sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev
sudo apt-get install yasm
sudo apt-get install libx264-dev
源码安装:
2、下载tarball
http://www.ffmpeg.org/download.html
3、解压,并参考install文件
1、./configure
2、make
3、make install
apt 安装:
sudo apt install ffmpeg
4、安装完成后检查ffmpeg 版本
ffmpeg -version
5、使用
ffmpeg -i a.mp4 -codec copy -map 0 -bsf h264_mp4toannexb -c copy -f segment -segment_list output.m3u8 -segment_time 5 output-%03d.ts
-i 输入文件
-codec 音频|视频编解码 方式
D)音频选项
-acodec codec 使用codec编解码 音频
-ab bitrate 设置音频码率
-ar freq 设置音频采样率
-ac channels 设置通道 缺省为1
-an 不使能音频纪录
-acodec codec 使用codec编解码
-an 不使能音频纪录
b) 视频选项
-b bitrate 设置比特率,缺省200kb/s
-r fps 设置帧频 缺省25
-s size 设置帧大小 格式为WXH 缺省160X128
-vcodec codec 强制使用codec编解码视频。 如果用copy表示原始编解码数据必须被拷贝。
-map file:stream 设置输入流映射
-bsf h264_mp4toannexb
主要是因为使用了mp4中的h264编码,而h264有两种封装:
一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中;另一种是mp4模式,一般mp4、mkv、avi会没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度,很多解码器只支持annexb这种模式,因此需要将mp4做转换;在ffmpeg中用h264_mp4toannexb_filter可以做转换;所以需要使用-bsf h264_mp4toannexb来进行转换
-c选项是-codec的缩写
注意:{如上的命令,可能会报错,因为在编码音频的时候aac格式的音频,h264_mp4toannexb无法操作}
ffmpeg 命令详解:
ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
ffmpeg [[options][`-i' input_file]]... {[options] output_file}...
1、参数选项:
(1) -an: 去掉音频
(2) -acodec: 音频选项, 一般后面加copy表示拷贝
(3) -vcodec:视频选项,一般后面加copy表示拷贝
2、格式:
(1) h264: 表示输出的是h264的视频裸流
(2) mp4: 表示输出的是mp4的视频
(3)mpegts: 表示ts视频流
1、使用ffprobe查看文件编码方式
ffprobe a.mp4
2、如果不是mp4的,可以用如下命令进行转
ffmpeg -i input.mkv -acodec copy -vcodec copy out.mp4
3、将mp4转为完整的ts
ffmpeg -i out.mp4 -c copy -bsf h264_mp4toannexb output.ts
4、将ts切片,并生成m3u8文件
ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 output%03d.ts
其中segment 就是切片,-segment_time表示隔几秒进行切一个文件,上面命令是隔5s,你也可以调整成更大的参数。
5、ffmpeg 查看所有编码器
ffmpeg -encoders