配置听视频

更新时间:
复制 MD 格式

开启听视频功能后,CDN节点会将视频文件中的音频分离,并返回给客户端,实现听视频的同时降低带宽的使用,有效节省流量。通过本文您可以了解开启音视频分离的操作方法。

背景信息

当客户端请求访问视频文件时,向服务器端发送URL请求,例如:http://www.aliyun.com/test.flv?ali_audio_only=1,CDN服务器端仅向客户端发送纯音频数据。客户端必须支持Transfer-Encoding:chunked传输方式。

说明
  • 听视频功能不支持Range请求,但是播放视频时许多客户端都会发起Range请求(包括但不限于Safari、iOS设备上的浏览器),建议您使用自研的客户端对接该功能。

  • 听视频过程中如果需要拖动进度条播放,需同时配置拖拽功能。进行拖拽时,会先读取原音视频文件的meta信息获取播放时长,将播放时长作为播放进度来实现播放进度的拖拽具体操作。更多信息,请参见配置拖拽播放

  • 目前听视频功能不支持 MP4 Box Header Size 等于 16 的场景(64 位),仅支持 MP4 Box Header Size 等于 8 的场景。关于 Header Size 的详细说明和查看方法,请参见下方 MP4 Box Header Size 说明。

操作步骤

  1. 登录CDN控制台

  2. 在左侧导航栏,单击域名管理

  3. 域名管理页面,找到目标域名,单击操作列的管理

  4. 在指定域名的左侧导航栏,单击视频相关

  5. 听视频区域,打开听视频开关。

    开启听视频功能后,需要配合请求参数ali_audio_only使用。支持的文件格式如下表所示。

    文件格式

    meta信息

    ali_audio_only参数

    举例

    MP4

    源站视频的meta信息必须在文件头部,不支持meta信息在尾部的视频。

    ali_audio_only参数表示该请求为音视频分离请求,服务端只返回meta信息和音频信息,视频信息会被过滤掉。如果不带该参数或参数值非1,则该功能失效。

    请求http://domain/video.mp4?ali_audio_only=1

    FLV

    无要求。

    ali_audio_only参数表示该请求为音视频分离请求,服务端只返回meta信息和音频信息,视频信息会被过滤掉。如果不带该参数或参数值非1,则该功能失效。

    请求http://domain/video.flv?ali_audio_only=1

MP4 Box Header Size 说明

如果 MP4 文件在使用听视频功能时无法正常提取音频,可能是文件的 mdat Box 使用了扩展 Header(16 字节),不符合当前听视频功能的要求。

说明

此限制主要针对 mdat Box(存储实际音视频数据的容器)。moov 等其他 Box 通常默认使用 8 字节 Header,不受此限制影响。

通过本节可以了解 Header Size 的概念,并检查文件是否兼容。

什么是 MP4 Box Header Size

MP4 文件由多个 Box(容器单元)组成,例如 moov box、mdat box 等。每个 Box 包含一个 Header,用于描述该 Box 的大小和类型。Header 有以下两种规格:

规格

Header 大小

说明

标准 Header

8 字节(32 位)

包含 size(4 字节)和 box type(4 字节)。size 字段直接存储 Box 的实际大小。适用于 Box 数据量可用 4 字节表示的场景。

扩展 Header

16 字节(64 位)

包含 size(4 字节,固定值为 1)、box type(4 字节)和 largesize(8 字节)。当 size 值为 1 时,表示启用 largesize 机制,真实大小存储在 largesize 字段中。常见于 mdat Box 数据量较大的场景。

查看 MP4 文件的 Box Header Size

可以使用以下工具查看 MP4 文件的 Box Header Size。

方式一:使用 MP4Box.js 在线工具(推荐)

  1. 打开 MP4Box.js ISOBMFF Box Structure Viewer

  2. 上传 MP4 文件。

  3. 在左侧 Box View 的 Tree View 中,单击 mdat (MediaDataBox)

  4. 在右侧 Box Property View 中查看 original_size 字段,判断 Header Size:

    • original_size 显示为 1:mdat Box Header Size 为 16 字节,不支持听视频功能。

    • original_size 不显示或不为 1:mdat Box Header Size 为 8 字节,支持听视频功能。

以下为两种情况的属性对比:

属性字段

Header Size = 8 字节(支持)

Header Size = 16 字节(不支持)

size

实际大小数值

实际大小数值

box_name

MediaDataBox

MediaDataBox

start

偏移字节数

偏移字节数

original_size

不显示

显示为 1

方式二:使用 Bento4 命令行工具

运行以下命令:

./mp4dump 文件名.mp4 | grep -E "\[mdat\]|\[moov\]"

根据输出结果判断:

  • [mdat] size=8+xxxxxx:Header Size 为 8 字节,支持听视频功能。

  • [mdat] size=16+xxxxxx:Header Size 为 16 字节,不支持听视频功能。