作者SmallBeeWayn (喵喵叫的蜜蜂猫职方法)
看板ShineRadio
标题[认真] 透过ShineRadio进行网路广播使用fb2k之相容性探讨
时间Sat Dec 19 02:15:53 2009
透过ShineRadio进行网路广播使用fb2k之相容性探讨
The compatibility of Internet radio via ShineRadio using fb2k
SmallBeeWayn, published at PTT ShineRadio 12/19/2009
============================================================
Abstract
Shine Radio[1],一个开放版友申请,类似於日本livedoor[2]一般的广播主机,
这一类主机提供充分的频宽提供给分享者与聆听者,来解决分享者的自有上传频宽不足
或是与聆听者之间网路频宽或是稳定性不足的问题,藉此降低门槛(对於分享者)并提昇
品质(对於聆听者)。
在网路广播的传播过程中,除了音乐本身需要再编码传送之外,音乐的背景资讯通
常也会被传输,虽然不会影响聆听享受,但是有时候总是会想要知道现在正在播放什麽
歌曲的时候。然而,相对於串流规格的单纯,串流资讯的编码反而复杂的多了。
本文以Shine Radio为主要测试对象,播放源及聆听器则都使用foobar2000[3],编
码方式则包含Mp3、Aac、Ogg,串流编码器则选用edcast及foo_vorbis。
Introduce
一个网路电台的播放通常包含几个主要环节
1.播放软体: 原始音乐解码的作业
2.串流编码: 将解码後的音乐再编码为音乐串流
3.中继主机: 将串流储存复制然後发送到多个目标,以及连线管理等
4.接收缓存: 将串流接收之後储存并等待解码
5.解码播放: 将串流解为音乐并播放
当然,在这之中串流的资讯也必须一并编码传送。除了包含Sample Rate,Channel
,Codec等这些必须让接收端知道才能够正确解码的资讯外,歌曲标题等也在传输的项
目之内。然而,多数的网路串流格式都是设计给英语系国家(或严格的说, 英语国家)
,因此,编码资讯内多不含编码的Charset,也就是语言设定。这对於使用单一语言而
言或许无妨,然而现实则是,除了音源本身资讯所使用的Tag编码可能不尽相同之外,
发送端;中继端;接收端也可能使用了互不相容的预设编码。
而对於以繁体中文(特指台湾)为主要语言,又经常聆听日文歌曲的听众与播放者
而言,可说又是一个灾难。当年中华民国政府在设计Big5字码时,思虑不周[4],再
加上主流作业系统Windows开发者微软的不作为[5]。这样的结果,只要整个广播的流
程中有一个小段使用Big5作业,在没有安装UAO[6]的情况下,日文假名必然的将会流
失。(有时装了也没用,若软体没有使用被UAO改过的c_950.nls[7]的时候)
Overview
foobar2000
其实原本只是一个普通的播放软体,在电台应用上通常作为客户端使用
然而,由於edcast及foo_request_http[8],以及其免费、高稳定性、可扩充
性,反而跃升成为在个人网路广播电台领域中有相当占有率的一种播放软体。
另外,fb2k也是少数完全以Unicode方式运作的音乐播放软体
fb2k目前已经发展到1.0beta, 本文所使用的软体版本则是0.9.6.9。
edcast[9]
早先名叫oddcast,是音乐串流编码的软体,有Winamp,foobar内嵌版本
以及直接抓取系统声音的Standalone版。支援将音源编码成Lame Mp3,Aac+
,OggVorbis以及OggFLAC。输出则支援Icecast2及Shoutcast。此外还支援麦
克风音源、音乐文字资讯格式设定、多输出等功能,可说是相当的完善。
然而, 不知是哪一个环节的问题,edcast并不是运作在Unicode底下,
因此其metadata存在有乱码问题(如果没装UAO的话),要解决这个问题的唯
一方法是安装UAO。
这里使用的版本为3.1.21 for foobar2000
foo_vorbisstreamer[10]
一个foobar only的串流编码软体,早先名为edcast Vorbis Streamer[11]
,事实上也就是edcast精简过後的版本,删减了oggvorbis以外的编码、麦克
风支援、自订metadata,并改用内嵌设定画面。但是Vorbis Streamer解决了
edcast 的编码问题,并不会有metadata乱掉的问题。
本文使用最新的1.1版
Icecast2[12]
主流广播中继软体有两个:Shoutcast[13]及Icecast2。
Shoutcast是由Nullsoft开发,主要用於自家的Winamp[14]软体上,因为
已经很久没有接触Nullsoft的东西了,就不在本文多谈。
Icecast2相对来说则比较没有特定的服务限制, 使用者也相对较众,小至
个人广播站,大至如livedoor等大站都在使用[15]。Icecast2功能相当完善,
不过其内部设定已经超过,在此不加详谈。
本文之受测对象(ShineRadio)使用Icecast 2.3.2,预设编码Big5
Lame Mp3
虽然已经过了非常多年,Mp3编码格式仍然还是主流中的主流,由於可以
说「能放音乐的软体一定都支援Mp3」,至今地位无可动摇,虽然它并不是一
优秀的广播用串流音乐格式。其中Lame Mp3编码技术更是大大延长Mp3格式的
寿命
Mp3的Tag允许使用任何编码格式(Ansi,UTF-8,Unicode),而在网路串流
这个领域,似乎只有在使用Ansi,这或许是因为相容性问题或是Mp3串流格式
内部的问题。
Aac
虽然号称要取代Mp3,然而因为专利以及很多各种原因,至今仍属少数。
事实上在本文的测试中,甚至没有办法顺利的编码输出。不过因为苹果公司
的支持,Aac串流在国外已经有渐起之势了。
OGG Vorbis
OGG是属於Xiph.Org Foundation[16]旗下的一个分支项目,是属於有损
音乐压缩格式的范畴。几个重要的特色是低流率下的高品质(远超越Mp3,一般
也认为优於wma及aac),支援多声道,以及最重要的,资讯强制使用UTF-8编
码,并且当使用於网路电台时,将可以完整送出全部音乐资讯。
这些优势使得一个设计完善的服务器及播放器(如fb2k),能够完全无损
的将音乐资讯传送。但也因为OGG这样的特殊设计(以及没有商业利益)的关
系,主流的播放软体(jPhone, Media Blayer)几乎都无法正常播放OGG,导致
OGG至今在广播串流格式持续处於极少使用者的状况
Measure
播放软体及接收软体固定为fb2k,分别安装在两台电脑,广播主机则一律透过
ShineRadio。唯一的改变参数是编码软体,以及之後安装UAO。
测试的项目包含:
1.foo_vorbisstreamer(OGG Vorbis)
2.edcast(Mp3)
3.edcast(Aac)
4.edcast(Mp3) with UAO
(1~3都是在没装UAO的状况)
观察的项目包含在
http://s-radio.whyza.net:8000/ 上的显示状况
以及播放端的显示状况
Summary
1.在SR的电台表上, 完全无法显示歌名中的UTF-8字元
但是在接收端则正常显示
另外, foo_vorbisstreamer不支援电台资讯打中文,一打fb2k就当
2.SR电台表上日文字呈现乱码,接收端则是没有字
电台资讯的中文字则能显示无虞
3.无法建立连线....
顺便测试丢给livedoor, 可以正常连线, 但是流率跳到240kbps, 就关掉了
4.SR电台表上完全正常了,接收端则一片乱码
改用RadioBox[17]之後则可以正常接收资讯
Conclusion
Ogg串流的优势就在於就算中间编码出了什麽问题,也能确认接收端那边收到
原始完整的资料,在本测试中也确实的印证了这一点。至於中文电台资讯的问题
,虽然没有详细研究,但问题出在编码DSP而非中间端子的可能性比较高些
由於Ogg使用UTF-8资讯,或许是因为SR预设强制使用Big5的关系而导致解码
错误。
相对而言,Mp3+Big5仍然是最稳定的方案,可以完整的支援电台资讯页。
客户端方面,fb2k会无法显示透过UAO处理的Big5字并不令人意外,主要还是因为
fb2k使用了严格的Tag标准,需要额外的处理,细节就得另请高就了(我忘了)
Aac就很神奇了, 可能编码器跟伺服器设定都有问题,Icecast早从2.2.0就开始支
援Aac了
Reference
1.PTT-视听剧场-Radio_Club-Web_Radio-ShineRadio
2.
http://ladio.net/
3.
http://www.foobar2000.org/
4.
http://goo.gl/c8DF
5.同上, 见"微软 Code Page 950"一段
6.
http://zh.wikipedia.org/zh-tw/Unicode%E8%A3%9C%E5%AE%8C%E8%A8%88%E7%95%AB
7.%WINDOW%\System32\c_950.nls, x64 OS 则在 %WINDOW%\SysWOW64 下有一份同样
内容的副本
8.
http://nurugunyo.hp.infoseek.co.jp/foobar.html
9.
http://www.oddsock.org/tools/edcast/
10.
http://goo.gl/hUwS
11.同上, Post #9
12.
http://www.icecast.org/
13.
http://www.shoutcast.com/
14.
http://www.winamp.com
15.
http://std2.ladio.net:8150/ , 虽然拿掉预设网页, 但可以看到是Icecast
16.
http://en.wikipedia.org/wiki/Xiph.Org_Foundation
17.
http://holanet.pixnet.net/blog/post/350066
=======================
对不起...最近Paper看太多了....
不想看我闲扯的从Measure看起就够了
--
选择题: 请问 凉宫春日的忧郁 TV 第四集下一集是第几集?
1.第五集 2.第13集 3.第三集 4.第11集
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.180.163
※ SmallBeeWayn:转录至看板 WebRadio 12/19 02:16
※ SmallBeeWayn:转录至看板 C_Chat 12/19 02:26
1F:推 lightwee:好专业=A= 12/19 12:24
2F:推 LovError:超专业的 真应该聘请到技术部门... 12/19 15:38
3F:推 tingyun60426:ㄎㄎ 又来一篇专业文 = = 12/19 18:55
4F:推 Biboy:这篇是paper吧... 12/20 15:30