Принятая практика, если использовать IllegalArgumentException (Строковое сообщение) , чтобы объявить, что параметр недопустим и предоставляет как можно больше подробной информации... Так сказать то, что параметры, как находили, были пустыми, в то время как непустой указатель исключения, Вы сделаете что-то вроде этого:
if( variable == null )
throw new IllegalArgumentException("The object 'variable' cannot be null");
у Вас нет фактически причины неявно использовать "NullPointerException". NullPointerException является исключением, выданным виртуальной машиной Java, когда Вы пытаетесь выполнить код на нулевой ссылке (Как toString () ).
Похоже, Apple внесла черновик предложения IETF, и некоторые люди уже работают над сегментами:
HTTP Live Streaming - draft-pantos-http-live-streaming-01
http://tools.ietf.org/id/draft-pantos-http-live-streaming-01. txt
Потоковая передача HTTP-трафика iPhone с помощью FFMpeg и Segmenter с открытым исходным кодом
http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter /
Похоже, HTTP-сервер действует просто как тупой HTTP-сервер. Изучая пример веб-сайта, предоставленного Akamai, я могу получить достаточно информации, чтобы начать работу со статической потоковой передачей.
Кодирование H.264 должно быть однопроходным. Базовый профиль, изменение заказа рамы отключен. Предлагаются ключевые кадры каждые 5 секунд, в идеале даже divisor of the chosen segment length.
The website provides an M3U8 file, which is simply an M3U playlist, but in the UTF-8 character encoding format.
That file then links to an M3U8 file for each bitrate. I assume they must all have cuts at the same positions (every 2 or 10 seconds, for instance) so that switching can be seamless. It appears to be completely client driven - the client decides how to measure bandwidth and which version it's going to get.
The contents of the main file are:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=860000
hi/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=512000
med/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=160000
lo/prog_index.m3u8
Then each of the other files are:
hi/prog_index.m3u8
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10,
fileSequence0.ts
#EXTINF:10,
fileSequence1.ts
#EXTINF:10,
fileSequence2.ts
#EXTINF:10,
fileSequence3.ts
#EXTINF:1,
fileSequence4.ts
#EXT-X-ENDLIST
med/prog_index.m3u8
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10,
fileSequence0.ts
#EXTINF:10,
fileSequence1.ts
#EXTINF:10,
fileSequence2.ts
#EXTINF:10,
fileSequence3.ts
#EXTINF:1,
fileSequence4.ts
#EXT-X-ENDLIST
lo/prog_index.m3u8
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10,
fileSequence0.ts
#EXTINF:10,
fileSequence1.ts
#EXTINF:10,
fileSequence2.ts
#EXTINF:10,
fileSequence3.ts
#EXTINF:1,
fileSequence4.ts
#EXT-X-ENDLIST
This works with the HTML 5 video tag:
<video width="640" height="480">
<source src="content1/content1.m3u8" />
</video>
There are still a lot of unanswered questions, but this is probably enough to get started.
См. Это для кодировщика и сегментера с открытым исходным кодом и некоторых других интересных вещей :)
и маленький игрок в Python + Gstreamer http://code.google. COM / P / HLS-Player /