Как делает HTTP Адаптивная работа Потоковой передачи Скорости передачи над iPhone?

Принятая практика, если использовать IllegalArgumentException (Строковое сообщение) , чтобы объявить, что параметр недопустим и предоставляет как можно больше подробной информации... Так сказать то, что параметры, как находили, были пустыми, в то время как непустой указатель исключения, Вы сделаете что-то вроде этого:

if( variable == null )
    throw new IllegalArgumentException("The object 'variable' cannot be null");

у Вас нет фактически причины неявно использовать "NullPointerException". NullPointerException является исключением, выданным виртуальной машиной Java, когда Вы пытаетесь выполнить код на нулевой ссылке (Как toString () ).

9
задан vipw 17 April 2012 в 12:30
поделиться

3 ответа

Обновление

Похоже, 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, я могу получить достаточно информации, чтобы начать работу со статической потоковой передачей.

http://iphone.akamai.com/

Технический документ ( http: //www.akamai. com / dl / akamai / iphone_wp. процесс) будет производить H.264 / AAC контент в последовательности небольшого контента сегменты в формате TS MPEG-2 (.ts). Существует также индексный файл M3U8, который ссылается на сегменты; в случае живого контента M3U8 постоянно обновляется, чтобы отразить последний контент.

Кодирование 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.

21
ответ дан 4 December 2019 в 08:16
поделиться

См. Это для кодировщика и сегментера с открытым исходным кодом и некоторых других интересных вещей :)

http://www.ioncannon.net/programming/452/iphone-http-streaming-with -ffmpeg-and-an-open-source-segmenter /

2
ответ дан 4 December 2019 в 08:16
поделиться

и маленький игрок в Python + Gstreamer http://code.google. COM / P / HLS-Player /

3
ответ дан 4 December 2019 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: