【问题标题】:How to make icecast relay the metadata of mp3 stream from ffmpeg?如何让icecast从ffmpeg中继mp3流的元数据?
【发布时间】:2021-01-08 08:27:38
【问题描述】:

我正在尝试使用以下命令中继互联网广播流:

ffmpeg -re -i 'http://internetradiourl'-vn -acodec copy -f tee -map 0:a "[f=mp3]icecast://source:pass@icecast:8000/a|[f=mp3]icecast://source:pass@icecast:8000/b"

输出流包含所有元数据:

Output #0, tee, to '[f=mp3]icecast://source:pass@icecast:8000/a|[f=mp3]icecast://source:pass@icecast:8000/b':
  Metadata:
    audiocodec      : MP3
    audiodevice     : IN  1+2 (Digigram LoLa280)
    audiodeviceid   : e08a462b-2944-4abf-894a-5d5e8649452d
    type            : event
    encoderMachineName: ERADIO
    hasAudio        : true
    hasCuePoints    : true
    hasKeyframes    : true
    hasVideo        : false
    source          : MediaProxy 4.4.13.6
    name            : ad
    ad_type         : endbreak
    cue_id          : b6c7ff39-2103-4442-bdc8-35f8ba2bb97d
    cue_time_duration: 44.365
    cue_time_start  : 1610035039552
    cue_title       : PSA - Danny - Parking (Jun 2020)
    encoder         : Lavf58.45.100
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 98304 kb/s
Stream mapping:
  Stream #0:1 -> #0:0 (copy)

但是如果客户端连接到 icecast 服务器,元数据就会丢失: ffprobe https://icecasturl/a

Input #0, mp3, from 'https://icecasturl/a':
  Metadata:
    icy-pub         : 0
    icy-metadata    : 1
    StreamTitle     :
  Duration: N/A, start: 0.000000, bitrate: 96 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 96 kb/s

如何配置 icecast 以便转发源流的所有元数据?

【问题讨论】:

  • 因为 ffmpeg 需要将 带外 元数据发送到 icecast。 ffmpeg 可能不支持。为什么你认为你需要 ffmpeg?
  • 只是碰巧我正在使用ffmpeg来执行此操作,所以没有特别的原因。除了使用 ffmpeg 之外,我怎样才能实现我想要做的事情?

标签: ffmpeg icecast


【解决方案1】:

请考虑使用 Icecast 直接中继。

相关文档在这里:https://icecast.org/docs/icecast-2.4.1/relaying.html

在这个用例中没有特别的理由使用 ffmpeg。

【讨论】:

  • 我无法让它工作。源可能不是icecast 或shoutcast 服务器。如果您可能想测试,源 URL 是 https://18323.live.streamtheworld.com:443/988_FM。我在icecast.xml 中有以下段落:``` 18323.live.streamtheworld.com</server> 443/988_FM/988relay-mount> 01 ```
  • 这是您第一次提到 TLS。这种形式的 Icecast 目前不支持中继 HTTPS。尽管该服务器响应 HTTP,所以只需使用端口 80
  • 好的,我让它与继电器一起工作。但它似乎有点参差不齐。我无法将多个客户端连接到挂载。因此,尽管&lt;max-listeners&gt; 中设置为 10,但一次只有一个客户端可以收听该流
  • 听起来像是一个不相关的问题。确保您没有达到带宽限制。
【解决方案2】:

如果您希望在带中转发元数据,那么您的初始请求必须包含标头:

Icy-MetaData: 1

然后服务器会将元数据插入到流中。您选择如何解析它取决于您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多