歡迎您光臨本站 註冊首頁

用linux建立自己的mp3廣播站

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
摘要
  本文將介紹用linux下的開放源碼工具icecast和ices創建mp3廣播的方法.(2002-06-24 12:47:28)

--------------------------------------------------------------------------------
By 處處


概述:本文將介紹用linux下的開放源碼工具icecast和ices創建mp3廣播的方法.

原理:

  icecast是一個基於Mpeg III技術的Internet廣播系統,同shoutcast等商業軟體相比具有以下特點:

Icecast是一個純粹的OpenSource軟體;
不需要運行自己的目錄伺服器;
佔用更少的系統資源;
  我們可以在伺服器上運行自己的流伺服器——icecast,使用ices提供流源,客戶端則可以使用最常用的winamp.

試驗環境:

  伺服器平台:RedHat 7.0

  流伺服器:icecast

  流源:ices

  mp3編碼工具:lame

步驟:

1. 獲得相關軟體

  流伺服器icecast:http://www.icecast.org/releases/icecast-1.3.10-1.i386.rpm

  流源工具ices:http://www.icecast.org/releases/ices-0.0.1.beta5.tar.gz

  編碼工具lame:http://home.elka.pw.edu.pl/~dmierzej/linux/lame/lame-3.87beta-1.i386.rpm

  lame庫:http://home.elka.pw.edu.pl/~dmierzej/linux/lame/lame-devel-3.87beta-1.i386.rpm

說明:

  A. 通常可以使用liveice、shout等軟體為流伺服器提供流(即作為流源),但是我在使用的過程中發現ices要穩定一些,雖然還是個beta版的.

  B. 通常你的每個mp3文件不可能具有同樣屬性,此時廣播過程就會出現一些怪現象,比如聲音斷斷續續、有噪音等等,所以我們必須使用mp3編碼工具lame重新對其進行編碼,來生成屬性一致的mp3文件.

2. 安裝icecase

  使用以下命令安裝icecast:



rpm –ivh icecast-1.3.10-1.i386.rpm

3. 安裝ices

  使用以下命令安裝ices:

# tar xvzf ices-0.0.1.beta5.tar.gz

  會在當前目錄下生成ices-0.0.1.beta5目錄,用cd命令進入該目錄

# cd ices-0.0.1.beta5

  然後執行:

# ./configure
# make
# make install

  編譯好的文件預設被安裝在/usr/local/icecast目錄下

4. 安裝lame

  執行以下命令來安裝lame mp3編碼工具,該工具用來重新對mp3文件進行編碼,以產生屬性一致的mp3文件.

rpm –ivh lame-3.87beta-1.i386.rpm
rpm –ivh lame-devel-3.87beta-1.i386.rpm

5. 配置icecast

  icecast的主要配置文件是/etc/icecast.conf,有很多配置選項,但是其中的大多數只要採用預設配置即可,部分選項意義說明如下:

  Port:定義icecast服務綁定的埠,只設置一個即可,通常使用8000埠.

  encoder_password:流源連接時的密碼,使用ices為icecast提供流時ices必須提供提供這個密碼,出於安全性考慮可以設置一個較為複雜的密碼.

  admin_password:可以通過telnet登錄icecast進行遠程管理,這個密碼就是登錄icecast時必須輸入的密碼.

  oper_password:通過telnet登錄icecast執行限制性命令時的密碼.

  max_clients:同一時間內允許連接到流伺服器的最大客戶數目.

  max_sources:允許同時廣播的最大流源數目,流源和流伺服器可以位於不同的機器上,並且可以將多個流源傳輸到同一個流伺服器進行廣播.

  max_admins:可以同時登錄icecast進行遠程管理的連接數目.

  Logfile:設置日誌文件的位置.

  Hostname:設置icecast綁定的ip地址,預設綁定到所有ip地址.

  server_name:指定icecast伺服器的主機名或者是ip地址.



  client_timeout:設置當無流源時,伺服器斷開已連接客戶的超時時間.

  stats_log:設置記錄icecast統計數據的日誌文件.

  stats_time:設置stats_log日誌文件的更新周期.

  max_clients_per_source:設置可以同時連接到同一流源的最大客戶數目.

  reverse_lookups:設置是否對可以連接進行反向DNS解析,為0時禁止反向DNS解析,為1時啟用反向dns解析.

  Location:設置icecast伺服器的地理位置,設置與否並不重要.

  rp_email:設置icecast伺服器管理員的郵件地址.

  Throttle:icecast伺服器可以使用的帶寬閥值,如果達到這一閥值,新的客戶連接將被拒絕,單位是兆/秒.

  Logfiledebuglevel:定義日誌的信息詳細程度.

  server_url:定義icecast伺服器的RUL

  以下是我的配置文件,僅供參考:

#icecast.conf
location Yuxi Yunnan China
rp_email bye2000@yxtc.edu.cn
server_url http://www.yxtc.edu.cn/
max_clients 900
max_clients_per_source 900
max_sources 10
max_admins 5
throttle 10.0
mount_fallback 1
encoder_password secret
admin_password secret
oper_password secret
port 8000
force_servername 0
logfile icecast.log
accessfile access.log
usagefile usage.log
logfiledebuglevel 0
consoledebuglevel 0
reverse_lookups 0
console_mode 0
client_timeout 30
kick_clients 0
staticdir /usr/share/icecast/static
templatedir /usr/share/icecast/templates
logdir /var/log/icecast
stats_log stats.log
statshtml_log stats.html
stats_time 60
kick_relays 10
transparent_proxy 0
acl_policy 1

6. 啟動icecast服務

  執行以下腳本啟動icecast服務:

# /etc/rc.d/init.d/icecast start

7. 對所有mp3文件進行重新編碼



  採用lame對mp3文件進行重新編碼,從而生成屬性一致的mp3文件.

  這要用到Lame命令的以下參數:

  --mp3input:輸入文件為mp3文件

  -m s:指定所有幀均為立體聲

  -b 56:指定新生成mp3文件的波特率,這裡指定為56 kbps,單位是kbps

  --resample 24:指定新生成mp3文件的採樣頻率,這裡指定為24 KHZ,單位是KHZ

  下面是一個lame的使用實例:

lame --mp3input -m s -b 56 --resample 24 old.mp3 new.mp3

8. 生成播放列表

  可以用以下文件生成播放列表:

# find / -name 『*.mp3』 > play_list_file

  將其中的play_list_file改成你的播放列表文件名.

  以下是一個播放列表文件示例:

#play_list example
/data/mp3/PowerStation/byemylove/1.mp3
/data/mp3/PowerStation/byemylove/10.mp3
/data/mp3/PowerStation/byemylove/11.mp3
/data/mp3/PowerStation/byemylove/2.mp3
/data/mp3/PowerStation/byemylove/3.mp3
/data/mp3/PowerStation/byemylove/4.mp3
/data/mp3/PowerStation/byemylove/5.mp3
/data/mp3/PowerStation/byemylove/6.mp3

  可以看出,只要包含mp3文件的完整路徑和文件名即可.

9. 發布流

  ices可以使用基於xml的配置文件,也可以使用帶選項的命令,這裡我們使用後者,常用的命令選項有:

  -B:指定ices以後台程序方式運行

  -b:指定使用的波特率

  -d:對流的描述

  -n:設置廣播站的名稱

  -g:廣播音樂的類型

  -h:流伺服器ip地址

  -p:流伺服器監聽埠

  -P:連接流伺服器的密碼

  -r:設置隨機播放歌曲

  -S:指定播放列表類型,通常使用builtin

  -U:指定流伺服器的URL

  -F:指定播放列表文件



  我的例子:

/usr/local/icecast/bin/ices –B –b 56 –d MUSIC
–n 「TOM Radio」 –g music –h localhost
–p 8000 –P secrue –r –S builtin –U
http://www.yxtc.edu.cn -F /etc/icecast/list

10. 接收廣播

  可以用類似以下的方法讓用戶接收廣播:

  建立一個擴展名為m3u的文件,比如我的文件是tom.m3u,該文件包含以下內容:

http://www.yxtc.edu.cn:8000/

  然後在主頁上建立該文件的超鏈接,這樣客戶一旦點擊該連接,就會啟動winamp、realplay等mp3播放器接收廣播了.

  推薦使用winamp接收廣播.

  好了,大功告成了,坐下來泡杯咖啡慢慢欣賞你的mp3廣播吧.

11. 補充說明:

  我寫了一個perl腳本,該腳本會自動搜索系統中所有的mp3文件,然後將非56K波特率和24KHZ採樣頻率的mp3文件用lame轉換成56K波特率和24KHZ採樣頻率的mp3文件,完成轉換后自動生成播放列表.

  使用方法:

./list_gen list_file

  必須先用touch 命令建立該列表文件

  該腳本要求你的系統安裝lame工具.

  該腳本源碼如下,你也可以從這裡下載:

#!/usr/bin/perl

`rm -f /tmp/temp.mp3`;
if ( ! $ARGV[0] ) {
print " Usage: ./list_gen list_file_name ";
print "You must create the file first! ";
exit(0);
}
$files = `find / -name '*.mp3'`;
@file = split(/ /,$files);
$num = @file;
for ($i=0; $i<=$num-1; $i ) {
$file_info=`file $file[$i]`;
if ( $file_info=~/MP3/) {
@file_type=split(/s /,$file_info);
if ( $file_type[2]=~/56/ ){
}else{
`lame --mp3input -m s -b 56 --resample 24 $file[$i] /tmp/temp.mp3`;
`mv -f /tmp/temp.mp3 $file[$i]`;
}
push (@list,"$file[$i] ");


}
}

if ( -e $ARGV[0] ) {
$num = @list;
open(LIST,">$ARGV[0]");
for ( $i=0; $i<=$num; $i ) {
print LIST "$list[$i]";
}
close(LIST);
print " play list create OK, good luck!!! ";
}else{
print " I can't find file you specified! ";
print "You must create play list file first! ";

}



【責任編輯:風過留楓】
【關閉窗口】


[火星人 ] 用linux建立自己的mp3廣播站已經有828次圍觀

http://coctec.com/docs/linux/show-post-56490.html