使用FFmpeg进行HLS打包——FFmpeg简单学

在本文中,我们将学习使用FFmpeg进行HLS打包。使用FFmpeg的好处在于:你可以在不离开命令行的情况下,执行提取视频、调整视频尺寸、转码、打包以及传输视频的所有操作。

我们首先看一下为VOD(点播)创建HLS打包的所有步骤,然后再来了解HLS实时流的打包。

使用FFmpeg进行HLS打包的基础步骤

好,现在让我们看下使用HLS打包点播文件的基础步骤:

  1. 从磁盘读取输入视频

  2. 将视频缩放/调整(scale/resize)为所需的多种分辨率版本

  3. 将每个缩放后的视频转码到所需码率

  4. 将音频转码到所需码率

  5. 将视频与音频组合,然后打包每一个音、视频组合,再创建各TS视频切片和播放列表(playlist)

  6. 创建一个主播放列表(master playlist),用于指向每个变体(variant)

现在,让我们一步一步来解决。

FFmpeg将视频调整为多种分辨率版本

第一步和第二步包括从磁盘中读取视频,然后将其调整为多种分辨率。上述操作仅需一个命令,如下所示:

ffmpeg -i brooklynsfinest_clip_1080p.mp4 \-filter_complex \"[0:v]split=3[v1][v2][v3];\[v1]copy[v1out];\[v2]scale=w=1280:h=720[v2out];\[v3]scale=w=640:h=360[v3out]"

[0:v]指输入文件的第一个视频流。在我们的例子中,只有一个视频流,它被分成3个输出[v1]、[v2]、[v3]。它们每一个都作为FFmpeg缩放函数的输入,该缩放函数接受一个高度和宽度数值用于执行缩放。

这里,我们将输入视频调整为1080p、720p和360p。

这里的[v1out]、[v2out]、[v3out]是包含缩放过程的输出变量。注意,这里我们假设缩放过程会保留长宽比(aspect ratio)。当然,你可以在必要时使用letterboxing来处理。

审校者注:letterboxing是指将以宽银幕比例拍摄的电影转换到标准宽度的视频格式时,同时保留电影的原始宽高比,由此产生的视频图像上下都有黑条的这个过程;这些黑条是图像的一部分(即视频信号的每一帧)。LTBX是其缩写,标识如此格式化的电影和图像。这个术语来自于信箱的形状,信箱是墙壁或门上的一个槽,邮件通过它来传递,它是长方形的,宽于它的高度。下图是一个 2.35:1比例的 widescreen 图像经过letterboxing 处理之后,放在 1.33:1 屏幕上的一个例子。如下:

除此之外,还有pillarboxing和windowboxing等常见转换模式。

将视频转码为多种码率用于HLS打包

接着,我们进入第三步和第四步:我们必须将视频转码为多种码率,正如ABR技术常做的那样。

记住,我们已经将视频调整为所需的分辨率并存储进 [v1out]、[v2out]和[v3out]的输出。我们将直接使用它们作为转码步骤的输入。

-map [v1out] -c:v:0 libx264 -x264-params "nal-hrd=cbr:force-cfr=1" -b:v:0 5M -maxrate:v:0 5M -minrate:v:0 5M -bufsize:v:0 10M
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值