ffmpeg でhttpを開くときHEADERが送信できる
ffmpeg ではHTTPヘッダを送信できる
ffmpeg -i http://example.com/a.m3u8 -headers 'Authentication: XXXXX'
もちろん ffplay でも同じように
ffplay -i http://example.com/a.m3u8 -headers 'Authentication: XXXXX'
mplayer 側でも対応している
mplayer でもhttp-header への対応は完了してる。
mplayer -http-header-fields 'X-Radiko-AuthToken: xxxx'
radikoの場合
radikoは旧のAPIがまだ生きている(たぶん、Google Home などの旧ハードウェアを切り捨てないため)
そのため、次のように掛けば再生ができる。
mplayer の場合
token=XXXXX channel=MBS URL='https://radiko.jp/v2/api/ts/playlist.m3u8?station_id={$channel}&l=15&ft=20200419210000&to=20200419211500' mplayer -http-header-fields 'X-Radiko-AuthToken: {$token}' $URL
何も考えなくて良くなったのは本当に楽。
mplayerを使うとコンソールからボリュームの上げ下げやスキップができるのでタイムフリーを聞くときに便利
ffplay の場合
token=XXXXX channel=MBS URL='http://f-radiko.smartstream.ne.jp/{$channel}/_definst_/simul-stream.stream/playlist.m3u8' ffplay -i $URL -nodisp -vn -sn -headers 'X-Radiko-AuthToken: {$token}'"
ffplay のほうがキャッシュの扱いがきれいでバッファリングをうまく制御してくれますね。
token の取得
探せば山ほどあるので割愛。
http header 送信できる
ffmpeg / mplayer は http ヘッダを直接送信できるので認証をうまく制御できるので各種プレイリストの再生が捗る。