l3tnun / EPGStation

Mirakurun を使用した録画管理ソフト
https://twitter.com/l3tnun
MIT License
566 stars 151 forks source link

iOSにてストリーミング(無変換)を実行したときにVLCで再生できない。 #607

Closed Ry0 closed 1 year ago

Ry0 commented 2 years ago

環境

Issue

ストリーミングで、 「M2TS」、「無変換」で視聴しようとしたとき、VLCが起動しますが、一瞬で再生画面が閉じてしまう現象が起きています。 (閉じたあとは、待っても何も起きない。)

そのときのConfigはテンプレートのままです。

https://github.com/l3tnun/EPGStation/blob/c0e201b83231dfed73e5bea1b2ec54866fcfbbba/config/config.yml.template#L49-L56

そこで、以下のように、://の部分を%3A%2F%2Fに変更して対応しています。 憶測なのですが、該当部分をエンコードがうまくできていないのではと考えています。

    m2ts:
+        ios: vlc-x-callback://x-callback-url/stream?url=PROTOCOL%3A%2F%2FADDRESS
-        ios: vlc-x-callback://x-callback-url/stream?url=PROTOCOL://ADDRESS

もし恒久対策が実施できそうであれば、対応していただきたいです。 該当部分の実装を追えておらず、具体的な提案ないままIssueを立ててしまい、申し訳ございません。

hts-ozeki commented 2 years ago

借りたiPhoneで試したところ、VLCが起動するけれどもVLCのライブラリ画面になり、再生が始まりませんでした。 他の録画ソフトウェアでは動いているので、どうなっているか調べたところ「PROTOCOL://ADDRESS」部分を実際のURIに置換した後でencodeURIComponent()でURIエンコードしているようです。

ということは、PROTOCOL・ADDRESS部分に何かURIエンコードが必要な文字が入ってこない限り、Ry0さんの対応で大丈夫そうです。

根本的に対処するにはこの辺でしょうか。(ver 2.6.20の例) client/src/model/state/onair/OnAirSelectStreamState.ts public getM2TSURL(): string | null

client/src/model/state/recorded/detail/RecordedDetailState.ts public getVideoURL(video: apid.VideoFile): string | null

client/src/model/state/recorded/detail/RecordedDetailState.ts public getVideoDownloadURL(video: apid.VideoFile): string | null

l3tnun commented 1 year ago

調査ありがとうございました。 こちらVLCだけの問題かつ、修正が面倒なため config.yml.template の修正のみにとどめたいと思います。 version 2.7.0で反映させます。

対処方法はご推察のとおりです。