2012-02-25 7 views
0

私は別のプレイリストファイルを与えるプレイリストファイルを持っています。
このプレイリストファイルはどのように再生できますか?どこでビデオのソースを見つけることができますか?プレイリストファイル(m3u8)は、別のプレイリストファイルに無限にメディアファイルを与えません。

たとえば、私はプレイリストファイルを持っています。つまり、

#EXTM3U 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=355670 
http://slive.ytn.co.kr:1935/live/ylive_0624_1.sdp/playlist.m3u8?wowzasessionid=195968950 

http://slive.ytn.co.kr:1935/live/ylive_0624_1.sdp/playlist.m3u8?wowzasessionid=195968950にアクセスすると、他のプレイリストファイルが表示されます。

#EXTM3U 
#EXT-X-ALLOW-CACHE:NO 
#EXT-X-TARGETDURATION:10 
#EXT-X-MEDIA-SEQUENCE:894 
#EXTINF:11, 
media_894.ts?wowzasessionid=195968950 
#EXTINF:10, 
media_895.ts?wowzasessionid=195968950 
#EXTINF:11, 
media_896.ts?wowzasessionid=195968950 

結果にアクセスすると、再生リストファイルも表示されます。

#EXTM3U 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=373764 
http://slive.ytn.co.kr:1935/live/ylive_0624_1.sdp/playlist.m3u8?wowzasessionid=1093961187 

#EXTM3U 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=382539 
http://slive.ytn.co.kr:1935/live/ylive_0624_1.sdp/playlist.m3u8?wowzasessionid=1566364859 

etc... 

私は私のiPhoneでSafariでURL http://slive.ytn.co.kr:1935/live/ylive_0624_1.sdp/playlist.m3u8?wowzasessionid=195968950を再生することができますが、私は自分のiphoneアプリでこのURLを再生したいです。
自分でm3u8ファイル拡張子を再生するにはどうすればよいですか?

答えて

1

EDIT - this SO questionの複製でもかまいませんが、ファイルを永続化する場合は、以下に示す難しい方法を実行する必要があります。

簡単な方法=アプリケーションにUIWebViewを埋め込み、.m3u8ファイルのURLで初期化します。これはm3u8を理解しているQuickTimeを開き、ダウンロード時にそれを再生します。

ハードウェイ= m3u8セッションの各パートごとにリクエスト/レスポンスを手動で作成し、各.tsファイルをプレイリストファイルから順番にダウンロードします。ビデオの各チャンクを取得したら、ファイルまたはメモリに書き込み、その後に次のチャンクを追加します。私はM3U8を務め、それが働いていた(私のコードを貼り付けるにはあまりにも醜いです)が、擬似コードがあるH.264エンコード.m4vファイルのためにこれをやった:

  1. を送信されたクッキーを保存し、M3U8を取得し、重要なヘッダー*
  2. .m3u8(最初のファイル、#EXT-X-STREAM-INF:PROGRAM-ID = 1、BANDWIDTH = 373764)を解析し、URLを取得します。
  3. .m3u8ファイルのURLの1つからプレイリストを取得します(必要なヘッダー/ Cookieをリクエストに入れてください)
  4. 必要なだけメタデータを保存しますファイルの先頭部分に、各.tsパスの絶対URLを作成し、それを配列に埋め込みます。
  5. (繰り返しますが、クッキー/ヘッダーに注意してください)、各.ts URLの内容をファイルにフェッチします。
  6. あなたは(これを行う方法のためのSO検索)

を選ぶあなただけのファイルを再生する必要がある場合は、簡単なルートを行く方メディアフレームワークでダウンロードしたファイルを再生します。あなたがそれらを維持する必要がある場合は、あなたはm3u8のダンスを行う必要があります。

* HTTPスクープがM3U8「プロトコル」はどのように動作するかを見るため、あなたがリクエスト/レスポンスヘッダーです確かめるために非常に貴重であるが正確である - http://tuffcode.com/

私のコードだけであったように、私はバニラNSURLConnection同期呼び出しを使用しました* AFNetworkingのような他のネットワークフレームワークは、これをもっと簡単にするでしょう。

関連する問題