Linuxでテレビ総合スレ避難所7
■ このスレッドは過去ログ倉庫に格納されています
※ DTV板はデフォルト設定が強制ワッチョイなので、ワッチョイを付ける時は extend コマンドの記述は不要です
(逆に、ワッチョイを付けない時は !extend::checked:: の記述が必要です)
※ DTV板は即死判定があり、即死を回避するためには、スレを立ててから1時間以内に最低12コメントが必要です
(即死回避以降は、30日間書き込みがないと強制的にdat落ちします)
前スレ
Linuxでテレビ総合スレ避難所6
https://mevius.5ch.net/test/read.cgi/avi/1636527009/ >>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 ああTypeScriptってjsにコンパイル(変換)したのが動くのか。そりゃ.ts上書しても動かんね。
自分でTypeScriptのコード書いたことなくて失礼した。
ありがとうやってみる。 ↑の情報を参考にやってみた。
実行中のコンテナに.ts入れてbuildかけてもdockerイメージは更新されない(docker-compose up -dで戻ってしまう)ので、Dockerfileで.tsをCOPYしRUNでnpm run buildしてイメージ作り直した。
/app/src内の該当ファイルが書きかわり、かつ/app/dist内js群がbuild時の時刻になっていることは確認した。
でもルール予約の除外を復帰させてもダメだった。
あまり過去版で頑張る話をここで引っ張るのも申し訳ないのでここらで終わろうかと思うが >>530
予約除外解除のバグ直ってたのか
あれ何気に困るよね
とりあえず>>23の方法でなんとかなってるけど >>531
いやあ上で2.7.xで確認したと書いときながら本当に直ってたのか自信なくなってきた
2.7.1を信頼して使えない以上また2.7.1にするわけにいかないし ちなみにReservationManageModel.tsの更新と同時にやってみたことがあり。
録画ファイル名の自動的な全角半角変換でピリオドが全角になるのとチルダ「〜」が半角になるのが自分の趣味に合わないので、その変換がされないよう修正したつもりのソースStrUtil.tsも一緒に仕込んだら、ピリオド全角化はちゃんと無効化できたのでDockerfileへ仕込むやり方は効いている模様(チルダの方はヤマが外れたのか全然全角化されないけど)。
なので同時に入れたReservationManageModel.tsもちゃんと入れ替わっているはず。
しかしMirakurunの段階では全角なチルダはEPGStationのどこで半角化されているんだろう。StrUtil.tsにそれっぽいコードあったがそれじゃなかった 上の方でルール予約の除外復帰が2.7.xで直ってるのを確認したつもりだが自信なくなった、とか中途半端な状態のままにしてしまい、見た人に申し訳ないので再度確認した。
「結論としては2.7.1でも直っていなかった」
誤情報書いてすまなかった。何か勘違いしたようだ
安定動作しない2.7.1を2.6.20に戻して運用中のディスクを丸コピーし、コピーを再度2.7.1に上げて確認した MirakurunからVLCへストリーミングしてて地デジNHKの英語の副音声を消したい(モノラル音声にしたい)んですけど、VLC側ではなくMirakurun側で設定する方法ってありますか? >>536
ダメだったのかwおつかれ
ver.1の頃はちゃんと機能してたんだけどな
他にも予約関係のバグは、ルールで時刻設定すると解除できなくなるとか、予約時に終了時刻を短くすると直前に放送された番組名になってしまうとかあるんだよね >>538
mirakurun直だとわからなかったんでEPGStationからffmpeg呼んでストリーミングしてるな >>540
EPGStationのffmpegからストリーミングする方法があるんですね。詳しく調べてみます。 PT2とPT3を接続してDVBのドライバを使おうとしているのですが
起動するたびにadapterの番号が変化してしまうのでうまく利用できません
adapterの番号の割当を固定するにはどうしたら良いでしょうか
6.2.0-33-generic #33~22.04.1-Ubuntu >>542
ttps://github.com/dogeel/recdvb/blob/86b8e8cbca68a96927f8d9719a6ca641935cbf89/pt1_dev.h#L14-L15 >>543
>>544
ありがとうございます!!
解決しました
pt1とpt3で違ったので良かったですが
pt2*2とかだったら困っていたかもしれません
あとdmesgのlogではearth-pt1とearth_pt3でハイフンと
アンダーバーが違うんですね modprobeとかでは自動変換して-も_も同じだから 気にしない 俺が弱くなった所で、別にオマエが強くなった訳じゃねぇだろォがよ。あァ!? tsreplace字幕放送にはピッタリだな、ありがたい 今朝未明の録画実行中、dockerdがmsg="failed to delete"ってsyslogエラーを3行ほど吐いて落ち、docker-epgstation-mirakurunごと再起動してた。
結果録画番組が分断されたんだがなんだろうこれ docker最低限理解してないなら普通にセットアップしなよ、トラブルシューティングできないでしょ ちなみにOS起動してから33日目で起こった。
しかし何年も前から運用してるけどこの現象は初めてだな
試しにメモリ増やしてみるか
仕事内容限られてるからケチってる エラーの報告だけして ログ等トラブルシューティングできる情報は一切出さないタイプの人がいるようだから
相手にしない ちょいちょいEPGStationアップデートかかってる このスレを見てもやっぱりWindowsのほうが安定してんのかなと
Linuxに移行しようと思ったが、今回も現状を確認しただけで終わりそうだ ReadyMedia(MiniDLNA)経由でテレビでm2tsの録画ファイルを再生する時って
字幕表示は無理なの?
VIERAのお部屋ジャンプリンクで再生して
字幕オンしても出ない
PCでARIB字幕に対応したプレーヤー使うと字幕はちゃんと出る DiXiM PlayのFiieTV版ではReadyMediaのサーバー選ぶと
ファイル一覧は出るが
問題解決オプション弄っても非対応機種扱いで再生不可だった VLC for fireTVだと一応再生はできるが
ARIB字幕を選択しても表示されない
PC使わず
手軽に字幕付きで見る方法はないんだろうか ■ このスレッドは過去ログ倉庫に格納されています