2024-05-21 00:27:31 发布
网友
有人成功地从远程广播流中读取SHOUTcast/Icecast元数据吗?在
有several libraries可以从本地MP3文件读取元数据,但似乎没有一个设计用于处理无线流(实际上是远程服务器上永不结束的MP3文件)。在
其他建议建议从mp3流的开始下载有限数量的比特,但这通常会导致一堆十六进制输出,而没有类似文本元数据的内容。在
有人知道更成功的解决方案吗?谢谢。在
由于mp3是一种专有格式,所以很难获得规范。This website给了一个很好的概述,我想。在
在普通的mp3文件中,ID3v1元数据标签位于文件的末尾,它构成了最后128个字节。这实际上是个糟糕的设计。ID3系统是作为mp3的后遗症添加的,所以我想没有其他方法可以不破坏向后兼容性。这意味着,如果无线电流像一个永无止境的mp3文件一样提供,那么在正常意义上就不可能有ID3标签。在
我会和电台的人商量一下,也许他们把ID3标签放在一个不标准的地方?在
#!/usr/bin/env python import urllib2 stream_url = 'http://pub1.di.fm/di_classictrance' request = urllib2.Request(stream_url) try: request.add_header('Icy-MetaData', 1) response = urllib2.urlopen(request) icy_metaint_header = response.headers.get('icy-metaint') if icy_metaint_header is not None: metaint = int(icy_metaint_header) read_buffer = metaint+255 content = response.read(read_buffer) title = content[metaint:].split("'")[1] print title except: print 'Error'
有关详细信息,请查看this link
我使用了一些@dbogdan的代码,并创建了一个库,用于每天超过4000个流。 它工作良好,稳定,并支持元数据,如歌曲标题,艺术家姓名,比特率和内容类型。在
你可以在 https://github.com/Dirble/streamscrobbler-python
由于mp3是一种专有格式,所以很难获得规范。This website给了一个很好的概述,我想。在
在普通的mp3文件中,ID3v1元数据标签位于文件的末尾,它构成了最后128个字节。这实际上是个糟糕的设计。ID3系统是作为mp3的后遗症添加的,所以我想没有其他方法可以不破坏向后兼容性。这意味着,如果无线电流像一个永无止境的mp3文件一样提供,那么在正常意义上就不可能有ID3标签。在
我会和电台的人商量一下,也许他们把ID3标签放在一个不标准的地方?在
有关详细信息,请查看this link
我使用了一些@dbogdan的代码,并创建了一个库,用于每天超过4000个流。 它工作良好,稳定,并支持元数据,如歌曲标题,艺术家姓名,比特率和内容类型。在
你可以在 https://github.com/Dirble/streamscrobbler-python
相关问题 更多 >
编程相关推荐