欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用FFmpeg将avi / mp4文件转换成m3u8/ts文件(用于近时播放)

程序员文章站 2022-07-07 11:54:54
...

准备工作

  1. 下载 :ffmpeg-20180227-fa0c9d6-win64-static.zip,并解压,FFmpeg下载地址
  2. 配置环境变量:在path中配置bin目录 (例如:F:\xxx\xxx\ffmpeg-20180227-fa0c9d6-win64-static\bin)
  3. 检查是否配置成功:ffmpeg -version使用FFmpeg将avi / mp4文件转换成m3u8/ts文件(用于近时播放)

开始转换

官方文档

官方文档:英文文档

转换格式

  1. avi 转换成 mp4 命令:ffmpeg -i lucene.avi lucene.mp4
  2. avi 转成mp3:ffmpeg -i lucene.avi lucene.mp3
  3. avi 转成gif:ffmpeg -i lucene.avi lucene.gif

生成m3u8/ts文件

  1. 第一步:先将avi视频转成mp4,
ffmpeg.exe -i  lucene.avi -c:v libx264 -s 1280x720 -pix_fmt yuv420p -b:a 63k -b:v 753k -r 18 .\lucene.mp4

这里是引用-c:v 视频编码为x264 ,x264编码是H264的一种开源编码格式。

-s 设置分辨率

-pix_fmt yuv420p:设置像素采样方式,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0,它的作用是根据采样方式来从码流中还原每个像素点的YUV(亮度信息与色彩信息)值。

-b 设置码率,-b:a和-b:v分别表示音频的码率和视频的码率,-b表示音频加视频的总码率。码率对一个视频质量有很大的作用,后边会介绍。

-r:帧率,表示每秒更新图像画面的次数,通常大于24肉眼就没有连贯与停顿的感觉了。

  1. 将mp4生成m3u8
ffmpeg -i  lucene.mp4   -hls_time 10 -hls_list_size 0  -hls_segment_filename ./hls/lucene_%05d.ts ./hls/lucene.m3u8

-hls_time 设置每片的长度,单位为秒

-hls_list_size n: 保存的分片的数量,设置为0表示保存所有分片

-hls_segment_filename :段文件的名称,%05d表示5位数字

生成的效果是:将lucene.mp4视频文件每10秒生成一个ts文件,最后生成一个m3u8文件,m3u8文件是ts的索引文件


3. 码率的设置(参考)

1*1024*1024*8/10/1024 = 819Kbps

码率又叫比特率即每秒传输的bit数,单位为bps(Bit Per Second),码率越大传送数据的速度越快。

码率的计算公式是:文件大小(转成bit)/ 时长(秒)/1024 = kbps 即每秒传输千位数

例如一个1M的视频,它的时长是10s,它的码率等于
使用FFmpeg将avi / mp4文件转换成m3u8/ts文件(用于近时播放)

相关标签: 流媒体