2017-02-03 3 views
0

Как проверить, прекратилась ли передача HLS?Цель c Проверить, когда HLS прекратила потоковое вещание

Мой код:

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) 
{ 
    NSHTTPURLResponse *tempResponse = (NSHTTPURLResponse *) response; 

    if (error || [tempResponse statusCode] != 200) 
    { 
     //the video has stopped, do my stuff 
    } 
}]; 

Текущая проблема даже видео явно остановился потоковое, видеоплеер также полностью остановлен. Он по-прежнему возвращает мне statusCode = 200, который говорит мне, что видео все еще играет. Как реализовать его правильным и точным способом? Спасибо

+0

Код статуса HTTP не имеет никакого отношения к тому, играет ли видео или нет. Разбор списка воспроизведения HLS. –

+0

Можете ли вы уточнить свое предложение? Если код статуса не имеет к нему никакого отношения, то что может быть правильным? – bubibu

+0

Как я уже сказал, проанализируйте данные плейлиста HLS, которые вы получаете с сервера там. Это скажет вам, что происходит в потоке. –

ответ

0

Когда вы сделаете свой запрос, вы получите список воспроизведения HLS. Код состояния сервера ничего не значит, поскольку он является только кодом статуса HTTP, и вы получите список воспроизведения, независимо от статуса воспроизведения, по крайней мере в течение некоторого времени.

плейлиста HLS будет содержать конечный маркер, если потоковый закончилась:

#EXT-X-ENDLIST 

Более подробную информацию можно найти из Apple's documentation.

Обратите внимание, что плейлист скажет вам, закончилось ли окончание завершение конца, если воспроизведение остановлено. В списке может быть много видео, и единственный способ узнать, проиграл ли воспроизведение, - это попросить компонент, выполняющий воспроизведение.

+0

«Список воспроизведения HLS будет содержать маркер конца, если потоковая передача закончилась», как я могу проверить это? «EXT-X-ENDLIST», где это будет возвращено? – bubibu

+0

@bubibu Все еще в данных, которые вы загружаете в свой код –

+0

# EXTM3U # EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 722000, Это то, что данные вернули мне, я не мог найти # EXT-X-ENDLIST – bubibu

Смежные вопросы