テレビでyoutubeを再生してリモコンで自由に停止や早送りしたい。RaspberryPiを使う。
例えばこういう動画があって
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)
テレビで
youtubeが再生される。
リモコンで操作できて
一時停止、早送り、巻き戻しが自在にできる。
これを作る。
まずはRasperryPi3 でyoutubeを再生する必要がある。スクリプトでできる。
↑ この人の記事はほんと素晴らしいのが多い。
スクリプトはこれ。
$ vim myomxpSH.sh
76行目と89行目がメイン処理。
76行目 … fifoで(コマンド入力を受け付ける)一時ファイルを作っている。
89行目 … fifo一時ファイル経由でコマンドを受け取るomxplayerプロセスをバックグラウンド(&)で作っている。
このスクリプトの使い方はカンタン。引数にyoutubeのアドレスを入れるだけ。
$ ./myomxpSH.sh "youtubeのアドレス"
これで、リモコンによって一時停止/早送り/巻き戻しができるomxplayer再生が可能になる。
あとは引数にとるyoutubeのアドレスを(つべサイトから)youtube-dl と jqを使って抽出する。
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 '
解像度の違い(?)なのか、httpsで始まるリンクが複数現れてしまう。一つだけあればいいので、httpsでgrepして、末尾1行だけtailで拾うことにする。
$ youtube-dl -J "$myURL" | jq -r '.formats| . | select( .ext | contains("mp4") ) | select( .width >= 640 ) | .url ' | grep http | tail -n 1
バッチリ。
これを最初に作ったスクリプトの引数にしてやれば再生される。
$ ./myomxpSH.sh $(youtube-dl -J "$myURL" | jq -r '.formats| .[] | select( .ext | contains("mp4") ) | select( .width >= 640 ) | .url ' | grep http | tail -n 1)
リモコンでちゃんと止まる(select button pressed)。
最高に使いやすい。