min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

RaspberryPi 3 でリアルタイムにyoutubeを再生+テレビ視聴+リモコン操作(omxplayer + youtube-dl + fifo)

テレビでyoutubeを再生してリモコンで自由に停止や早送りしたい。RaspberryPiを使う。

 

例えばこういう動画があって

www.youtube.com

f:id:min117:20190622190509p:plain

 

RaspberryPi3 で再生コマンドを叩くと

$ myURL='https://www.youtube.com/watch?v=KcUmCJOBk8Q'

$  ./myomxpSH.sh $(youtube-dl -J "$myURL" | jq -r '.formats| .[] | select( .ext | contains("mp4") ) | select( .width >= 640 ) | .url ' | grep http | tail -n 1)

 

テレビで

f:id:min117:20190622191932j:plain

 

youtubeが再生される。

f:id:min117:20190622191936j:plain

 

リモコンで操作できて

f:id:min117:20190622192012j:plain

 

一時停止、早送り、巻き戻しが自在にできる。

f:id:min117:20190622192017j:plain

これを作る。

 

まずはRasperryPi3 でyoutubeを再生する必要がある。スクリプトでできる。

takuya-1st.hatenablog.jp

↑ この人の記事はほんと素晴らしいのが多い。

 

スクリプトはこれ。

$ vim myomxpSH.sh

f:id:min117:20190623224525p:plain

76行目89行目がメイン処理。

f:id:min117:20190623224558p:plain

76行目 … fifoで(コマンド入力を受け付ける)一時ファイルを作っている。

89行目 … fifo一時ファイル経由でコマンドを受け取るomxplayerプロセスをバックグラウンド(&)で作っている。

 

このスクリプトの使い方はカンタン。引数にyoutubeのアドレスを入れるだけ。

$ ./myomxpSH.sh "youtubeのアドレス"

min117.hatenablog.com

これで、リモコンによって一時停止/早送り/巻き戻しができるomxplayer再生が可能になる。

min117.hatenablog.com

min117.hatenablog.com

 

 

 

 

 

あとは引数にとるyoutubeのアドレスを(つべサイトから)youtube-dl と jqを使って抽出する。

takuya-1st.hatenablog.jp

 

URLを変数に入れて

 myURL='https://www.youtube.com/watch?v=KcUmCJOBk8Q'

 

それをyoutube-dlで読み込んで、jqでフィルタする。

youtube-dl -J "$myURL" | jq -r '.formats| . | select( .ext | contains("mp4") ) | select( .width >= 640 ) | .url '

f:id:min117:20190622121959p:plain

解像度の違い(?)なのか、httpsで始まるリンクが複数現れてしまう。一つだけあればいいので、httpsgrepして、末尾1行だけtailで拾うことにする。

 

$ youtube-dl -J "$myURL" | jq -r '.formats| . | select( .ext | contains("mp4") ) | select( .width >= 640 ) | .url ' | grep http | tail -n 1

f:id:min117:20190623230202p:plain

 

バッチリ。

 

これを最初に作ったスクリプトの引数にしてやれば再生される。

$ ./myomxpSH.sh $(youtube-dl -J "$myURL" | jq -r '.formats| .[] | select( .ext | contains("mp4") ) | select( .width >= 640 ) | .url ' | grep http | tail -n 1)

f:id:min117:20190622124010p:plain

リモコンでちゃんと止まる(select button pressed)。

f:id:min117:20190622192017j:plain

最高に使いやすい。

 

リアルタイム配信の映像(例えばustreamISS映像)でも同じことできるのか?いずれ試してみる。

min117.hatenablog.com

min117.hatenablog.com

www.raspberrypi.com