V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ck65
V2EX  ›  问与答

请问国内直播云厂商里,谁家服务支持 SPEEX 音频转码以及 MetaData 转换?

  •  
  •   ck65 · 2016-06-29 16:03:32 +08:00 · 2081 次点击
    这是一个创建于 3060 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在若干家直播云( CDN )的群咨询后,要么表示直播不支持 SPEEX 转 AAC ,要么表示不知道 RTMP 里的 Cue 点转 HLS Timed MetaData 是什么(确属小众需求)。所以只能求助万能的 V 友!也欢迎符合需求的厂家自荐!

    详细说说我的两个特殊推流需求:

    1. 由于推流端只能推 SPEEX 、 PCMA 、 PCMU 或 NellyMoser 格式的音频,而且要在观看端使用 HLS 拉流,所以需要使直播音频从 SPEEX 等转换为 AAC 格式,否则 HLS 下无法播放声音。
    2. 推流端会向 RTMP 流里添加若干自定义的 Cue 点,不知能否在转换 HLS 播放流的同时将 Cue 点转换成 Timed MetaData 。此需求涉及到的技术细节我还在研究,所以术语表达上可能不够专业,请见谅。这个特性 Wowza 似乎有个实现方式,但看了文档,似乎要买他家的服务先。

    以上。感谢!🙏

    8 条回复    2016-06-30 16:10:50 +08:00
    fcicq
        1
    fcicq  
       2016-06-29 20:15:15 +08:00
    感觉上救不了 h. 看到 Cuepoints 和 NellyMoser 倒是有兴趣了.
    cue points 现在大多的实现方法都是另外做一个弹幕服务器所以通常还是被无视了. 另外几个 codecs 没用过但是个人知道 NellyMoser 的 rtmp 流抓回来之后需要 inject metadata 然后才能顺利的在本地播放.
    ck65
        2
    ck65  
    OP
       2016-06-29 23:39:05 +08:00 via iPhone
    @fcicq 然而 HTML5 并不能干这些😂
    另外 cue 点走视频流之外的通道就避免不了一个问题,假设推流端发出 cue 点是即时到达观看端的,但 HTML5 直播播放方案都有延迟,怎样让 cue 点与观看端的视频时间同步呢?最佳的解决方法就是走 metadata 了。不知是否有其他最优方法。
    fcicq
        3
    fcicq  
       2016-06-30 00:19:05 +08:00
    @ck65 这牵扯到一个同步重要还是即时重要的问题. 重播=>同步重要, 直播=>即时重要. 但是重播的时候同步的重要性其实也没那么高, 不见得用单独分发服务就不行.
    ck65
        4
    ck65  
    OP
       2016-06-30 01:10:06 +08:00
    @fcicq 我们的场景直播回放都要有,总的来说还是同步重要,或者说基本没有对即时性的需求,因为唯一要求就是推流者打的 cue 点要在观看者这边完美重现。回放目前我们有完美解决方案,难的是直播时的同步,因为 rtmp 、 hls 两种直播协议之间有相当大的延迟差别,以及用户网络环境的差异也会造成同种协议的延迟差异高达 10 秒以上,没有办法做到预设补偿时间。在暂时负担不起自建直播服务环境的情况下,这也显出了依赖直播云的坏处。国内万一真没一个能打的可就头疼了。实在不行也只能去详细调研一下 wowza 了。。
    fcicq
        5
    fcicq  
       2016-06-30 01:24:31 +08:00
    @ck65 目测你是做教育类的 hh. 不过 rtmp 可以直推, hls 如果不转码的话也可以放 CDN 上, 自建也不至于需要太多服务器.
    ck65
        6
    ck65  
    OP
       2016-06-30 12:33:13 +08:00
    @fcicq 没错!😂
    自建直播基础设施这个大轮子是条不归路啊。。
    fcicq
        7
    fcicq  
       2016-06-30 14:19:23 +08:00
    @ck65 虽然个人对 rtmpdump 很熟, 但是没注意到 cue point 是怎么在 AMF 或者 RTMP 里表达的. 把 Type 0x12 (18) 的包解出来就可以了吧?
    ck65
        8
    ck65  
    OP
       2016-06-30 16:10:50 +08:00
    @fcicq 我对 rtmp 包不熟悉,只会用 AS3 往流里加 metadata ,解的方法也是 AS3 封装好的。好像 0x18 前后几位都属于 metadata ,具体哪个作用是啥就不知道了。转换过程就是读出 rtmp 的 metadata ,再按时间点插入到生成的 hls 流里。但眼下并没有兴趣自己来实现,有服务就直接用服务了。(目前看来难以找到合适的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1024 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 21:43 · PVG 05:43 · LAX 13:43 · JFK 16:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.