CSRAをモダンブラウザで聴く(強引な手法です)
皆さんはCSRAのコミュニテイFMをどうやって聴いていますか。CSRAは「日本全国のコミュニティFM放送をWebで楽しむ!」というキャッチフレーズなんですが、実はブラウザでは聴けない状況になっています。 CSRAからRTSP,MMSH,MMSTなどのWindows Media依存で配信されているコミュニティFMのサイマルはモダンブラウザでは聴けません。かつWindows 10のIE11の初期設定が変わり、設定を弄らないと聴けません。つまり現在はブラウザで聴く事はほぼ絶望的な状況です。
じゃあWindows Media Playerで気軽に聴けるかと云うと「配信URL」に何を入れればいいのという状況です。気軽に聴けるのはサードパーティのネットラジオ受信ソフトくらいです。CSRAさん、ここを目にしたら早くモダンな配信に切り替えてください。m(_ _)m
以下、プログラミングに興味のない方は読み捨てて下さい。
そこで、FFmpegを使ってFMうるまのサイマル配信をモダンブラウザに送り届ける方法を試してみました。
FFmpegを用意して以下のコマンドを叩くと、HTTPのリスン状態になります。
ffmpeg -fflags +discardcorrupt -analyzeduration 1M -probesize 1M -i "rtsp://hdv.nkansai.tv/fm-uruma" -vn -ac 2 -ar 44100 -ab 128k -acodec libvorbis -listen 1 -content_type "audio/ogg; codecs=opus" headers "Access-Control-Allow-Origin: *" -f ogg http://127.0.0.1:1234
※"Access-Control-Allow-Origin: *" これを指定しないとWeb audio APIで撥ねられます
次にFirefoxなどのモダンブラウザで「http://127.0.0.1:1234」と入力すると聴けます。ちゅんラヂ・プレイヤーでも、そのURLを入力することで聴けます。
上記が上手くいったら、Firefoxをお使いの人は以下のコマンドも打ってみて下さい。
ffmpeg -fflags +discardcorrupt -analyzeduration 1M -probesize 1M -i "rtsp://hdv.nkansai.tv/fm-uruma" -vn -ac 2 -ar 44100 -ab 128k -acodec libvorbis -listen 1 -content_type "audio/ogg; codecs=opus" -headers "Access-Control-Allow-Origin: *" -f ogg http://127.0.0.1:8888 | start firefox "http://7design.jp/tunein2player.html?autoplay&url=http://127.0.0.1:8888"
こででFirefoxが立ち上がり受信できる筈です。
技術的には再エンコードしてループバックIPアドレス(localhost)でモダンブラウザに流し込んでいます。ループバックでブラウザへ渡しますので公衆送信権には抵触いたしません。ローカルアプリからループバックを経由してブラウザに渡す手法は、UIがHTMLライクなローカルアプリを作成するお手軽な方法です。
このFFmpegの配信は簡易なものですので1対1の接続です。これは配信サーバーへ渡すことが目的の機能みたいです。私はこれをブラウザへの流し込みに利用した訳です。
「いちいち、FFmpegでコマンドなんか入れていられるかよ!」というツッコミがあったら仰る通りです。ハイ。このままじゃ実用的ではありません。(笑;
CSRAのローカルプロキシもどきをnode.jsで自分の為に作ってみたいなと思い、そのプロキシもどきが可能なのかをFFmpegで試しただけです。
お気付きの方もおられるかと思いますが、この手法はCSRAに限ったわけではありません。ローカルにある音楽ファイルがブラウザ非対応なコーデックであっても、ブラウザでメディアプレイヤーを作ろうと思えば作れていしまいます。
デザインの自由度が高いHTMLをUIとして利用する形態は増えそうです。node.js+ElectronやNW.jsなどがこの考え方の発展形の例です。ネイティブとWebの良いとこ取り、かつプラットホームに依存しないアプリが作成できるという意味で魅力的です
話が脱線してきましたので、これでおしまい。
参考文献:
FFmpeg Streaming Guide FFmpeg Documentation HTTP
| 固定リンク | コメント (0) | トラックバック (0)
最近のコメント