Linuxでテレビ総合スレ避難所7
■ このスレッドは過去ログ倉庫に格納されています
※ DTV板はデフォルト設定が強制ワッチョイなので、ワッチョイを付ける時は extend コマンドの記述は不要です
(逆に、ワッチョイを付けない時は !extend::checked:: の記述が必要です)
※ DTV板は即死判定があり、即死を回避するためには、スレを立ててから1時間以内に最低12コメントが必要です
(即死回避以降は、30日間書き込みがないと強制的にdat落ちします)
前スレ
Linuxでテレビ総合スレ避難所6
https://mevius.5ch.net/test/read.cgi/avi/1636527009/ >>420
もう結論出てるみたいだけど。
>>423を見てなるほどと感心したので、それならとrecdvb(ttps://github.com/dogeel/recdvb)の修正案を考えてみた。
ttps://github.com/dogeel/recdvb/blob/86b8e8cbca68a96927f8d9719a6ca641935cbf89/tssplitter_lite.c#L785-L800
ここで映像、音声のstream_type=0x02,0x0f,0x1b,0x04,0x24を無視すれば良さそうじゃない?
こんな感じで、ttps://pastebin.com/xhTvU9tg
と思ったのだけど、web-bmlでデータ取得中のまま切り替わらないチャンネルあり。どうも、PMTが1パケットに収まって
ないからみたい。tssplitter_liteは分割PMTに対応してる?と思って眺めていたら
https://github.com/dogeel/recdvb/blob/86b8e8cbca68a96927f8d9719a6ca641935cbf89/tssplitter_lite.c#L772
先頭パケット以外はpayload_offset = 4(ヘッダ長のみ)になってるのね。実際は前パケットの残りがあるので未対応って
ことですね。そんなに甘くはなかったか。 マルチパケットセクションの対応についてなら
https://github.com/0p1pp1/dvb_apps/cmds/{nitdump.c, section.c}とか参考になるかも
gstreamerも対応してたと思うから、
pythonから呼ぶ手もあるけど、gstreamerのスタイルに合わせるのが面倒かな… 5年前ぐらいに>>423のバグを修正+DROPチェックを追加したやつにデータ放送単独出力を加えてみた
recdvb他への移植は誰かやってくれ
斧Scandium 4067455 DL:LInuxTV X 斧Scandium
O 新斧
ひさしぶりだから勝手が違ったw >>431
条件コンパイル周りに漏れがあったので上げ直しました
新斧 4067459 DL:LInuxTV
すでにダウンした方へ
EXTRA_SID=1でビルドしてる分には問題ないです なんかデータ放送部分の抽出に需要が有るみたいだけど、みんな何に使ってるの?
最近ブラウザでデータ放送が見れるようになったのは知ってるけど、それ以外に何かあるのかな? >>434
みんなってか、本当に需要があったらもっと以前から話題になってるはずなので、
結論としては、興味があるのは自分1人じゃないの?
データ放送がpythonによるプログラム作成時からリニューアルされていないことを前提に
20秒ぐらい録画・取得したTSファイルを解析して、画像ファイルやbtbファイルを取り出して
雨雲レーダーや天気予報を取り出して、
もうすぐ雨が降るかなー、とか布団を干すかとか、洗濯スケジュールを考えている程度ですが、
TS ストリームを標準入力から受け入れてpython3で処理するものとして、
t p s://gist.github.com/mipsparc/9f90a7e4fd2644538133fe8e44598753
t p s://gist.github.com/youzaka/1544273/f4ace3d66097233b91397642df5824ef5759c674
がありました。
前半のtotts_stream.py の方は、tsselectでフルセグとワンセグの映像・音声データを
削ぎ落したあとで、5秒ごとにTOTに含まれる時刻をラズパイ3で表示できたので、これらを
ストリーム受信のひな型にすればいいかなと思っています。 recdvbやrecpt1の改造案は、見るのはかなりあとの方になりそう。 px4_drvがlinux 6.4以降ビルドできなくなっている
原因は6.4でclass_createが変更されたからで、すでにプルリクエストも出てる
https://github.com/nns779/px4_drv/pull/26
ただこのプルリクエストだと6.4より前でビルドできなくなるので、バージョン判定して
どちらでもビルドできるパッチを作成した
https://pastebin.com/PmM2Cm5Q pt1_drvでもlinux 6.4以降ビルドできないので、stz2012版用に同様のパッチを作成
https://pastebin.com/A0eKX1x8 EPGStationで外部から勝手に録画された報告あるな
どんな設定にしてたのかが気になる 毎日ipを自動で変えながら、Domain再登録は外からopenVPNでアクセスする前に遠隔で無線LANルーターの再起動。
これで外から狙い撃ちは無理だと思う。 普通に外部公開しなきゃええだけやろ
VPN突破されるくらいならネット辞めた方がいい 何も対策しないまま8888を外から無条件にアクセスできるようにしただけだろ
あーあ馬鹿だねという感想しかない >>444
しにくいよ?
俺しか使わんし問題なし。
使い終わったら外部から24時間起動してるスティックPCに置いてあるvbsファイルを使って終端装置を操作してipアドレスを変更してアクセス不能にするという使い方してる。
asus のルーター、タイマーで再起動だとドメイン登録しないけど、電源ぶつ切りからの再通電で起動すると何故か登録するんだよね。不思議。
ルーターオンオフ用のスマートプラグは終端装置に繋いだポータブルルーターに無線接続していて、このポータブルルーターに外部からはアクセスできない上にアクセスしても他のPCにはアクセスできない。 >>440
外部に開いてると海外からガンガン来るよ
日本の映像を求めてEPGStationをポートスキャンしてるフォーラムあるそうな
かなり昔、放置してた録画鯖に「晒されてるよ」ってファイル置かれてたわ だから外部からアクセスできるようにするのはやめた方がいい うちはCloudflare Accessでゼロトラストしとるよ EPGStation 2.6.20以降にアップすると動かないのは家の環境だけかな? リバースプロキシ経由でHTTPS強制かつOAuth2でGoogleアカウントと連携させてるけど
VPNとかSSHとか面倒臭くない? 昔にアホがBasic認証かけたつもりで設定ミスって全公開したりしてたから(1敗)
VPNのほうがミス少ないみたいな流れでオススメされてた気がする
リバースプロキシは超便利だけどスキルも理解も無いと危ない 何、443でbasic認証かけて安心しといて8888も公開しちゃってたとか? >>455
それスマホだとブラウザから別アプリにCookie引き継げないから面倒臭くない?
どうやってセッション引き継いでんの? Tailscale使ってるけど接続楽だし何も文句ないわ Tailscaleって会社自体を信用していいものか微妙だから様子見だな
SSHで困らん うちはOpenVPN
証明書つくるのめんどいけど自分だけだから一つで済むしな EPGStation ちょいちょいバージョンうっぷしてくれてるね mirakurun3.8のままnode 18に対応してくれないかなあ >>467
これ
3.9.0-beta以降にするとT230Cでの録画が不安定になる EPGStation 2.7.1で、git最新のffmpegにlibaribcaptionを組み込んで字幕付きTSをエンコードしようとうまく行かず...。
そもそもデコードしか対応してないのかな?
ffmpeg -codecs すると、D.S... arib_caption ARIB STD-B24 caption (decoders: libaribcaption)なんだよなー。
とりあえず、enc.jsに-sub_type ass、-c:s mov_textだとエンコード出来るけどlibaribb24と結果変わらないですよね。
何か、いい方法とかありますでしょうか? 試行錯誤してたら、なんとか動かすことができました。 >>472 それじゃ簡単に説明します。
まず、以下の環境で動作確認を行っております。
◎docker-mirakurun-epgstation git-v2:d8be751
◎FFmpeg git-master:9583a2c
◎libaribcaption git-master:7a88d2a
最初に、docker-mirakurun-epgstationを使う準備をします。
例として、debian.Dockerfileを使います。
1.以下の、字幕関連を「ENV DEV=」内に記入します。
libass-dev libfreetype6-dev libaribb24-dev libfontconfig-dev
2.libaribcaptionのインストールスクリプトを追記します。
'----ここから----
git clone https://github.com/xqq/libaribcaption.git /tmp/libaribcaption_sources && \
cd /tmp/libaribcaption_sources && \
mkdir build && \
cd build && \
cmake .. -DCMAKE_BUILD_TYPE=Release && \
cmake --build . -j$(nproc) && \
cmake --install . && \
'----ここまで----
続きます。 3.FFmpeg 6.0では、libaribcaptionに対応してないのでgit最新版を使用するよう修正します。
'----ここから----
mkdir /tmp/ffmpeg_sources && \
cd /tmp/ffmpeg_sources && \
curl -fsSL http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 | tar -xj --strip-components=1 && \
'----ここまで----
この部分を、以下のように書き換えます。
'----ここから----
git clone https://github.com/FFmpeg/FFmpeg.git /tmp/ffmpeg_sources && \
cd /tmp/ffmpeg_sources && \
'----ここまで----
そして、configureオプションに以下を追記してください。
--enable-libass \
--enable-libfreetype \
--enable-fontconfig \
--enable-libaribb24 \
--enable-libaribcaption \
これで、debian.Dockerfileの修正は終了です。
続きます。 4.続いて、enc.js.templateの内容を書き換えます。
// 字幕用
Array.prototype.push.apply(args, ['-fix_sub_duration']);
この下に、以下を追記してください。
Array.prototype.push.apply(args, ['-sub_type', 'bitmap']);
Array.prototype.push.apply(args, ['-canvas_size', '1920x1080']);
そして、以下の内容を書き換えてください。
// 字幕ストリーム設定
Array.prototype.push.apply(args, ['-map', '0:s?', '-c:s', 'mov_text']);
'mov_text' -> 'copy'
これで、enc.js.templateの書き換えは終了です。
続きます。 5.最後に、config.yml.templateの内容を書き換えます。
この部分を書き換えます。
'----ここから----
encode:
- name: H.264
cmd: '%NODE% %ROOT%/config/enc.js'
suffix: .mp4
rate: 4.0
'----ここまで----
suffix: .mp4 -> suffix: .mkv
※mp4コンテナは対応してないので、必ずmkvコンテナを使用して下さい。
これで、修正箇所は全て終了ですので、
docker-mirakurun-epgstationをビルドして起動してみて下さい。
2023年8月現在、VLC 3.0.18ではlibaribcaptionの字幕には対応しておりません。
動作確認は、MPVでしております。
'================
参照:ARIB字幕をdemuxするlibarincaption | ニコラボ
ttps://nico-lab.net/libaribcaption_with_ffmpeg/
◎私が使用している、スクリプトを参考までに貼っておきます。
custom.Dockerfile
ttps://pastebin.com/MJeeWJSh
enc.js
ttps://pastebin.com/xsUTDWzB
以上です。 >>476
すいません追記です。
放送中の番組などをTSのまま再生すると、
VLCでもlibarbcaptionを使用して字幕が表示されるようです。 >>473
丁寧な説明どうもありがとう!
お陰でうまくいきました HDUSFでrecfriio動かしたいんだけどどうやってもOutput ts file.で止まるんだけど再コンパイルして動く人いる?
Ctrl+Cも効かない
_splitbuf_t buffer[4*1024*1024]
struct AsyncRequest {
int fd;
uint8_t buf[TSDATASIZE];
usbdevfs_urb urb;
};に変更してコンパイルしたやつ
Linux 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.38-2 (2023-07-27) x86_64 GNU/Linux
Windowsでは普通に動く
今6.1.0で再コンパイルして動く人いる?それとも動かない?
RingBufのpeekPopPtrWithoutLockが毎回NULL帰ってきてる >>481
未対策版HDUSをFedora 38の6.4.6でビルドしてみたけど同じように動かない
とりあえず
https://egg.5ch.net/test/read.cgi/mac/1311867250/534
にあるlibusb-1.0に移植したrecfriioだと未対策版HDUS+Fedora 38でも動くから
こっちを使ってみて >>481
原因はわかったけど正しい修正方法がわからない
一応パッチを作ったのでlibusb-1.0版recfriioでなくても動くはず
https://pastebin.com/KQRHSQUy
recfrio-master以下で
$ wget https://pastebin.com/raw/KQRHSQUy
$ patch -p1 < KQRHSQUy
でパッチを当ててビルドして
原因はkernel 6.0からinclude/linux/usbdevice_fs.hの
struct usbdevfs_iso_packet_desc iso_frame_desc[0];
が
struct usbdevfs_iso_packet_desc iso_frame_desc[];
に変更されたから
https://github.com/torvalds/linux/commit/94dfc73e7cf4a31da66b8843f0b9283ddd6b8381
これと同じ問題
https://github.com/nmeum/android-tools/issues/74
recfriioのRingBufがFlexible array memberにうまく対応できていないので、パッチでは
struct usbdevfs_urbの代わりにFlexible array memberを使っていないstruct _usbdevfs_urbを
作ってこちらを利用するよう修正している
たぶんもっと正しい対応方法があるはず
自分の技量だとわからないのでC++に詳しい人お願いします >>482
libusb-1.0移植版で完動した。サンクス
>>484
試してないけどこれじゃ直らない。
コンパイルエラーは
struct Node { @Ringbuf.hpp
の T data; // データ本体
を構造体末尾に
+struct AsyncRequest のurbを481のように構造体末尾にすれば直る
でも原因はこれじゃない。コンパイルは出来ても受信シグナルが全く来なくて動かない もう1つ聞きたいんだけどTVTestみたいなソフトってある?
futex2でwaitformultipleobjectsのクローンできたしBondriverと一緒に完全移植できると思うんだけどもうある? >>486
実際に>>484のパッチをビルドして試してみて
コンパイルエラーが出ている箇所とは異なる箇所を修正しているから変に
感じるかもしれないけど、正常のコンパイルできて正しく動作するはずだから
もう一つパッチ作った
https://pastebin.com/z0jeVJWK
こっちのほうがより正しい修正のつもりだけど、C++ではなくCのやり方で実装して
いるから、C++としてもっといい方法があるかも
recfrio-master以下で
$ wget https://pastebin.com/raw/z0jeVJWK
$ patch -p1 < z0jeVJWK
でパッチを当ててビルド >>489
USBDEVFS_URB_TYPE_BULKでurbのnumber_of_packetsは常に0なんだから、カーネルバージョンによらず
usbdevfs_urb *urb;
の実体サイズはsizeof(usbdevfs_urb)固定で大丈夫なのでは >>489
これテストした?
std=c++03 宣言なくても 関数 throw(なんか)のthrow(なんか)を消せば普通にコンパイルできるよ
コンパイルエラーは最初のレス書き込み前にすでに自分で直したけどなんか受信シグナルが一個も来ないの(出力TS0バイト)
たぶんlibusb-旧バージョン(deibanだと0.1.4)のバグだと思うよ
普通にlibusb-1.0動いてるんだから1.0使っとけばよくないか?
TVTestみたいに空き時間に動画のデコードやらユーザー入力処理とかしなきゃいけないのは非同期処理じゃないと駄目だけど、recfriioは単純コマンドだから同期処理で十分でしょ >>488
Linuxのプログラミングはさっぱりだけどffplay見る限りは大丈夫じゃないの?
CyberLinkみたいな高速なデコードは無理かもしれないけどそれなりのデコードなら・・・ >>491
libusb-1.0は非同期をサポートしてるんじゃなかったっけ
それはともかくlibusb-compat-1.0 を使えば
古いアプリでも(ほぼ)そのまま?libusb-1.0を使って動くみたいだね
libusb-0.1はもうLEGACY扱いなんだし使わない方がいいんでないか >>491
そもそもrecfriioはlibusbは使ってないし、libusb-1.0系の最新版でも>>484と同じ方法(ほぼ同じ構造体を自前で定義)で対応してるので、
ttps://github.com/libusb/libusb/blob/v1.0.26/libusb/os/linux_usbfs.h#L78-L95
libusb-1.0版で動くけど484や>>489で動かないのなら、なにか別の問題でしょう
ちなみに、
ttps://github.com/stz2012/recfriio/blob/7a628c2bf460f423d4ad88b19c10010c37276c4b/recfriior5/RingBuf.hpp#L83-L90
のTがAsyncRequestなので、>>481の変更入れてもカーネル6.0以降ではフレキシブル配列メンバの後に他のメンバが続く形になってしまうのは同じなので、
もしその変更入れたコードのコンパイルが通るのだとしたらそれ自体がおかしいです
また、このコードはT dataがstruct Nodeの最初のメンバである事が前提のコードなので、>>486みたいな変更したら当然動かなくなるでしょう >>476
スレチかもしれないけど。
寝転がりながら Android Tablet でも字幕付きで再生したい!
ってのがオレ的にありまして、参考にして少し遊んでみました。
結論として、以下になりました。
・エンコード時に -c:s dvdsub でエンコードしちゃう
copy だと ARIBSUB としてエンコードされますが、再生するアプリ側も対応が必要です。
でも DVDSUB なら再生側もだいたい対応しているし、再現度も高いと思いました。
プレイヤまでパッチ当ててビルドしたくない人、試してみてください。 まぁ、
-subtype ass のままで -c:s mov_text でも別に見られますが、
ルビとか、もうちょい再現度上げたかったんですよね。 おいらはlibaribcaptionが未だパッチとして存在していた時に以下のオプションでエンコードしていたよ。
このオプションであれば、配置情報も保持されるので再現性が高い。
-sub_type ass -ass_workaround true -ignore_background true
-c:s ass 今の ffmpeg では -ass_workaround true は -ass_single_rect true な >>424 最近出た tsreplace を使うと TS の映像だけを H.264 / H.265 に置き換えできるよ FFmpeg にも QSVEncC にも対応してる
ttps://github.com/rigaya/tsreplace 標準入力できない、録画同時エンコできない
意味ないな リアルタイム視聴の時はリアルタイムエンコードで見れるし、録画後にエンコードもできるし、特に困らんけどな >>502
そうそうこういうの
QSV/NVEncでAV1も行けるのかな? tsってmp4とかにして画質落ちない方法ってある? ffmpeg -i hoge.ts -c copy fuga.mp4 chinachu + mirakurun構成なんだけど
録画の前後に数秒余裕を持たせて録画したいんだけど設定どれですか? EPGStationを昨日2.7.1にアップして使用中。
番組録画が済んだらフォルダ移動する設定にしているが、しばらく運用してると移動されなくなるっぽい?
動かし始めて暫くは問題ないんだが。自分だけか否か。
過去バージョンでは問題なかったしそこから設定も変えていない。
今録画走ってるのが終わったら再起動して引き続き様子をみる。 >>510
maxBufferBytesBeforeReady 引き続き状況報告。
昨日の投稿の後、フォルダ移動しないだけでなく予約録画が全然始まらなくなり、再起動で直った。
そのまま今の時間まで運用していたらフォルダ移動しない現象がついさっき再現した。
今度はrecordedTmp設定をコメントアウトしてみる。
他の人から同様の報告はないようだが、この設定使ってないから同じ現象に遭ってないのかもしれない Raspberry Pi 4で安定運用(非docker)していたが、EPGStationをv2.6.20からv2.7.1にバージョンアップしたら、EPGStationのトップページが「Cannot GET /」となるようになってしまった。
同じような状況の人が知恵袋にいて未解決だったけど、EPGStationをv2.6.20で再セットアップしたら解決した。
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11284501056 引き続きの状況
RecordedTmp設定をコメントアウトしてからは不具合に遭わず継続稼働中。丸2日超というところか。
微妙に不便だが当面これで運用することにしよう。
とりあえず現行版は生成したファイルのディレクトリ移動が怪しいということで。
気力があればissue上げるかも その後の状況
9/5ごろにRecordedTmp設定を外してから、今日さっきまで問題なく運用していたが。
さっき録画が始まらなくなった。
RecordedTmpを使っていた前回よりだいぶ持ったがやっぱりダメの模様。
Dockerコンテナの再起動かけて様子見るが、また症状出る前に過去バージョンに戻すことを考えよう ラズパイで録画サーバー構築してる人、エンコードどうしてる?
現状ラズパイからNASにtsで録画したあとそのままにして、暇なタイミングで母艦でエンコードしてるけど >>515
Cannot GET/はvue.js周りの依存関係が上手く出来てないと発生する。
npm run installではなく、npm run all-installすれば解決した。
ビルド時にvue関連のエラー出てるはずだから見てみて >>518
全く同じ
強いて言うならラズパイはmirakurunのみ、NAS上のDockerで動くEPGstationから吸い上げてるくらい とりあえず2.6.20に戻した
2.7.1に上げる前に使ってたコンテナイメージは消してしまってた
ので再構築になったが、node.js v16/openssl1.1.1サポート切れの
あおりなのかコンテナ内のffmpeg構築でlibcrypt.soが見つからん
とかで止まったり、入ってるはずのlibassが見つからんといわれ
たりでDockerfileの試行錯誤に手間食った
前はすんなり動いてたコンテナ構築がすんなりいかなかった
これで当面運用する
v2.7.0以降でルール対象番組除外の有効化が直ってるのを
確認できたのにちょっと残念 今の安定環境、システムドライブまるごとセクタバイセクタでコピーしとこ >>522
それは2.7.1で症状出てるのがnode v18に原因があるということ?
修正当てるのはありだなあ
以後の更新考えるとDockerイメージをカスタムするの気進まないけど >>524
commit見る限りrecordedtmp周りの修正ないし、そうなると怪しいのがnodeのバージョンかも?という推測 >>525
なるほど。
recordedtmp設定してなくても6日間くらいで録画できなくなったし、node v18で動かすのは当面様子見かな >>522 の2.7.1のReservationManageModel.tsを2.6.20の該当ディレクトリに上書きして試したけど、状況変わらずルール予約の除外を復帰させても録画始まらなかった。
2.7.1で本件の対処がされたのがこのファイルじゃないのか、それとも2.7.xで解決確認したつもりが勘違いだったのか・・んなことないと思うけど。
確認はEPGStation稼働中にコンテナ内/app/srcディレクトリ下の.tsファイルを直接上書きしてからやった。
稼働中の.ts上書きだと前の.tsファイルがキャッシュされてたとかあるのかな?
も少し調べてみる node.jsはtsを直接実行できないので停止してからnpm run build ■ このスレッドは過去ログ倉庫に格納されています