ffmpeg进行视频切片,生成m3u8

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中文件路径是以相对路径存放的,可以按需修改

你可能感兴趣的:(ffmpeg进行视频切片,生成m3u8)