主に自分用に、4つの不安定なソース(同じものをブロードキャストする)から高品質のmp3リレーを作成する必要がありました。
たとえば、KissFMを考えてみましょう。 定期的に減衰する4つのソースがあります(3つのサウンドストリームは同様に良好で、1つはさらに悪い)。
現時点では、実装は次のとおりです。
#!/bin/sh 
      
        
        
        
      
     
      
        
        
        
      
     #  ,  . kisswget  symlink wget,        
      
        
        
        
      
     pkill ices 
      
        
        
        
      
     pkill kisswget 
      
        
        
        
      
     
      
        
        
        
      
     # fifo ( -    ,    ) 
      
        
        
        
      
     rm /home/random2/ices/kiss 
      
        
        
        
      
     
      
        
        
        
      
     # fifo 
      
        
        
        
      
     mkfifo /home/random2/ices/kiss 
      
        
        
        
      
     # ices,     /home/random2/ices/kiss,    stream  icecast 
      
        
        
        
      
     ices -c /home/random2/ices/ices.conf 
      
        
        
        
      
     
      
        
        
        
      
     #    :     wget (kisswget)  /home/random2/ices/kiss 
      
        
        
        
      
     #   ""      ,   403/404,  
      
        
        
        
      
     while : 
      
        
        
        
      
     do 
      
        
        
        
      
     /home/random2/ices/kisswget htt://195.138.217.65:8000/kissfm -O /home/random2/ices/kiss 
      
        
        
        
      
     /home/random2/ices/kisswget htt://media.wnet.ua:8000/kissfm -O /home/random2/ices/kiss 
      
        
        
        
      
     /home/random2/ices/kisswget htt://217.20.164.164:8000/kissfm -O /home/random2/ices/kiss 
      
        
        
        
      
     done
      
      私が現時点で見ている欠点:
- wget
- 4番目のストリーム(品質よりも悪いストリーム)はありません。 最初の3つのストリームが使用できず、4番目のストリームが再生される場合、最初の3つのストリームの1つが「表示」されると、wgetは自動的にそれに切り替わります。 同時に、複雑な自転車は必要ありません。
- 現在の曲のタイトルはめちゃくちゃではありません。この実装では、別のスクリプトのみが表示されます。このスクリプトは、どこかから情報を取得し、メタデータとしてicecastをスリップします
ちょっとした助け: 「FIFO」(先入れ先出し)は、2つの独立したプロセスがそれを操作できるようにする特別なタイプのファイルです。 1つのプロセスは書き込み用にfifoファイルを開き、別のプロセスは読み取り用にファイルを開きます。その後、データはそのファイルを「フロート」します。 mkfifoコマンドによって作成された* nixシステム。