ワンセグTS 続

VLCで観れるワンセグのみTSができたところで、次。
このout.tsから、TOTのfposをダンプ。先頭がfpos、後ろはTOTの内容。

173900  Wed Oct  6 02:59:33 2010
384460  Wed Oct  6 02:59:38 2010
596900  Wed Oct  6 02:59:43 2010
808964  Wed Oct  6 02:59:48 2010
1021780 Wed Oct  6 02:59:53 2010

これを加工して、こんな感じのout.m3u8を作成。

#EXTM3U
#EXT-X-TARGETDURATION:5
#EXTINF:5,
http://foobar/live/stream.php/out/173900/384460.ts
http://foobar/live/stream.php/out/384460/596900.ts
http://foobar/live/stream.php/out/596900/808964.ts
http://foobar/live/stream.php/out/808964/1021780.ts
#EXT-X-ENDLIST

httpd.confか.htaccessに、こんな設定。

AddType application/x-mpegURL .m3u8

続いて、stream.phpを作成する。PATH_INFOで「ワンセグTSのbasename」「開始fpos」「終了fpos」を拾って、指定ファイルの指定範囲を返すもの。

<?php

$param = split("[/\.]", $_SERVER["PATH_INFO"]);
$f = $param[1] . ".ts";
$s = $param[2];
$n = $param[3];

$len = $n - $s;

header('Content-Type: video/MP2T');
$v = file_get_contents($f, NULL, NULL, $s, $len);
print $v;
?>

最後に、こんなtest.htmlを作成。

<html>
<body>
<video width='320' height='180' src="out.m3u8" />
</body>
</html>

これら、out.ts、out.m3u8、stream.php、test.htmlを、http://foobar/live で見えるところに置いて、準備完了。

さて、iPhoneでtest.htmlを開いてみる。。。ぐはぁ。ダメだ。

  • test.htmlを読み込むと同時に、out.m3u8を何度もリクエストしてくる
192.168.0.1 - - [16/Apr/2011:13:27:39 +0900] "GET /live/test.html HTTP/1.1" 200 156 "-" "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5"
192.168.0.1 - - [16/Apr/2011:13:27:39 +0900] "GET /live/out.m3u8 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:27:40 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 1395 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:27:40 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 2 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:27:40 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 1395 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:27:40 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 2 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:27:40 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 1395 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:27:40 +0900] "GET /live/out.m3u8 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:27:40 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 1395 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:27:40 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 2 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:27:40 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 1395 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:27:40 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 2 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:27:40 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 1395 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
  • video画面をタップすると、さらに何度もリクエストしてきた
192.168.0.1 - - [16/Apr/2011:13:28:15 +0900] "GET /live/out.m3u8 HTTP/1.1" 200 1395 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:28:15 +0900] "GET /live/out.m3u8 HTTP/1.1" 304 - "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:28:15 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 1395 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:28:15 +0900] "GET /live/out.m3u8 HTTP/1.1" 200 1395 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:28:16 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 2 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:28:16 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 1395 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:28:16 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 2 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
192.168.0.1 - - [16/Apr/2011:13:28:16 +0900] "GET /live/out.m3u8 HTTP/1.1" 206 1395 "-" "AppleCoreMedia/1.0.0.8C148 (iPhone; U; CPU OS 4_2_1 like Mac OS X; ja_jp)"
  • ところがvideo本体が1度もリクエストされない
  • そのうち、「このムービーは再生できません。」のダイアログが。。。

out.tsを読んで怒られるならともかく、そこまで行ってない。m3u8のファイルの書き方がおかしい?