【OSS 排查方案-12 livechannel 直播推流】

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: OSS livechannel 推流过程 生成推流 URL设置推流状态 录制 M3u8 缺失 默认录制成品的 m3u8 所以只有最后 3 片,遵循的是 hls 协议的默认规则,是正常想象,可以通过调用 PostVodPlaylist 接口将指定时间范围内的 ts 文件汇聚到一个 m3u8 索引内来解决; tips EndTime 必须大于 StartTime,且时间跨度不能大于 1 天。

作者:张医博

OSS livechannel 推流过程

image.png

生成推流 URL
设置推流状态

案例:录制 M3u8 缺失

image.png

默认录制成品的 m3u8 所以只有最后 3 片,遵循的是 hls 协议的默认规则,是正常想象,可以通过调用 PostVodPlaylist 接口将指定时间范围内的 ts 文件汇聚到一个 m3u8 索引内来解决;

tips

  • EndTime 必须大于 StartTime,且时间跨度不能大于 1 天。
  • OSS会查询指定时间范围内的所有该 LiveChannel 推流生成的 ts 文件,并将其拼装为一个播放列表。

案例:录制 m3u8 文件 失败

  • 先看下是否已经成功推流到来 OSS 才算成功,客户端抓包必须能看到有 publish succees 的标志后,和 OSS 有正常的音频包交互才算成功,所以发现客户端推流有记录,但是就是没有录制视频的情况,就需要自己抓包分析下;

案例:客户端无法推流到 OSS

ffmpeg -re -i 0_20180525105430445.aac -acodec aac -strict -2 -f flv rtmp://xxx.oss-cn-beijing.aliyuncs.com/live/test_1000?Expires=1540458859&OSSAccessKeyId=LTAlujianb6C9z&Signature=qwh31xQsanmao6ygCFJgovNIg%3D&playlistName=playlist.m3u8

  • 使用 ffmpeg 推不上去的时候建议用最原始的命令推流,不要加一些复杂的参数,而且推流 URL 在有 & 符号时请用 "" 囊括起来;
  • 尝试更换成 obs 推流测试下,看是否是 ffmpeg 问题导致的推流失败;

案例:录制 M3u8 文件卡顿

  • 转储类型为 HLS 时,写入当前 ts 文件的音视频数据时长达到FragDuration 指定的时长后,OSS 会在收到下一个关键帧的时候切换到下一个 ts 文件;如果 max(2*FragDuration, 60s) 后仍未收到下一个关键帧,OSS 强制切换文件,此时可能引起播放时卡顿;

案例:录制 M3u8 文件没有音频或视频

在此之前没有 hls 协议基础,或者对音视频不懂的同学很难理解,我们先恶补一些关键名词和包结构
image.png

RTMP 的音视频流的封装形式和 FLV 格式相似, 流媒体服务器向客户端发送包含 H264 和 AAC 的 RTMP 直播流,需要首先发送这两个 header,没有这些信息播放端是无法解码音视频流的,其中音频 tag 格式如下

  • AVC sequence header
  • AAC sequence header
    image.png

从上面推论出 AAC sequence header 内容的前 2 个字节是 0xAF 0x00,我们来看一个示例:

image.png

ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中。

ADTS:Audio Data Transport Stream 音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。它的特征类似于 mp3 数据流格式。

image.png

援引

解码流程

image.png

**经过知识补充后我们说下以下几种情况会出现音频或者视频没有录制的情况:
**

  • AVC header 或者 AAC header 没有发送,抓包也能看出来。
  • RTMP message 长度小于2,或者是 sequence header 非常小
  • 音频 Message 超过缓冲区大小。
  • codec_ ctx 解码上下文的关键信息,如果携带的音视频数据异常,也会导致录制失败。

案例:ffmpeg 推流到 OSS 录制没有音频

背景:

想问下,我们使用类似于这样的命令录制直播转推到阿里云OSS,录制下来的视频没有声音
ffmpeg -re -v -1 -loglevel debug -timeout 60000 -reconnect_at_eof 1 -reconnect_streamed 1 -reconnect_delay_max 60 -i http://laochouzhibo.com/live/10456_33832518963510801728548610115630440343599.flv -acodec copy -vcodec copy -f flv rtmp://laochou.oss-cn-beijing-internal.aliyuncs.com/live/6db24fe6307e4cbcbf4f1764f5a1fb86?OSSAccessKeyId=LTAHSFdouboolevJG&Expires=1541002834&Signature=yRPuvIsIe90ipETg%3D

image.png

分析:

  • 出现这种问题,可以直接看下 ffmpeg 记录的 log ,可以发现客户端是没有发送 aac_header 。
  • 或者客户端抓个 RTMP 的包也可以看到是否发送了 aac_header
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
4月前
|
存储 Kubernetes 对象存储
Kubernetes版本对接对象存储几种方案
Kubernetes版本对接对象存储几种方案
170 0
|
移动开发 JSON JavaScript
阿里云OSS PostObject错误及排查详细版本
PostObject使用表单上传文件到OSS。PostObject的消息实体通过 多重表单格式multipart/form-data 编码,详细说明请参看 RFC 2388。Put Object中参数通过HTTP请求头传递,Post Object参数则作为消息体的表单域传递。
1564 0
|
存储 分布式计算 Kubernetes
Github 29K Star的开源对象存储方案——Minio入门宝典
对象存储不是什么新技术了,但是从来都没有被替代掉。为什么?在这个大数据发展迅速地时代,数据已经不单单是简单的文本数据了,每天有大量的图片,视频数据产生,在短视频火爆的今天,这个数量还在增加。有数据表明,当今世界产生的数据,有80%是非关系型的。那么,对于图片,视频等数据的分析可以说是大数据与人工智能的未来发展方向之一。
1216 0
Github 29K Star的开源对象存储方案——Minio入门宝典
|
存储 机器学习/深度学习 分布式计算
非结构化数据怎么存?——开源对象存储方案介绍
过去的相当长的一段时间里,商用对象存储占据了市场上的大量的份额。国外的Amazon S3,国内的阿里云OSS都成为了大多数公司的选择。但是构建一个企业级的数据湖(包括结构化和非结构化数据)已经成为了越来越多公司的目标。那么Hadoop还能满足我们的要求吗?还是我们需要更多的选择?
1034 0
非结构化数据怎么存?——开源对象存储方案介绍
|
存储 SQL 缓存
Flink + Iceberg + 对象存储,构建数据湖方案
上海站 Flink Meetup 分享内容,如何基于Flink、对象存储、Iceberg 来构建数据湖生态。
Flink + Iceberg + 对象存储,构建数据湖方案
|
存储 弹性计算 安全
OSS 可用性诊断排查
本文主要介绍遇到 OSS 可用性异常的排查方法
3253 0
|
对象存储
【OSS 排查方案-12 livechannel 直播推流】
OSS livechannel 推流过程 生成推流 URL设置推流状态 录制 M3u8 缺失 默认录制成品的 m3u8 所以只有最后 3 片,遵循的是 hls 协议的默认规则,是正常想象,可以通过调用 PostVodPlaylist 接口将指定时间范围内的 ts 文件汇聚到一个 m3u8 索引内来解决; tips EndTime 必须大于 StartTime,且时间跨度不能大于 1 天。
2168 0
|
1月前
|
Java API 开发工具
如何用阿里云 oss 下载文件
阿里云对象存储服务(OSS)提供了多种方式下载文件,以下讲解下各种方式的下载方法
806 1
|
1月前
|
存储 安全 对象存储
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
本文详细介绍了怎样帮助新手小白从注册,购买阿里云OSS,到一步一步配置OSS做为图床,和PicGo、Typora软件连接,配置好关联之后,在使用Typora写文章时,如果需要插入图片,只需要将图片复制粘贴到Typora的编辑区域,就会自动通过PicGo上传到指定图床,自动复制外网能访问的URL并展示,简直不要太方便,极大的解决了编辑文章时复制处理图片链接的痛点。
166 2
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
|
2月前
|
对象存储
minio临时凭证直传切换到阿里云oss
minio临时凭证直传切换到阿里云oss
172 1

热门文章

最新文章