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

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 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快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
相关文章
|
10月前
|
Web App开发 监控 安全
OSS客户端签名直传实践:Web端安全上传TB级文件方案(含STS临时授权)
本文深入解析了客户端直传技术,涵盖架构设计、安全机制、性能优化等方面。通过STS临时凭证与分片上传实现高效安全的文件传输,显著降低服务端负载与上传耗时,提升系统稳定性与用户体验。
967 2
|
10月前
|
存储 Prometheus 监控
OSS监控体系搭建:Prometheus+Grafana实时监控流量、错误码、存储量(开源方案替代云监控自定义视图)
本方案基于Prometheus构建OSS监控系统,涵盖架构设计、指标采集、可视化、告警及性能优化,助力企业实现高可用、低成本的自建监控体系。
991 1
|
10月前
|
存储 运维 分布式计算
OSS迁移实战:从自建MinIO到阿里云OSS的完整数据迁移方案
本文介绍了从自建MinIO迁移至阿里云OSS的完整方案,涵盖成本优化、稳定性提升与生态集成需求。通过双写代理、增量同步、分层校验等技术,解决数据一致性、权限迁移、海量小文件处理等挑战,实现业务零中断与数据强一致性,最终达成79%的TCO降低和显著性能提升。
2602 0
|
关系型数据库 数据库 对象存储
Dify实践|Dify on DMS+对象存储OSS,实现多副本部署方案
本文介绍了在DMS上部署Dify的详细步骤,用户可选择一键购买资源或基于现有资源部署Dify,需配置RDS PostgreSQL、Redis、AnalyticDB for PostgreSQL等实例,并设置存储路径和资源规格。文中还提供了具体配置参数说明及操作截图,帮助用户顺利完成部署。
|
存储 人工智能 数据管理
云端问道17期方案教学-AI场景下的对象存储OSS数据管理实践
本文介绍了AI场景下的对象存储OSS数据管理实践,由阿里云技术专家明锦分享。主要内容分为两部分:1) AI场景下对象存储实践方案,包括对象存储的应用、优势及在模型推理中的优化;2) OSS常用工具介绍,如OSSFS、Python SDK、Go SDK等,并详细说明了这些工具的特点和使用场景。文中还探讨了不同模式下的性能优化,以及即将推出的OS Connector for AI/ML工具,旨在提升数据下载速度和IO性能。
415 0
|
6月前
|
存储 人工智能 Cloud Native
阿里云渠道商:OSS与传统存储系统的差异在哪里?
本文对比传统存储与云原生对象存储OSS的架构差异,涵盖性能、成本、扩展性等方面。OSS凭借高持久性、弹性扩容及与云服务深度集成,成为大数据与AI时代的优选方案。
|
8月前
|
存储 运维 安全
阿里云国际站OSS与自建存储的区别
阿里云国际站对象存储OSS提供海量、安全、低成本的云存储解决方案。相比自建存储,OSS具备易用性强、稳定性高、安全性好、成本更低等优势,支持无限扩展、自动冗余、多层防护及丰富增值服务,助力企业高效管理数据。
|
8月前
|
存储 域名解析 前端开发
震惊!不买服务器,还可以用阿里云国际站 OSS 轻松搭建静态网站
在数字化时代,利用阿里云国际站OSS可低成本搭建静态网站。本文详解OSS优势及步骤:创建Bucket、上传文件、配置首页与404页面、绑定域名等,助你快速上线个人或小型业务网站,操作简单,成本低廉,适合初学者与中小企业。
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。