【问题标题】:Not able to play opus encoded data without oggmux and oggdemux没有 oggmux 和 oggdemux 无法播放 opus 编码数据
【发布时间】:2019-02-22 14:30:36
【问题描述】:

发送者管道

pulsesrc 名称=audio_cap 静音=0 !队列 !音频率!队列 !音频转换! audioresample 名称=aud_resample !音频/x-raw,rate=48000 !队列静默=true max-size-buffers=100 flush-on-eos=true !好运!队列 !应用程序同步=假异步=假

接收管道

appsrc caps="audio/x-opus" !音频/x-opus,channel-mapping-family=0 !队列 !作品!音频转换!音频重采样!音频/x-raw,格式=S16LE,速率=44100,通道=2!音频率!自动音频接收器

但是如果添加 oggmux 和 oggdemux 它将开始播放

Rx 工作流水线

appsrc caps="audio/x-opus" !音频/x-opus,channel-mapping-family=0 !队列 !难看!奥格多克斯!队列 !奥格德多克斯!作品!音频转换!音频重采样!音频/x-raw,格式=S16LE,速率=44100,通道=2!音频率!自动音频接收器

【问题讨论】:

  • 您还没有说明第一个“Rx 管道”究竟发生了什么......它是否因未协商或任何其他 Gst 错误而失败?仅供参考,您可能不需要 audiorate .. audioresample 正在处理采样率重采样,audiorate 用于根据时间戳“平滑”采样率,如果您不使用一些异国情调的音频接收器,您可能不需要最后一个 capsfilter
  • 它不会失败,也不会给出 Gstreamer 错误。在 Windows 和 mac 上,管道正在工作。在 Linux 上它无法播放音频
  • 我正在使用两个不同版本的 Gstreamer。在发件人 1.10.4 @Rx 1.14.4
  • 我无法在没有信息的情况下为您提供帮助.. 获取一些日志,检查管道是否停止或其他问题,检查至少本地 GStreamer 播放是否适用于类似管道,尝试播放一些作品文件保持 S16LE 瓶盖
  • 在你的工作管道中,你也有 opusparse。这可以是使它工作的元素,而不是 oggmux,oggdemux。这可能只是意味着您的管道中需要 oggparse。

标签: linux gstreamer multimedia opus gstreamer-1.0


【解决方案1】:

这是设计使然。需要向 Opus 解码器提供完整的 opus 数据包。

不幸的是,如果您只是将来自编码器的 RAW 数据包转换为字节流,则无法返回原始数据包边界。

所以你需要一个像 ogg 或 mpegts 这样的容器来重新创建原始数据包。

另请参阅https://www.rfc-editor.org/rfc/rfc6716 第 3 节

【讨论】:

    猜你喜欢
    • 2014-12-02
    • 2015-01-18
    • 2020-01-31
    • 2019-07-28
    • 1970-01-01
    • 2012-09-10
    • 2018-10-12
    • 2016-07-17
    • 1970-01-01
    相关资源
    最近更新 更多