ffmpeg视频切片

m3u8转MP4

ffmpeg -i http://vn.xcar.com.cn/xtv/qiniu/video/converted/m3u8/2019/10/25/m3u8_o_1do0gva3uqpps378l3kjnna0_720p.m3u8 
-c copy -bsf:a aac_adtstoasc output.mp4

ffmpeg视频切片

安装FFmpeg

1.下载资源: wget http://www.ffmpeg.org/releases/ffmpeg-3.1.tar.gz
2.解压:tar -zxvf ffmpeg-3.1.tar.gz
配置:cd ffmpeg-3.1
./configure --prefix=/usr/local/ffmpeg
编译:make && make install
3.设置环境变量:vi /etc/profile
添加PATH=$PATH:/usr/local/ffmpeg/bin
export PATH
保存并退出
使生效:source /ect/profile
4.验证:ffmpeg -version

提示没有yasm或太旧了,于是安装yasm

:
1.下载资源: wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
2.解压:tar -zxvf yasm-1.3.0.tar.gz
配置:cd yasm-1.3.0
./configure
编译:make && make install

## 1.视频截取
简单命令

ffmpeg -i input.mp4 -ss 1:05 -t 10 output.mp4

-ss 5指定从输入视频第1:05秒开始截取,-t 10指明最多截取10秒。

但是上面的命令可能会比较慢,更好的命令如下:

ffmpeg -ss 1:05 -i input.mp4 -t 10 -c:v copy -c:a copy output.mp4

把-ss 1:05放到-i前面,与原来的区别是,这样会先跳转到第1:05秒在开始解码输入视频,而原来的会从开始解码,只是丢弃掉前1:05秒的结果。
-c:v 和 -c:a分别指定视频和音频的编码格式。
-c:v copy -c:a copy标示视频与音频的编码不发生改变,而是直接复制,这样会大大提升速度

2、如果不是mp4的,可以用如下命令进行转

ffmpeg -i input.mkv -acodec copy -vcodec copy out.mp4 

所以在这里我使用了ffmpeg切片,大致分为两步,第一步是构建TS文件,第二步是对ts文件切片(m3u8索引文件):

ffmpeg -i 输入视频源路径 -c copy -bsf h264_mp4toannexb 输出ts视频源路径

ffmpeg -i 11.mp4 -c copy -bsf h264_mp4toannexb cs.ts

ffmpeg -i 11.mp4 -c copy  output.ts

ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 output%03d.ts  

mp4转码m3u8

如果视频不为mp4格式,需先将视频转码为mp4,可使用如下命令进行转换

ffmpeg -i 本地视频地址 -y -c:v libx264 -strict -2 转换视频.mp4

将mp4格式转换为ts格式

ffmpeg -y -i 本地视频.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 转换视频.ts

将ts文件进行切片

ffmpeg -i 本地视频.ts -c copy -map 0 -f segment -segment_list 视频索引.m3u8 -segment_time 5 前缀-%03d.ts

其中segment 就是切片,-segment_time表示隔几秒进行切一个文件,上面命令是隔5s,你也可以调整成更大的参数。

ffmpeg分片 m3u8以及视频截取

M3u8:
从文件转HLS直播,也就是生成m3u8文件:

./ffmpeg -re -i test.mp4 -c copy -f hls -bsf:v h264_mp4toannexb output.m3u8

其中 -bsf:v h264_mp4toannexb是将MP4中的H.264数据转换为H.264AnnexB标准编码,如果源文件是FLV、TS等可作为直播传输流的视频,则不需要此参数

PHP执行命令

exec("ffmpeg -i 11.mp4 -c copy  output.ts",$out,$status);
exec("ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 output%03d.ts  ",$out,$status);
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值