min117の日記

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

RaspberryPi3 に streamlink 突っ込んで twitch.tv の年齢制限を気にせず受信する(macOSでも)

streamlink素晴らしい

streamlinkでrecfsusb2からのb25配信をストリーム+broadcast(udpとか)できないのか?と思って調べてたら streamlink自体の便利さに感動したので記録。

wiki.archlinux.jp

wiki.archlinux.jp

 

前に母艦fedoraにはstreamlinkインストールした。

動く。

再生はできるが、母艦fedoraは(モニタのついてない)サーバマシンなので、ここで再生しても視聴できない。

 

Pi3に入れねばならない。

radiko対応もしたのか。これも後日試す。

 

pi3にインストールする。

$ pip3 install --upgrade --user streamlink

 

ついでにmpv なるソフトウェアも入れとく。

$ sudo apt install mpv

 

再生。

$ streamlink -p vlc https://www.twitch.tv/woohankyung best

-p は program指定オプションらしい。省略するとvlcが選ばれる。

best の部分は 480pとかにすれば少し画質落として受信できる。

 

こう。

雄も雌も自己顕示欲は世界共通らしいな。

 

ハイビジョン.tsを再生できないか?試す。標準入力からパイプで標準出力に渡す。

$ recfsusb2n --b25 24 - - | streamlink -

ダメなんか。

 

vlcだと再生できる。

$ recfsusb2n --b25 24 - - | vlc -

cvlcでもOK

$ recfsusb2n --b25 24 - - | cvlc -

recfsusb をリアルタイム視聴しながらでもstreamlink動画も(一応)動く

これがpi3の調停消費電力でできちゃうんだから、TVなんぞ要らんのだよな。

 

streamlinkめっちゃ使いやすいな。macOSにも入れておこう

$ pip3 install --user streamlink

あれ。入れたのに streamlink コマンドが効かない。

 

brewでインストールし直す。

$ brew install streamlink

 

streamlink の使い方 | ニコラボ

nico-lab.net

 

streamlinkはインストールできたけど、

$ recfsusb2n --b25 24 - - | vlc -

とやりたいところ、ハイプ先になるmacOSvlcの場所が分からん。cvlcコマンドは動くから入ってるのは間違いないんだが。

 

調べたらここっぽい。

$ ls /Applications/VLC.app/Contents/MacOS/

 

おっしゃ動いた。

$ streamlink -p  /Applications/VLC.app/Contents/MacOS/VLC https://www.twitch.tv/vivi0z1 480p

 

こりゃいい。かなり応用効くぞ。

 

 

 

 

 

その買うを、もっとハッピーに。|ハピタス

Pi3(Pi4)の h264_omx でts動画をmp4にハードウェアエンコード爆速(HandBrakeCLIより速い) ffmpeg -i test4.ts -c:v h264_omx -y -b:v 4M test4omx4Pi4.mp4

 

結論

ffmpeg -i test4.ts -c:v h264_omx -y -b:v 4M test4omx4Pi4.mp4

でPiのomxplayerの?ハードウェアエンコード h264_omxを使った高速ts→mp4変換ができた。オプションとして-b:v 4M を指定すると高画質になる。

 

経緯

ffmpegでrecfsusbのTV画像をパイプしてhttpなりで配信できないか?を調べてたら、ラズパイのffmpegでハードウェアエンコードできる感じの記事。

denor.jp

recfsusb2n が認識しているdeviceは /dev/bus/usb/001/004 だったから

それを v4l2-ctl コマンドに食わせると

$ v4l2-ctl -d /dev/bus/usb/001/004

バイスの認識はダメみたいけど、ffmpegエンコードには別に関係ないか。

 

これ。h264_omx オプションでラズパイの omxplayerで?ハードウェアエンコード?できるっぽい。

ts録画して…

こうか?

$ ffmpeg -i test4.ts -c:v h264_omx -y test4omx.mp4

なんかエラーだな…

変換前がコレで

変換後がこう。変換自体はできてる!

tsがmp4に(すごい速度で)変換できた。HandBrakeCLIより速い?高解像度化のオプションないか調べる。

 

signal-flag-z.blogspot.com

-b:vオプションで高解像度化できる!

$ ffmpeg -i test4.ts -c:v h264_omx -y -b:v 1000k test4omx2.mp4

だいぶマシになった!

HD映像(ハイビジョン?)の時は -b:vに4m を指定せよとある。

$ ffmpeg -i test4.ts -c:v h264_omx -y -b:v 4M test4omx3.mp4

こりゃ素晴らしい。

サイズは15MB→4MBだから約4分の1になる。

 

母艦fedoraのHandBrakeCLIで同じこと(ts→mp4)してみよう。手元でいつもやってるやつだ。

$ HandBrakeCLI -i test4.ts -o test4omx4HBCLI.mp4 -Z "Apple 1080p30 Surround"

体感だとffmpegomxハードウェアエンコード)に比べて倍の時間かかってる気がする。

さすがにHandBrakeは画質キレイ?いや、そんな違わんでしょ。

これでサイズもffmpeg(h264_omxエンコード)のほうが小さい!

てことは、ffmpeg(h264_omxエンコード)を使えば

・ラズパイの筐体で(電力消費が極小)

・HandBrakeCLIよりも速く

エンコード後サイズも小さく

できる!素晴らしすぎる。

 

てことは、普段はVPNサーバにしてて、GPUを持て余してるラズパイ4でも同じことffmpeg(h264_omxエンコード)できるのか!?

$ ffmpeg -i test4.ts -c:v h264_omx -y -b:v 4M test4omx4Pi4.mp4

できちゃった!画質もバッチリ。

上がffmpeg。下はHandBrakeCLI。見た目違い分からんくらいキレイ。これで日々撮り溜めたニュース.tsのエンコードが倍速になる。

 

試しに昨日のニュース.ts(286MB)をエンコードさせてみる。

ちょっとエラー吐くが無視。

実測の1.4倍で変換できてる!?らしい。こりゃ捗る。

わずか2分で286MBのエンコードが終了!

画質ばっちり。サイズも元の半分近くに圧縮された。

 

これで一括変換できるわ。

変換開始。一気に温度上がった。

70度超えはちょっと厳しいか。


ちなみに同じh264_omxエンコードでも、V4L2M2Mエンコードは動かんかった。

forums.raspberrypi.com

qiita.com


あとはtsに乗ってくる犬Hの副音声が邪魔。どうやって除去するか調べる。

https://memo.brdr.jp/post/107390084331/ffmpeg

memo.brdr.jp

 

 

macOSでファイルをPATH直接入力で開くには command + shift + g で(VLCでも使える)

常にCUI環境なので、GUIからファイルを開いてくのがダルい。

 

例えばVLC

 

遠くのサーバにあるファイル(VolumesにマウントしてPATHは分かってる)を開きたい時は

 

「ファイルを開く」画面(要はfinder)で command + shift + g

直接PATH入力で開くことができる。便利。

 

 

 

 

 

その買うを、もっとハッピーに。|ハピタス

ビットコインに交換できる ← ハピタス + Expedia のコンボで航空券チケット代金の12%がポイントバック

bitFlyerに貯める

 

ハピタスのポイントbitFlyerビットコインに交換できる。手数料高いけど。

min117.hatenablog.com

チミチミやってると結構貯まる。ばかにならない。

 

Expediaの予約で12%バック。

年末の飛行機、片道10,000円とすると、1,200バックされる計算だ。

 

バックされた。いや正確には、バックされる予定と言っていいか。

年末の帰省後、90〜410日以内に付与されるらしい。毎回の感覚では、3ヶ月も待たずに付与された気がする。

 

その買うを、もっとハッピーに。|ハピタス

 

本日2022/09/17(土)

ビットコインは280万円前後

年初は760万円くらいだったから、半額以下になっている。

アメリカの高インフレにより不景気になるのはほぼ確実で値が落ちている。

 

ドル円は142.92円。

安倍晋三がアベクソノミクスで金融をジャブジャブにしたせいで、中央銀行金利の調整機能を失って、ぜんぶ為替に跳ね返ってくる。

 

たった30分で3円も動く。

 

急激な円安の加速で物価が上昇。庶民の生活を直撃。

https://www.youtube.com/results?search_query=%E7%89%A9%E4%BE%A1%E9%AB%98%E3%80%80%E5%86%86%E5%AE%89

 

必死のレートチェック+為替介入の脅しで円高戻そうとしてるが、

そもそも為替介入で円高誘導するくらいなら金融緩和による円安政策を止めればいいわけで、それができないのは、アベノミクス国債買いすぎてBSが500兆円に膨れ上がったせい

 

日銀が1%でも利上げすれば、利払いだけで5兆円がふっとんで予算が破綻するから、日本はもう動くに動けない。

 

ほんとアベノミクスはクソ。

安倍を支持したやつらだけが滅びるならいいが、当時からちゃんと「アベ政治を許さない」と反対してた人にまで影響が及んでしまうのが許せん。

 

こんなやつの国葬なんてとんでもない。

国をグチャグチャに壊したやつになんの功績があろうか。こんなアホ宰相を死んだ後も持ち上げて、税金使って、法律の根拠もなく国葬しようなどと。狂っている。

 

 

 

 

RaspberryPi3 + KTV-FSUSB2(柔Cas)で地デジTV録画 奮闘録

 

qiita.com

 

$ sudo apt-get install libccid libpcsclite-dev libpcsclite1 pcsc-tools pcscd

 

 

 

Keys

 

pcsclite.h

 

$ sudo vim /usr/include/PCSC/pcsclite.h

extern const SCARD_IO_REQUEST g_rgSCardT0Pci, g_rgSCardT1Pci, g_rgSCardRawPci;

extern const SCARD_IO_REQUEST g_rgSCardT0Pci, g_rgSCardRawPci;

 

 

 

orebibou.com

 

 

sed -i "/LONG SCardGetStatusChange/s/LPSCARD_READERSTATE_A/LPSCARD_READERSTATE/g" winscard.cpp
sed -i "s/SCARD_IO_REQUEST g_rgSCardT1Pci;/const SCARD_IO_REQUEST g_rgSCardT1Pci = { SCARD_PROTOCOL_T1, sizeof(SCARD_IO_REQUEST) };/g" winscard.cpp

make通った

 

/usr/include/PCSC/pcsclite.h

の改造を元に戻す。

 

 

併用設定。

 

 

libarib25

 

cmakeか。

 

qiita.com

 

$ cmake -S . -B build

$ sudo apt-get -y --force-yes install cmake

 

$ cmake -S . -B build

 

$ cmake --build build



なってない。


README.mdを読む。

 

 





tatuiyo.xyz

 

:%s/pcsclite/pcsckai/g

 

 





 

$ cmake -S . -B build

g_rgSCardT1Pci なんて定義されてないって感じのエラー。

kog.seesaa.net

 

 

 

qiita.com

最初のsoftcasをmakeするときにg_rgSCardT1Pciの行を消してmakeしたのがいけなかったのか?

もっかいsoftcasをmakeして libpcsckai を作り直してみよう。

 

 

あらためて libarib25 をmake

とおった!?

よっしゃ! libpcsckai.so(という共有ライブラリ)を使う b25バイナリができた!

 

このb25(柔Cas)で録画できるrecfsusbを次はインストールする。

http://ktvwiki.22web.org/?BonDriver_FSUSB2i

$ recfsusb2i 27 10 test20220917.ts

ダメか。

 

こないだ入れた、B-CASのほうを読むタイプのrecfsusb2nに影響ないか確かめる。

おいおい何か、録画はできる(タイトルも出てる)けど再生できない状況になっとるぞ…

b25を元に戻しても改善せず…何が起きた?

と思ったら、地デジの電波状況悪かっただけみたい。時間経ったら録画またできるようになってた。


 

sudo vim /usr/include/PCSC/pcsclite.h

 

$ cmake -S . -B build

cmake --build build

今度こそとおった!?

 

sudo make install

「行うべきことはありません」てことは、いったんmakeしてバイナリできちゃってるからか。

 

 

recrsusb2i のほうはデバイス認識すらできてない(No device can be used.)。古すぎてダメなのか。

 

だんだん分かってきた。softcasが無いほう(カードリーダー読むほう)の共有ライブラリlibarib25.so.0.2.5を見ると

$ cd /home/pi/Desktop/libalib25/

$ cd build

$ ldd libarib25.so.0.2.5

libpcsclite.so.1 => /lib/arm-linux-gnueabihf/libpcsclite.so.1

となってて、b25デコードするときに libpcsclite.so.1  を使うようだ。

 

これが、softcas導入してると

$ cd /home/pi/Desktop/libalib25-master/

$ cd build

$ ldd libarib25.so.0.2.5

libpcsckai.so => /lib/arm-linux-gnueabihf/libpcsckai.so

となるわけだから、b25デコードのときに読む共有ライブラリは libpcsckai.so なわけで

 

あとは録画ソフトウェア

recfsusb2n ないし

recfsusb2i(こっちのが古くてダメか)を使って録画するときに

libpcsckai.so を読むようにするために

 

recfsusb2n(or 2i )をmakeするときに、libpcsckai.so を読むように仕込みがいるよ、それからmakeして、できたバイナリを/usr/local/binに置けよ、ってことらしい。

 

 

録画はバッチリできるけど、再生するとなぜか開始50秒くらいで固まる。

原因想定

・pi3の処理能力不足?

・FSUSB2のハードウェアの問題か?

・カードリーダーから読み込むときにタイムラグがあるとか?

・録画ソフトウェアrecfsusb2n(または2i)バイナリを作り直せばいい?softcasでmakeすれば、カードリーダーを読み込む時のタイムラグが無くなって改善するとか?

 

 

 

・FSUSB2のハードウェアの問題か?

を試すために2台目を購入。3,000円でts貫できるなら格安だわ。

 

到着。挿してみる。

$ lsusb | grep 0511

おお。ばっちり2台認識してるじゃないか。

 

しかし再生50秒で固まる現象は(新しいハードでも)起きてしまった。KTV-FSUSB(というハード)の問題ではないらしい。

 

ということは、録画ソフトrecfsusb2nをもっかい作り直してみればいいのか。

lunasalt.com

 

recfsusb2i の install のとき、makeするのにoption として make B25=1 としたけど、

今回(recfsusb2n)もこれやればsoftcas(libalib25kaiで作ったほう)を認識するようになるのか?

$ make B25=1

 

$ make だけだと?

通る。なぜだ。

libpcsclite 読んじゃってるよなぁ。

libpcsckaiを読んでほしいんだけど。

もっかいmakeするとエラー(もうバイナリ=recfsusb2nはできてるから当然)

 

libpcsckaiを読んでほしいなら、cppソースを書き換えればいい?

該当の記述無し。うーむ。

 

あれ、recfsusb2i だと標準出力から直でvlcに流せるらしい。

blog.nakayuki.net

 

これあれか。たしかvlcってサーバ機能でUDPで配信できたんじゃないっけか?てことは、piのvlcを配信サーバにして、リモートにあるmacOS(のVLCアプリ)をクライアントにしてリアルタイムts受信できるんじゃなの?

min117.hatenablog.com

min117.hatenablog.com

 

$ sudo apt-get install vlc

 

vlc - CVLC udp Stream as service Raspberry PI - Stack Overflow

signal-flag-z.blogspot.com

 

$ recfsusb2n --b25 27 - - | vlc --quiet --width 1000 -

おお、いけるじゃん!piのローカルVLCでは再生できてる。

 

mplayerでも視聴できるぽい。標準入力から受けられるんだから当たり前か。

$ recfsusb2n --b25 27 - - | mplayer -

kog.seesaa.net

 

tatuiyo.xyz

 

SoftCASとwpa supplicantを併用する · GitHub




wiki.archlinux.jp

 

streamlinkでrecfsusb2からのb25配信をストリーム+broadcast(udpとか)できないのか?調べる。

wiki.archlinux.jp

 

 

 

$ pip3 install --upgrade --user streamlink

 

$ sudo apt install mpv

 

 

 

streamlinkめっちゃ使いやすいな。macにも入れておこう

$ pip3 install --user streamlink

 

$ brew install streamlink

 

streamlink の使い方 | ニコラボ

nico-lab.net

 

macOSvlcの場所が分からん。cvlcコマンドは動くから入ってるのは間違いないんだが。

調べたらここっぽい。

$ ls /Applications/VLC.app/Contents/MacOS/

 

おっしゃ動いた。

$ streamlink -p  /Applications/VLC.app/Contents/MacOS/VLC https://www.twitch.tv/vivi0z1 480p

 

こりゃいい。かなり応用効くぞ。

 

ffmpegでrecfsusbのTV画像をパイプしてhttpなりで配信できないか?を調べてたら、ラズパイのffmpegでハードウェアエンコードできる感じの記事。

denor.jp

recfsusb2n が認識しているdeviceは /dev/bus/usb/001/004 だったから

それを v4l2-ctl コマンドに食わせると

$ v4l2-ctl -d /dev/bus/usb/001/004

バイスの認識はダメみたいけど、ffmpegエンコードには別に関係ないか。

 

これ。h264_omx オプションでラズパイの omxplayerで?ハードウェアエンコード?できるっぽい。

ts録画して…

こうか?

$ ffmpeg -i test4.ts -c:v h264_omx -y test4omx.mp4

なんかエラーだな…

変換前がコレで

変換後がこう。変換自体はできてる!

tsがmp4に(すごい速度で)変換できた。HandBrakeCLIより速い?高解像度化のオプションないか調べる。

 

signal-flag-z.blogspot.com

-b:vオプションで高解像度化できる!

$ ffmpeg -i test4.ts -c:v h264_omx -y -b:v 1000k test4omx2.mp4

だいぶマシになった!

HD映像(ハイビジョン?)の時は -b:vに4m を指定せよとある。

$ ffmpeg -i test4.ts -c:v h264_omx -y -b:v 4M test4omx3.mp4

こりゃ素晴らしい。

サイズは15MB→4MBだから約4分の1になる。

 

母艦fedoraのHandBrakeCLIで同じこと(ts→mp4)してみよう。手元でいつもやってるやつだ。

$ HandBrakeCLI -i test4.ts -o test4omx4HBCLI.mp4 -Z "Apple 1080p30 Surround"

体感だとffmpegomxハードウェアエンコード)に比べて倍の時間かかってる気がする。

さすがにHandBrakeは画質キレイ?いや、そんな違わんでしょ。

これでサイズもffmpeg(h264_omxエンコード)のほうが小さい!

てことは、ffmpeg(h264_omxエンコード)を使えば

・ラズパイの筐体で(電力消費が極小)

・HandBrakeCLIよりも速く

エンコード後サイズも小さく

できる!素晴らしすぎる。

 

てことは、普段はVPNサーバにしてて、GPUを持て余してるラズパイ4でも同じことffmpeg(h264_omxエンコード)できるのか!?

$ ffmpeg -i test4.ts -c:v h264_omx -y -b:v 4M test4omx4Pi4.mp4

できちゃった!画質もバッチリ。

上がffmpeg。下はHandBrakeCLI。見た目違い分からんくらいキレイ。これで日々撮り溜めたニュース.tsのエンコードが倍速になる。

 

試しに昨日のニュース.ts(286MB)をエンコードさせてみる。

ちょっとエラー吐くが無視。

実測の1.4倍で変換できてる!?らしい。こりゃ捗る。

わずか2分で286MBのエンコードが終了!

画質ばっちり。サイズも元の半分近くに圧縮された。





ちなみに同じh264_omxエンコードでも、V4L2M2Mエンコードは動かんかった。

forums.raspberrypi.com

qiita.com





 

RaspberryPi3 と KTV-FSUSB2 で超省電力な録画鯖 → 大成功

 

ずっとやりたかったRaspberryPi録画鯖

このラズパイで

ts録画…できた!

 

手順はこのサイトこのまま。

lunasalt.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# インストール
sudo apt install gcc g++ libboost-thread-dev libboost-system-dev libboost-filesystem-dev
cd recfsusb2n
make
sudo make install
sudo gpasswd -a pi video
sudo reboot
# 確認
lsusb | grep 0511
# => "Bus 001 Device 004: ID 0511:0029 N'Able (DataBook) Technologies, Inc."
 
# 録画テスト ※地域に合わせてチャンネル指定を。
# 下記の例だと、26チャンネルを30秒録画する
recfsusb2n -bv 26 30 test.ts

 

$ sudo apt install gcc g++ libboost-thread-dev libboost-system-dev libboost-filesystem-dev

 

$ git clone https://github.com/stz2012/recfsusb2n.git

$ cd recfsusb2n/

$ make

 

何かワーニング出てるけど無視で。

 

$ sudo make install

 

$ sudo gpasswd -a pi video

 

メルって買ったKTV-FSUSB2。約3,000円(B-CASカード無しで)。

 

テレビのB-CASを挿しておく。

 

認識を試す。

$lsusb | grep 0511

バッチシ。

 

ここは東京なので、犬HKは27。

 

おっとアンテナ線をつけるの忘れてた。装着。

 

いざ録画!

$ recfsusb2n -bv 27 30 20220912_test2.ts

む。たぶん成功した。test2.tsのほう

 

SCPで母艦サーバに転送しておく。

$ scp test2.ts fedora@母艦IP:保存先PATH

 

macOSVLCから再生テスト。

 

うっは大成功

次は柔CASかな。

 

 

 

 

macOS PDFを一括で画像変換(pdftoppm)brew install poppler

 

Homebrewでpdftoppmをインストール

$ brew install pdftoppmじゃなくて

$ brew install poppler

するらしい。

codenote.net

 

成功。

 

brew updateしたときはpyenvのpython起動しなくなるので以下対応。

zenn.dev

 

自作のPDF2JPGスクリプト

$ vim mypdf2jpg.sh


試す。

$ sh mypdf2jpg.sh 景気ウォッチャーで自然言語処理入門HackMD.pdf 

うむ。

 

画像できたかな。

完璧。

 

macOSのHomebrewが古くてアップデートするのに苦労したので奮闘メモ。

$ brew install poppler

エラー

 

brew update試したらこんなコマンド打てと。

$ git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow

うまくいったようだ。

 

再度

$ brew update

続いて

$ brew upgrade

しろと。した。成功。

 

改めて

$ brew install poppler

インストールでけた。

 

その買うを、もっとハッピーに。|ハピタス