【问题标题】:Value type of icy-metainticy-metaint 的值类型
【发布时间】:2018-05-03 11:12:47
【问题描述】:

研究这个问题我在标准中找不到这个变量的第一手描述。我实际上根本找不到 ICY 标准的正确描述。

似乎有些程序员认为这个值必须是有符号整数(例如here)。然而另一个example 说这个值可以是32768,它在有符号整数定义之外。

我了解“有符号整数”在不同情况下可能意味着 2 字节大小或 4 字节大小。那么以位为单位的值的大小是多少(如果有符号则包括符号)?我需要知道它,因为我编写 Verilog 代码并且不想将逻辑用于不需要的位。

附: “metaint”应该表示元信息区间,这个词中的int一定不能表示整数类型!

【问题讨论】:

    标签: audio-streaming shoutcast internet-radio


    【解决方案1】:

    icy-metaint是每个元数据块之间媒体流数据的字节数。

    假设我有一个互联网广播电台,icy-metaint 的值为8192。来自服务器的数据将如下所示:

    [8192 bytes audio] [metadata] [8192 bytes audio] [metadata] …
    

    此间隔的大小取决于服务器及其配置。您应该能够处理范围广泛的值。实际上,一个 32 位无符号整数就足够了。

    我个人见过高达 64KB 的元数据间隔。在奇怪的情况下看到他们更高,我不会感到惊讶。 8KB 和 16KB 很常见。另请注意,没有必要有这样的正常值......我也见过像 15,000 字节这样的东西。

    【讨论】:

    • 谢谢。你有没有看到这个值的任何文档化规范?我虽然在某处必须有 ICY 协议规范!
    • @Anonymous 实际上,没有。 SHOUTcast 是封闭源代码,没有规范。 Icecast 开发人员会告诉您查看他们的源代码。我告诉人们在这里查看我的 Stack Overflow 答案:stackoverflow.com/questions/4911062/… 出于您的目的,即使您拥有完美编写的 IETF 规范,这也无关紧要。现实情况是您需要存储超过 16 位的整数,并且没有正确配置的流将使用超过 32 位的元数据间隔。因此,您应该使用 32 位 int。
    猜你喜欢
    • 2015-03-15
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2018-08-26
    • 1970-01-01
    相关资源
    最近更新 更多