mort1k Posted April 20, 2017 Posted April 20, 2017 (edited) О конструктиве головных станций и подготовки потоков написано много емких и интересных тем. В этой теме предлогаю обсудить реализацию самой догоростоящей и ресурсоемкой составляющей головной станции - транскодинг потоков. Прошу присоединяться к теме для обмена опытом. Возможно у кого уже реализован проект и есть конечные цифры по вариантам и стоимости реализации для обработки ~120каналов. __________ третий вариант ответа подразумевает (не планируется/не требуется/не используем и т.д) Edited April 20, 2017 by mort1k
a_n_h Posted April 20, 2017 Posted April 20, 2017 (edited) Опрос: Планируется ли использовать в своем сервисе iptv а где не планируется? или не нужно? как-то предвзято опрашиваете..... Edited April 20, 2017 by a_n_h
KaYot Posted April 20, 2017 Posted April 20, 2017 Нужен вариант "не интересно/не нужно". Он будет лидером))
mort1k Posted April 20, 2017 Author Posted April 20, 2017 (edited) Нужен вариант "не интересно/не нужно". Он будет лидером)) Если так будет, это будет очень странно. Клиенты упакованы различными устройствами с поддержкой функций smart, устройств на android/ios. На них не комфортно просматривать потоки mpegts с астры/udpxy. На рынке появляются новые OTT компании (youtv, trinity tv, lanet tv) т.е. спрос есть. Есть подозрение, что отсутсвует дешевое/массовое решение для реализации этого. Edited April 20, 2017 by mort1k
Den_LocalNet Posted April 20, 2017 Posted April 20, 2017 А что у вас не вышло с той же астрой и девайсами на андроид/айос/смарт?
mort1k Posted April 20, 2017 Author Posted April 20, 2017 (edited) Тяжко решаемые задачи с mpegts-потоками: 1. время переключения каналов на смартах (иногда до 5 сек.) 2. поток не играется на всем перечне smart/ios/android устройств базовым плеером, нужен кастомный плеер с софтовым декодером 3. гемор с плюшками timeshift, catchup 4. кеширование потоков Edited April 21, 2017 by mort1k
mort1k Posted April 25, 2017 Author Posted April 25, 2017 (edited) Оставлю это тут: http://www.infomir.eu/journal/BROADVISION-Q12017-RU.pdf конфигурация транскодера mpeg2 -> h264 на ~20 SD-каналов: Gigabyte GA-H170M-HD3+Intel Core i5-6600+Kingston DDR3-1600 8192MB+GameMax ST-607+SanDisk Cruzer Fit Ultra 16GB Инсталяция хостовой ОС: #iso install centos 7.2.1511 yum -y install epel-release yum install htop mc wget #change repo yum.repos.d > vault sed -i "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo &&\ sed -i "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-Base.repo &&\ yum --releasever=7.2.1511 update reboot #install intel media SDK cd /opt/pkgs wget http://registrationcenter-download.intel.com/akdlm/irc_nas/vcp/11167/MediaServerStudioEssentials2017R2.tar.gz ./install_sdk.sh cd /opt/intel/mediasdk/include/ && mkdir mfx && cp *.h mfx echo -e "prefix=/opt/intel/mediasdk \n\ exec_prefix=\${prefix} \n\ libdir=\${prefix}/lib/lin_x64 \n\ includedir=\${prefix}/include \n\ Name: libmfx \n\ Description: Intel Media SDK \n\ Version: 16.5 \n\ Libs: -L\${libdir} -lmfx -lva -lstdc++ -ldl -lva-drm -ldrm \n\ Cflags: -I\${includedir} -I/usr/include/libdrm" > /usr/lib64/pkgconfig/libmfx.pc #docker yum -y install yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum-config-manager --enable docker-ce-edge yum -y install docker-ce #igmpproxy занятно для кластера транскодеров на базе swarm и services, с изменяемыми node label для балансировки. Dockerfile контейнера с ffmpeg+qsv: FROM centos:7.2.1511 ADD msdk2017r2_centos_rpm/* /tmp/ ENV LIBVA_DRIVERS_PATH="/opt/intel/mediasdk/lib64" \ LIBVA_DRIVER_NAME="iHD" \ MFX_HOME="/opt/intel/mediasdk"\ PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" \ SRC="/usr/local" RUN cd /tmp &&\ sed -i "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo &&\ sed -i "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-Base.repo &&\ /tmp/install_sdk_CentOS.sh &&\ mkdir /opt/intel/mediasdk/include/mfx &&\ cp /opt/intel/mediasdk/include/*.h /opt/intel/mediasdk/include/mfx &&\ echo -e "prefix=/opt/intel/mediasdk \n\ exec_prefix=\${prefix} \n\ libdir=\${prefix}/lib/lin_x64 \n\ includedir=\${prefix}/include \n\ Name: libmfx \n\ Description: Intel Media SDK \n\ Version: 16.5 \n\ Libs: -L\${libdir} -lmfx -lva -lstdc++ -ldl -lva-drm -ldrm \n\ Cflags: -I\${includedir} -I/usr/include/libdrm" > /usr/lib64/pkgconfig/libmfx.pc &&\ git clone --depth 1 git://github.com/yasm/yasm.git && cd yasm && autoreconf -fiv && ./configure && make && make install && cd .. &&\ git clone --depth 1 git://git.videolan.org/x264 && cd x264 && ./configure --enable-static --disable-cli && make && make install && cd .. &&\ git clone --depth 1 git://git.code.sf.net/p/opencore-amr/fdk-aac && cd fdk-aac && autoreconf -fiv && ./configure --disable-shared && make && make install && cd .. &&\ curl -O http://ffmpeg.org/releases/ffmpeg-3.2.4.tar.bz2 && tar xjvf ffmpeg-3.2.4.tar.bz2 && cd ffmpeg-3.2.4 &&\ ./configure --extra-ldflags="-L${SRC}/lib -ldl" --disable-debug --disable-doc --disable-ffserver --disable-ffprobe --disable-ffplay --disable-devices --pkg-config-flags="--static" --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libx264 --enable-libmfx --enable-avresample &&\ make -j4 && make install && hash -r &&\ yum -y groupremove "Development tools" && yum -y remove $(rpm -qa "*-devel") &&\ yum -y remove wget urw-fonts asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto systemtap patchutils glibc-headers glibc-devel bc subversion perl mercurial kernel-headers openssh git cmake gettext swig &&\ yum -y autoremove && yum clean all && rm -rf /tmp/* && rm -Rf /var/lib/yum/* && rm -Rf /var/lib/rpm/* && rm -Rf /var/cache/* ENTRYPOINT ["/usr/local/bin/ffmpeg"] CMD ["--help"] или по вкусу: https://github.com/01org/gstreamer-media-SDK Прошу подключаться заинтересованых в паблик или ЛК для совместной обработки напильником ЗЫ: cледующий этап: формирование, резервирование, кеширование и воспроизведение hls|dash-потоков на клиентских устройствах вообще даром) Edited April 25, 2017 by mort1k
FeRRiT Posted April 25, 2017 Posted April 25, 2017 Оставлю это тут: http://www.infomir.eu/journal/BROADVISION-Q12017-RU.pdf конфигурация транскодера mpeg2 -> h263 на ~20 SD-каналов: Gigabyte GA-H170M-HD3+Intel Core i5-6600+Kingston DDR4-2400 8192MB+GameMax ST-607+SanDisk Cruzer Fit Ultra 16GB Немного офтоп , а как Вы умудрились память DDR4 воткнуть в мамку с DDR3 ?
mort1k Posted April 25, 2017 Author Posted April 25, 2017 (edited) Спасибо, понятно что ни как .. опечатка. зЫ интересно кто нибудь пользует Intel VCA1283LVV http://www.intel.com/content/dam/support/us/en/documents/server-products/server-accessories/VCA_SoftwareUserGuide_1_3.pdf ? Edited April 25, 2017 by mort1k
N.Leiten Posted April 26, 2017 Posted April 26, 2017 Тяжко решаемые задачи с mpegts-потоками: 1. время переключения каналов на смартах (иногда до 5 сек.) 2. поток не играется на всем перечне smart/ios/android устройств базовым плеером, нужен кастомный плеер с софтовым декодером 3. гемор с плюшками timeshift, catchup 4. кеширование потоков Для mpegts проблема с переключением решается буферизацией и отдачей потока клиенту сразу с key-frame, чего обычные проксики не умеют. Естественно, это возможно для unicast потоков, в multicast только буферизация на клиенте, что и выражается в долгом ожидании этого key-frame в потоке, как решение - пинать поставщика потоков, на тему уменьшения периода посылки этих ключевых кадров, ну или самому транскодировать, но это затратно. При получении мультикаст mpegts (h264+mp2) ничто не мешает заниматься формированием hls, который сейчас играется на всех платформах в том или ином виде. Нужно только транскодировать аудио в aac и перепаковать контейнер, что не требует относительно больших затрат процессора, т.к. видео-поток остаётся неизменным. PS. И да, вся основная функциональность давно есть в открытом ffmpeg для этих целей. В частности проблема буферизации решается средствами ffserver, там есть волшебный ключик StartSendOnKey.
mort1k Posted April 26, 2017 Author Posted April 26, 2017 (edited) как решение - пинать поставщика потоков, на тему уменьшения периода посылки этих ключевых кадров, ну или самому транскодировать, но это затратно. тема как раз об этом! ) При получении мультикаст mpegts (h264+mp2) ничто не мешает заниматься формированием hls, который сейчас играется на всех платформах в том или ином виде. Нужно только транскодировать аудио в aac и перепаковать контейнер, что не требует относительно больших затрат процессора, т.к. видео-поток остаётся неизменным. Верно, и таких потоков с каждым днем все больше, но тут другая, возможно надуманая, проблема с интерлейсингом, некоторые железячные плеера очень любят progressive. В частности проблема буферизации решается средствами ffserver, там есть волшебный ключик StartSendOnKey. Ни разу не смотрел в сторону ffserver, интересно. Edited April 26, 2017 by mort1k
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now