2015-10-25 3 views
2

У меня есть поток RTSP, который я смог перекодировать в HLS через VLC. Теперь он отлично работает на Android и на настольных браузерах (через flash).Поток HLS не работает на устройствах Apple

Но не на Apple (я могу проверить его на iPad и рабочем столе Safari на моей виртуальной машине). Я вижу игрока, но когда я нажимаю кнопку «играть», все, что я вижу, это черный прямоугольник внутри проигрывателя. На рабочем столе Safari также есть текст «Загрузка ...» рядом с кнопкой воспроизведения/паузы, и ничего больше не происходит.

Мой HTML:

<video id="player" controls style="width:100%; height:100%"> 
    <source src="http://178.79.164.114/playlist.m3u8" type="application/x-mpegURL"> 
</video> 

Команда для VLC:

vlc -I dummy rtsp://<stream-url> --sout '#transcode{width=320,height=240,fps=25,vcodec=h264,vb=256,acodec=none,venc=x264{aud,profile=baseline,level=30,keyint=30,bframes=0,ref=1,nocabac}}:std{access=livehttp{seglen=10,delsegs=true,numsegs=5,index=/path/to/server/directory/playlist.m3u8,index-url=http://178.79.164.114/seg-########.ts},mux=ts{use-key-frames},dst=/path/to/server/directory/seg-########.ts}' 

И пример файла списка воспроизведения:

#EXTM3U 
#EXT-X-TARGETDURATION:10 
#EXT-X-VERSION:3 
#EXT-X-ALLOW-CACHE:NO 
#EXT-X-MEDIA-SEQUENCE:179 
#EXTINF:9.60, 
http://178.79.164.114/seg-00000179.ts 
#EXTINF:9.60, 
http://178.79.164.114/seg-00000180.ts 
#EXTINF:9.60, 
http://178.79.164.114/seg-00000181.ts 
#EXTINF:9.61, 
http://178.79.164.114/seg-00000182.ts 
#EXTINF:9.59, 
http://178.79.164.114/seg-00000183.ts 

А вот странный вывод ffprobe http://178.79.164.114/playlist.m3u8 (почему есть эти N/A, а variant_bitrate - 0?). Может быть, это может помочь:

Input #0, hls,applehttp, from 'http://178.79.164.114/playlist.m3u8': 
    Duration: N/A, start: 3995.330722, bitrate: N/A 
    Program 0 
    Metadata: 
     variant_bitrate : 0 
    Stream #0:0: Video: h264 (Constrained Baseline) ([27][0][0][0]/0x001B), yuv420p, 320x240 [SAR 11:12 DAR 11:9], 25 fps, 25 tbr, 90k tbn, 50 tbc 

Я также настроен правильные типы MIME для .m3u8 и .ts файлы и провел день поиска и различные опции для команды перекодирования: ширина, высота, битрейт, кадров в секунду, различные профили и уровни ... - ничего не работает. Но если я попробую несколько примеров из apple (http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8) - все в порядке, хотя это не прямой эфир.

Если у кого есть идеи или есть возможность проверить мой поток с помощью mediastreamvalidator - пожалуйста, помогите.

UPDATE

Теперь я буду экспериментировать с вариантом списка воспроизведения, но это ничего не меняет.

+1

'variant_bitrate: 0' отображается, если вы не используете вариантный список воспроизведения. Можете ли вы попытаться поставить тихую звуковую дорожку и посмотреть, не изменилось ли это? – aergistal

+0

@aergistal извините, не было возможности проверить ранее. И это работает, спасибо! Но почему это не без звуковой дорожки? Это документированное поведение? Также вы можете создать ответ, и я его приму –

ответ

2

Плеер может ожидать мультимедийное видео и аудио, чтобы добавить звуковую дорожку без звука.

Apple HLS documentation говорит:

Файлы сегмента медиа, как правило, получают путем потока сегментировани, на основе входных данных от кодера, и состоят из серии .ts файлов, содержащих сегменты в MPEG-2 транспорта поток проведения видео H.264 и AAC, MP3 или AC-3 аудио

Поддержка только аудио потоков упоминается в Technical Note TN2224 и седьмой пересмотр протокола была введена поддержка альтернативных выдач (unmuxed потоков) но t его делается с помощью EXT-X-MEDIA тегов в главном плейлисте, контролирующем воспроизведение (т. е. медиа-плейлист).

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