LoginSignup
1
0

More than 1 year has passed since last update.

iOSでSafariからVLCを起動してストリーミング再生する

Posted at

きっかけ

iOSでSafariからVLCでストリーミング再生できないという話を見た。
よく見ると、URLencodeされたURLだと、VLCでは再生できない模様。
Wikipediaによると、パーセントエンコードと言うんですね、知らなかった。
Infuseというアプリだと、再生できる。

x-callback-url

iOSではx-callback-urlという仕組みをつかってアプリ間連携している。これまた知らなかった。
x-callback-urlは、http://x-callback-url.com/ にて仕様がまとめられている。

InfuseとVLCの違い

例えば、

 infuse://x-callback-url/play?url=PROTOCOL://ADDRESS

で再生できたものを、

 vlc-x-callback://x-callback-url/play?url=PROTOCOL://ADDRESS

としても、再生できない。

VLC-iOSのURLの扱い

色々さまよい、VLC-iOSのソースを見ることに。
こちらのcommitによると、

if (value.range(of: "%3A%2F%2F", options: NSString.CompareOptions.caseInsensitive, range: value.startIndex..<end, locale: nil) == nil) {

とあり、URLに%3A%2F%2Fを含んでいるかで挙動が別れそう。
URLに%3A%2F%2Fを含ませれば、パーセントエンコードされていると判定され、再生できるのではと想像し、

vlc-x-callback://x-callback-url/play?url=PROTOCOL%3A%2F%2FADDRESS

としたところ、再生できるようになった。…が、ダウンロードか再生の選択ポップアップが表示される。

VLC-iOSのx-call-back-urlのアクション

VLCのページによると、Actionsとして、

stream: VLC plays the stream provided by the URL parameter

が挙げられている。再生はこれだと思い、

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

としたところ、 ポップアップ無しで再生。わーい!
他に、ダウンロードや、再生完了時のアクションなども書けそうで、色々使えそう。

オチ

ここまで調べた結論的な内容が、掲示板に書かれていました…敗北。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0