Иванов Денис Опубликовано 25 апреля, 2012 (изменено) · Жалоба Нагуглившись начитавшись о сабже и различных его реализациях, решил попробовать поиграться c адаптивным HLS. В перспективе хотелось бы применить технологию для публикации изображения с камеры на веб страничке, и чтобы была возможность просмотра с мобильных устройств на Android и iOS. Если верить википедии, то HLS работает в Android 3/4 и iOS 4.3/5 Рекомендованные форматы: для Android, для iOS C iOS всё просто: <html> <head> <title>Apple Test</title> <meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/> </head> <body style="background-color:#FFFFFF; "> <center> <video src="index.m3u8" controls autoplay ></video> </center> </body> </html> Но вот с Android уже не так просто. Если на Android установить Adobe Flash 11, то будет работать плеер основанный на OSMF, но его еще предстоит найти или написать. Смог нагуглить только два бесплатных плеера: 1) бета версия JWPlayer 2) плагин для MediaCore, который я так и не смог установить. Никаких инструкций по установке плагина тоже не нашёл. Ну чтож, выбора особо нет... Встроил jwplayer в страничку: <html> <head> <script type="text/javascript" src="player.js"></script> </head> <body> <div id="player">You need Flash to play this</div> <script type="text/javascript"> jwplayer("player").setup({ file: 'high.m3u8', flashplayer: 'player.swf', provider:'adaptiveProvider.swf', width: 300, height: 200, }); function loadStream(url) { jwplayer("player").load({file: url,provider: 'adaptiveProvider.swf'}); jwplayer("player").play(); return false; } </script> </body> </html> Денег конечно же нет, поэтому пришлось установить vlc 2 + apache2 на Ubuntu 11.10 amd64 По умолчанию vlc подтянул обычный libavcodec, но позже я заменил его на libavcodec-extra Первая попытка: vlc -I dummy -R rtsp://login:password@mycamera.org/live.sdp \ --sout='#std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/index.m3u8, \ index-url=http://mysite.org/segment-#.mts}, \ mux=ts{use-key-frames}, \ dst=/var/www/segment-#.mts}' Камера уже отдаёт H264 (AVC+AAC), поэтому без транскодинга. jwplayer проиграл первый сегмент и остановился издав несколько звуков похожих на щелчки. Попробовал отключить звук на камере и в vlc vlc -I dummy -R rtsp://login:password@mycamera.org/live.sdp \ --sout='#transcoding{acodec=none}:std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/index.m3u8, \ index-url=http://mysite.org/segment-#.mts}, \ mux=ts{use-key-frames}, \ dst=/var/www/segment-#.mts}' Не помогло. Попробовал с транскодингом звука: vlc -I dummy -R rtsp://login:password@mycamera.org/live.sdp \ --sout='#transcoding{acodec=aac}:std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/index.m3u8, \ index-url=http://mysite.org/segment-#.mts}, \ mux=ts{use-key-frames}, dst=/var/www/segment-#.mts}' Не помогло. Попробовал с транскодингом и звука и видео: vlc -I dummy -R rtsp://login:password@mycamera.org/live.sdp \ --sout='#transcoding{vcodec=h264,acodec=aac}:std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/index.m3u8, \ index-url=http://mysite.org/segment-#.mts}, mux=ts{use-key-frames}, dst=/var/www/segment-#.mts}' jwplayer не останвливается, но картинка очень сильно рассыпается - смотреть невозможно. Позже нашёл причину остановки jwplayer на форуме longtailvideo.com Получилось забирать H264 с камеры и транскодить только звук: vlc -I dummy -R rtsp://login:password@mycamera.org/live.sdp \ --sout='#transcoding{aenc=ffmpeg{aac-profile=low},acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/index.m3u8, \ index-url=http://mysite.org/segment-#.mts}, \ mux=ts{use-key-frames}, \ dst=/var/www/segment-#.mts}' Показывает отлично. Далее попробовал разбить поток на два: первый оригинальный - high.m3u8, а второй с заниженными разрешением, частотой кадров и битрейтом - low.m3u8 Указал их в общем index.m3u8 #EXTM3U #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=3000000 high.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=50000 low.m3u8 vlc -I dummy -R rtsp://login:password@mycamera.org/live.sdp \ --sout='#transcoding{aenc=ffmpeg{aac-profile=low},acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/high.m3u8, \ index-url=http://mysite.org/high-#.mts}, \ mux=ts{use-key-frames}, \ dst=/var/www/high-#.mts}' \ --sout='#transcoding{vcodec=h264,width=174,height=144,fps=12,vb=50,aenc=ffmpeg{aac-profile=low},acodec=mp4a,ab=128,channels=2,samplerate=44100}:std{access=livehttp{seglen=10, \ numsegs=3, \ index=/var/www/low.m3u8, \ index-url=http://mysite.org/low-#.mts}, \ mux=ts{use-key-frames}, dst=/var/www/low-#.mts}' Как работает "адаптивность" проверять не стал, т.к. в low.m3u8 рассыпается картинка. :( Проверял с разными источниками видео (камерами, файлами со статическим видео) - сыпется. Боюсь что сам не справлюсь с рассыпанием картинки, поэтому прошу помощи... :) Изменено 25 апреля, 2012 пользователем Иванов Денис Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
t0ly Опубликовано 27 апреля, 2012 · Жалоба а вы уверенны что производительности хватает на перекодирование low-потока? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Иванов Денис Опубликовано 28 апреля, 2012 (изменено) · Жалоба Должно хватать. :) Была возможность взять для экспериментов целый свободный сервер на Core i7 975 3.33GHz + 3GB RAM + SSD. Как уже писал выше, установил на этот сервер Ubuntu и VLC 2. Так что все свободные ресурсы в распоряжении одного экземпляра VLC. Изменено 28 апреля, 2012 пользователем Иванов Денис Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
t0ly Опубликовано 10 мая, 2012 · Жалоба threads=2..4 внутри transcode пробовали ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pchol Опубликовано 12 июня, 2012 · Жалоба У h264 есть встроенные profile. У VLC есть их маппинг profile=<slow|veryslow|fast|ultrafast|veryfast|placebo>. Можно попробовать ultrafast и оценить, есть ли рассыпания. В любом случае если картинка сыпется то VLC в лог должен писать с чем же проблемы. Может быть что угодно, начиная от реальных проблем с произсодительностью, заканчивая проблемами в сети. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
npokypop Опубликовано 14 мая, 2014 · Жалоба Так кто нибудь в реальности пользуется mediacore? Где можно увидеть в действии? Какие требования к серверу? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
^rage^ Опубликовано 15 мая, 2014 · Жалоба андроид нативно умеет hls. никакого флеша не надо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...