それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Raspiのomxplayer でRadikoのm3u8 を再生する(omxplayer でHTTPカスタムヘッダ追加)

何気なく、omxplayer のヘルプを読んでたら --avdict という項目を見つけたので調べてみた。

omxplayer

        --avdict 'opts'         Options passed to demuxer, e.g., 'rtsp_transport:tcp,...'

コレを使えば、カスタムヘッダを追加できるんじゃないかなと。 つまり、Raidkoの再生にffmpeg が要らなくなるじゃん?

omxplayer --avdict '  'X-MY-HEADER: my_header_key'

この形でカスタムヘッダを追加できる。 ffmpeg の --header 相当ですね。

ってことでやってみた

再生する手順

最初に、AuthTokeを持ってm3u8 にアクセスして、テンパラリのURLを生成してもらう。次にそのURLへリクエストを放り込む m3u8 内に記述されたm3u8 のネストをomxplayer は取得できないので、いったんcurl を経由する必要がある。

m3u8のURLを出してもらう

takuya@raspi3:~/omxplayer$ curl -H  'X-Radiko-AuthToken: xxxxxxxxxxxxxxxxxxx' 'https://radiko.jp/v2/api/ts/playlist.m3u8?station_id=MBS&ft=201711101530&to=201711101730'
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=52973,CODECS="mp4a.40.5"
https://radiko.jp/v2/api/ts/chunklist/8NwMph0V.m3u8

m3u8 のURLにomxplayer でアクセスする。

takuya@raspi3:~/omxplayer$ omxplayer -hw -o local --avdict 'X-Radiko-AuthToken: xxxxxxxxxxxxxxx' https://radiko.jp/v2/api/ts/chunklist/8NwMph0V.m3u8
Audio codec aac channels 2 samplerate 48000 bitspersample 16
Subtitle count: 0, state: off, index: 1, delay: 0
have a nice day ;)

これで再生できた。raspi 使う限りにおいてffmpeg でパイプする必要もなくなるしomxplayer だけで解決するのも嬉しい。

東京の放送が聞きたきゃmoperaやLTE経由すればいいし、大阪や関西の放送が聞きたければさくらVPSを経由すればいいし。既存のインフラでなんとかなるのが嬉しい。ちなみにYahooBBだとほとんど福岡にされるのはナゼなんだろう。便利だけどw

Raspberry Pi 3は優秀なRadikoプレーヤーになりそうです。

ただ、m3u8 の場合は スキップが効かないのでそのへんは今後の課題ですね。。。