Orange pi5puls + PX-S1UD の録画サーバ構築(途中)
教本(ベース)
ただし各所違うことやりだすと思うのでどこまで参考になるかわからん
とりあえず失敗した例
インストールとかは端折る。
本を読んでて思ったのは
・rootのパスは設定せず(にするとログインができないと聞いた)で各所root のアクセスを禁止してった方がいいのでは?
・下からあるアカウント(orangepiとかrock)は削除するとアクセスできないファイルとかが出来る可能性があるのでアカウント名を変更する方がいいのでは?
あとufwいれるとか各所セキュリティは対処した方が良さそうな気はした。
ssh設定参考
PX-S1UDはpx4_drvが使えない
とりあえずraspiの情報からドライバ?を入れる
wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip
unzip PX-S1UD_driver_Ver.1.0.1.zip
sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/
なんだけど公式ホームページ見るとそれより新しそうなのあるんだけどネットに転がってるのなんで全部↑なんだろう……
でなんかデバイス?が動いてない?っぽい
$ lsusb | grep PX-S1UD
Bus 001 Device 004: ID 3275:0080 VidzMedia Pte Ltd PX-S1UD Digital TV Tuner
$ ls /dev/dvb
ls: cannot access '/dev/dvb': No such file or directory
探してみた感じだとorange piに使えるlinux-modules-extraがなさそう?
普通のやつを入れてみたが駄目だった(OSは起動したけども)
Armbianビルドするのか……(ハードもソフトも違うので難しそう)
ということで別の手段
https://github.com/Joshua-Riek/ubuntu-rockchip
なんか別のOS(よりubuntuに近い動きをするものっぽい?)を見つけたのでこっちを試してみる(試行中)
orange pi と同じようにSDにイメージ書き込み、起動してSSHで接続、SSDに書き込む段階でわざわざubuntu-rockchip書き込まんでも送るイメージだけでよかった気がした。
→なんかよくわからんでかSSHアクセスできなくなって再インストール試してるとき、SSDに書き込む方法書いてあった。(新しいやつできてたのでそっちで進めてる)
https://github.com/Joshua-Riek/ubuntu-rockchip/wiki/Ubuntu-24.04-LTS#install-ubuntu-onto-an-nvme-from-linux
ドライバ入れて再起動後
XXXXX@XXXXX:~$ lsusb | grep PX-S1UD
Bus 001 Device 002: ID 3275:0080 VidzMedia Pte Ltd PX-S1UD Digital TV Tuner
XXXXX@XXXXX:~$ ls /dev/dvb
adapter0
行けたっぽいので改めて初期設定いろいろする。
↑参考2
https://github.com/pikey8706/recdvb
recdvbがサイト消えてるのでforkを使用。いくつかgithubに上がってるのでVer.とか見てみる必要ありそう。
https://www.thun-techblog.com/index.php/blog/join-logo-scp-on-armlinux/
ffmpegはCMカットをしたいのでこれも参照。(なんかffmpegのVer.が新しすぎるとだめとかいう話なので試してみる)
AviSynthPlusインストール
mkdir avisynth-build && cd avisynth-build
cmake ../ -DHEADERS_ONLY:bool=on
make VersionGen install
公式にあるのはこれだけどVersionGenなしだとインストールできた?
↑のサイトのソースとか(大体他Ninjaでコンパイルしてるやつ)は行けんかった。
追記 と思ったけどL-SMASH-WorksでAviSynthがないとエラー吐いた。いろいろやってたうえでなんか↓通った。
cmake -DCMAKE_CXX_FLAGS=-latomic ../ -G Ninja
ninja
sudo ninja install
追記join_logo_scp_trialでよく見たら3.5.X要求してんじゃん、となって前例があったv3.7.2に戻してーとかやってたらまたエラーが。
string sub-command strip requires two arguments.
./avs_core/Version.cmakeで↓の感じに修正
string(STRIP ${AVS_NEWEST_TAG} AVS_NEWEST_TAG)
↓
string(STRIP "${AVS_NEWEST_TAG}" AVS_NEWEST_TAG)
ffmpegインストール
Version4.4.2とかじゃないと駄目っぽいけどaptにあるのは6。ハードウェアエンコードはrkmpp? 調査中
https://forum.armbian.com/topic/11551-4kp30-video-on-orange-pi-lite-and-mainline-hardware-acceleration/page/2/
ベースが6っぽいんだよなぁ
sudo apt install librga-dev libv4l-rkmpp librockchip-mpp-dev
./configure --extra-ldflags="-latomic" --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib" --arch=aarch64 --target-os=linux --enable-gpl --enable-version3 --disable-doc --disable-debug --enable-avisynth --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-libsvtav1 --enable-nonfree --enable-pic --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --extra-libs=-ldl --enable-libdrm --enable-rkmpp --enable-rkrga
make
sudo make install
とりあえず入れるだけ入れてみたやつ。(多分installに入ってないライブラリも大量にあると思われる。
4系っぽいんだけど--enable-rkmpp --enable-rkrgaが通らない(前者だけだと後者が必要と言われ、後者があるとそんなオプションはないと弾かれる)
https://pop.4-bit.jp/?page_id=7929
別件だけどもそもそも公式で4.3.1って書いてあったわ。原因に関してもなんかありそう。FFMPEG5以降対応したL-SMASH-Worksを調査中。
https://github.com/HomeOfAviSynthPlusEvolution/L-SMASH-Works
↑が対応してるのかな?一応こちらの手順でL-SMASH-Worksは通った。
でここまで行ったけど肝心のjoin_logo_scpのmakeでコケた。
XXXXXX@ubuntu:~/src/chapter_exe/src$ make
<略>
compat.h:1:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
+++ |+#include <cstdint>
1 | #ifndef COMPAT
<略>
make: *** [Makefile:14: chapter_exe.o] Error 1
compat.h に#include <cstdint>が忘れてる?とのことで追記して再度挑戦→行けた
JoinLogoScpTrialSetLinux/modules/join_logo_scp_trialでnpm installとか諸々で動いた。
XXXXX@ubuntu:~/src/JoinLogoScpTrialSetLinux/modules/join_logo_scp_trial$ jlse --help
Options:
--version Show version number [boolean]
--input, -i path to ts file [string] [required]
--filter, -f enable to ffmpeg filter output [boolean] [default: false]
--encode, -e enable to ffmpeg encode [boolean] [default: false]
--target, -t select encord target
[choices: "cutcm", "cutcm_logo"] [default: "cutcm_logo"]
--option, -o set ffmpeg option [string] [default: ""]
--outdir, -d set encorded file dir [string] [default: ""]
--outname, -n set encorded file name [string] [default: ""]
--remove, -r remove avs files [boolean] [default: false]
--help Show help [boolean]
なんか実際動かしてみたけどえらった。
TypeError: data.match is not a function or its return value is not iterable
at Interface.<anonymous> (/home/XXXXXX/src/JoinLogoScpTrialSetLinux/modules/join_logo_scp_trial/src/output/chapter_jls.js:50:25)