我在Web服务器上有几千个mp3文件,我需要将这些文件传输到在同一台服务器上运行的 Icecast 2.3.3 服务器实例。
每个文件都分配给一个或多个类别。共有7个类别。我希望每个类别一个装载。
我需要能够添加和删除文件到类别。添加/删除文件时,我需要以某种方式将文件合并到类别中或者对类别中的文件进行随机播放,之后我假设我需要重新启动安装。
我的问题是:我是否可以使用在Windows操作系统上作为服务运行的源应用程序,可以自动执行此类操作?
或者我可以编写一个程序来将这些文件混合并合并为一个大的“类别”mp3文件,但是想知道是否有另一种方式。
非常感谢任何建议。
答案 0 :(得分:0)
由于您只处理MP3文件,SHOUTcast sc_trans可能是您的不错选择。
http://wiki.winamp.com/wiki/SHOUTcast_DNAS_Transcoder_2
您可以将其配置为使用播放列表(可以通过编程方式生成),或让它读取目录并按原样运行文件。请注意,sc_trans不支持挂载点,因此您必须配置Icecast以接受SHOUTcast样式的连接。这有效,但需要您运行多个Icecast实例。如果您希望稍后在单个端口上流式传输所有内容,则可以设置一个主Icecast实例,该实例会转发其他流的所有流。
根据您的需要,还有很多其他选择。像SAM DJ这样的工具可以完全控制播放列表和广告,但根据您的需要可能会有些过分。
我通常会发现自己使用各种输入,因此我使用VLC进行播放,然后使用一些自定义软件将其编码并输出到流媒体服务器。这并不难做到,如果您在配置它时非常狡猾,甚至可以使用VLC为您进行编码。
答案 1 :(得分:0)
我知道它已经过时了,你很可能已经找到了解决方案。但是,可能会有更多的人遇到这个问题,所以当你决定为MP3文件编写一个自己的“shuffler”时,我会考虑一些注意事项。
我不会将纯随机用于手头的任务:连续多次播放的标题的可能性存在;你不想那样。
另外,你最有可能以某种方式对你的标题进行排序,比如说
Artist A - Title 1
Artist A - Title 2
...
Artist B - Title 1
...
你最有可能在洗牌时瞄准多样性,所以你不想连续两次扮演同一个艺术家。
我会将所有文件名读入索引为0...n
的数组中。
找到文件数量最多的艺术家,让数字为m
。
然后找到下一个素数p
,它是n
的共同素数,但大于m
。
在s
中仅在ONCE中生成伪随机数[0...n]
以找到起始歌曲;这避免了每次都播放相同的起始序列。
在循环中,播放歌曲s
,然后设置
s := (s + p) mod n
这可以保证播放所有歌曲,只播放一次,避免同一位艺术家的多首连续歌曲。
这里只有16首歌曲的小例子,大写字母是艺术家,小写字母歌曲。
Aa Ab Ac Ba Bb Bc Bd Ca C2 Da Db Dc Dd Ea Fa Fb
n 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
艺术家B
和E
的歌曲最多,因此
m := 4
您搜索到16 = 2 * 2 * 2 * 2
但是大于4
的素数联合素数,您会发现:
p := 5
您调用一次PRNG功能并获取11
,因此s = 11
是要播放的第一首歌曲(s = 0
)。然后循环:
Aa Ab Ac Ba Bb Bc Bd Ca Cb Da Db Dc Dd Ea Fa Fb
n 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
s 1 14 11 8 5 2 15 12 9 6 3 0 13 10 7 4
s是播放序列:
Dc Aa Bc Db Fb Bb Da Fa Ba Cb Ea Ac Ca Dd Ab Bd
没有艺术家重复,没有两首歌曲相继出现,多样化。