Перейти к содержимому
Калькуляторы

VOD + Dlink DIB120 + VLC

Вечер добрый.

 

Стоит задача реализовать 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 транскодирую поток?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хм, попробовал еще вот так:

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

 

Начало показывать. Но есть артефакты, буду пробовать дальше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только сейчас вчитался в твои команды. :) Так ты транскодинг на лету ещё затеял, да и ещё в х264... Так оно точно будет осыпаться. Тут даже гадать не надо. Все что написанно ниже -- бред, оставлен для исторической справедливать, мол, были времена когда я так думал.

 

Ну как? Поборол артефакты? Эти артефакты старая болезнь vlc/dvblast, которую разработчики не видят или делают вид что не видят. Конечно, если вещатель работает на пустом сервере, то все ок, если чуть подгрузить или проц или сеть, то все -- посыпались родные. Vlc к VoDу получилось прикрутить с большими извращениями и то это получился не VoD, а китайская подделка. В vlc используется функция начала/остановки вещания по командам из телнета (у него и библиотеки есть, что бы сразу из программы дергать). По сути на СТБ плэй/стоп в ВоДе -- кнопки в билинге, который уже дергает vlc. Vlc сам не в сеть вещает по rstp, а в пайп, где его подхватывает (перебуферизирует) тот же getstream (можно взять что нравиться, к чему привыкли) и уже скидывает нормальный, не битый аккуратный поток по udp.

 

Вообще говоря vcl ещё та засада -- все выглядит очень аппетитно и тесты отлично проходят, а как начинается эксплуатация -- засада. Или все заново с нуля делать или плясать с бубнами вокруг, пытаясь оживить что уже сделанно. Обидно, да, так хорошо все выглядит и так бездарно все слито где-то на уровне системного програмирования. При чем они типа починили эту багу: если на самом vlc смотреть этот битый поток, то не так уж все страшно выглядит, как запускаешь в СТБ -- пошли пироги. Хотя знаю некоторые мидлвари, где именно vlc используют для VoD'а, вот уж хрен знает, переписывали они его что ли или я такой один криворукий...

 

Идея пришла, а что если попробовать этот vlc-поток через jumbo-сегмент прогнать... там же буферы аппаратные большие, может в этих буферах все как раз и сгладится... без извращений "промежуточный стример".

Изменено пользователем RealResident

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.