G@riK Опубликовано 11 октября, 2011 · Жалоба Вечер добрый. Стоит задача реализовать VOD для DIB-120 (прошивка 4.06.011). В настройках приставки указываю адрес своего сервере, а точнее адрес странички на нём, такого содержания: <html> <head> <meta http-equiv="Pragma" content="no-cache"> </head> <script> var stb_media=new Stb_Media(); var stb=new Stb(); function keypress(event) { var key = event.keyCode ? event.keyCode : event.which; stb.print("key:"+key); switch(key) { case 122: stb_media.setAlphaLevel(0); stb_media.play("rtsp://SERVER_IP:55555/test"); break; case 121: stb_media.setPIG(true,0,0,0,0); stb_media.stop(); stb_media.setAlphaLevel(255); break; } } function initPage() { stb_media.setTransparentColor(0xFF00FF00); stb_media.setAlphaLevel(255); stb_media.setPIG(false); document.addEventListener("keypress",keypress,false); } function exitPage(){ stb_media.setPIG(true,0,0,0,0); stb_media.stop(); stb_media.setAlphaLevel(255); } window.onload=initPage; window.onunload=exitPage; </script> <body bgcolor="grey"> </body> </html> Т.е. на данном этапе при нажатии кнопки start должно начинать проигрывание видео, при stop соответственно останавливаться. VoD реализуется с помощью VLC таким образом: vlc --ttl 12 -vvv --vlm-conf /home/vlc/vod.conf --sout-x264-level 41 --sout "#transcode{venc=x264{level=4.1,bframes=0,keyint=250,qpmin=20,qpmax=50,ref=5,merange=24,mixed-refs=yes,direct=auto,me=umh,subme=7,trellis=2,weightb=yes,partitions=all,vbv-maxrate=920,vbv-bufsize=9000,ratetol=100.0,scenecut=60},vb=820,acodec=mp3,ab=128,deinterlace=yes,width=800,height=600,fps=25}" -I telnet --rtsp-host 0.0.0.0:55555 В конфиге vod.conf указано следующее: new test vod enabled setup test input file:///home/vlc/vod.m4v Начальные параметры vod.m4v: Кодек: H264 - MPEG-4 AVC (part 10) (h264) Разрешение: 640x360 Частота кадров: 150 Зайдя через приставку в раздел VOD я вижу серый экран. Нажимаю кнопку старт и вижу на интерфейсе сервере, что полился UDP-трафик на приставку, но никакого изображения на экране нет. На кнопку стоп также нет никакой реакции, поток продолжает литься. Делал мирроринг порта на свитче, куда подключена приставка - UDP-трафик льется активно. Также с помощью VLC записывал без транскодинга один из IPTV-каналов и затем пробовал его вещать на камеру (также без транскодинга), но опять нет никакого изображения. Кто-нибудь может подсказать, что я делаю не так? Может неправильно с помощью VLC транскодирую поток? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
G@riK Опубликовано 11 октября, 2011 · Жалоба Хм, попробовал еще вот так: vlc --ttl 12 -vvv --vlm-conf /home/vlc/vod.conf --sout-x264-level 41 --sout "#transcode{vcodec=mp2v,vb=1024,scale=1,acodec=mp2a,ab=192,channels=2,fps=25}" -I telnet --rtsp-host 0.0.0.0:55555 При этом в конфиг /home/vlc/vod.conf добавил: setup test mux mp2t Начало показывать. Но есть артефакты, буду пробовать дальше. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
RealResident Опубликовано 27 октября, 2011 (изменено) · Жалоба Только сейчас вчитался в твои команды. :) Так ты транскодинг на лету ещё затеял, да и ещё в х264... Так оно точно будет осыпаться. Тут даже гадать не надо. Все что написанно ниже -- бред, оставлен для исторической справедливать, мол, были времена когда я так думал. Ну как? Поборол артефакты? Эти артефакты старая болезнь vlc/dvblast, которую разработчики не видят или делают вид что не видят. Конечно, если вещатель работает на пустом сервере, то все ок, если чуть подгрузить или проц или сеть, то все -- посыпались родные. Vlc к VoDу получилось прикрутить с большими извращениями и то это получился не VoD, а китайская подделка. В vlc используется функция начала/остановки вещания по командам из телнета (у него и библиотеки есть, что бы сразу из программы дергать). По сути на СТБ плэй/стоп в ВоДе -- кнопки в билинге, который уже дергает vlc. Vlc сам не в сеть вещает по rstp, а в пайп, где его подхватывает (перебуферизирует) тот же getstream (можно взять что нравиться, к чему привыкли) и уже скидывает нормальный, не битый аккуратный поток по udp. Вообще говоря vcl ещё та засада -- все выглядит очень аппетитно и тесты отлично проходят, а как начинается эксплуатация -- засада. Или все заново с нуля делать или плясать с бубнами вокруг, пытаясь оживить что уже сделанно. Обидно, да, так хорошо все выглядит и так бездарно все слито где-то на уровне системного програмирования. При чем они типа починили эту багу: если на самом vlc смотреть этот битый поток, то не так уж все страшно выглядит, как запускаешь в СТБ -- пошли пироги. Хотя знаю некоторые мидлвари, где именно vlc используют для VoD'а, вот уж хрен знает, переписывали они его что ли или я такой один криворукий... Идея пришла, а что если попробовать этот vlc-поток через jumbo-сегмент прогнать... там же буферы аппаратные большие, может в этих буферах все как раз и сгладится... без извращений "промежуточный стример". Изменено 27 октября, 2011 пользователем RealResident Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...