RTMP сервер — различия между версиями

Материал из virt2real wiki
Перейти к: навигация, поиск
Строка 45: Строка 45:
 
<Ключ потока> выглядит примерно так: DKab11bfb0qSHLceJhf62gePBkEgTFuw
 
<Ключ потока> выглядит примерно так: DKab11bfb0qSHLceJhf62gePBkEgTFuw
  
==Трансляция сервер Livestream==
+
 
==Трансляция сервер Justin.tv==
+
 
==Трансляция сервер Youtube==
 
==Трансляция сервер Youtube==
  

Версия 09:09, 12 ноября 2014

Содержание

Общий принцип

Примеры скриптов трансляции

Для Flash плееров необходимо указывать idrinterval и intraframeinterval, иначе будет проблема с ключевыми кадрами.


Трансляция на встроенный nginx-rtmp сервер

gst-launch v4l2src always-copy=false chain-ipipe=true  ! \
video/x-raw-yuv,format='(fourcc)'NV12, width=640, height=480, framerate='(fraction)'30/1 ! \
dmaiaccel ! \
dmaienc_h264 ddrbuf=true copyOutput=false encodingpreset=2 ratecontrol=1 targetbitrate=600000 intraframeinterval=50 idrinterval=100 rcalgo=0 ! \
flvmux streamable=true ! \
rtmpsink location="rtmp://localhost/live/ playpath=v2r live=1" sync=false


Трансляция сервер ЯТВ

Аналогично первому примеру, но требуется добавить параметр "app=", значение которого для своего канала можно узнать в панели управления на сайте yatv.ru, подробности см. тут.

Например, для моего канала app=live/gol_tv/p/1f5351030932991

gst-launch v4l2src always-copy=false chain-ipipe=true  ! \
video/x-raw-yuv,format='(fourcc)'NV12, width=640, height=480, framerate='(fraction)'30/1 ! \
dmaiaccel ! \
dmaienc_h264 ddrbuf=true copyOutput=false encodingpreset=2 ratecontrol=1 targetbitrate=600000 intraframeinterval=50 idrinterval=100 rcalgo=0 ! \
flvmux streamable=false ! \
rtmpsink location="rtmp://m1.d0.yatv.ru app=live/gol_tv/p/1f5351030932991 playpath=v2r live=1" sync=false

Трансляция сервер Ustream

gst-launch v4l2src always-copy=false chain-ipipe=true !\
capsfilter caps=video/x-raw-yuv,format='(fourcc)'NV12,width=1280,height=720,framerate='(fraction)'30/1 !\
dmaiaccel !\
dmaienc_h264 ddrbuf=false copyOutput=false encodingpreset=2 ratecontrol=1 targetbitrate=1000000 intraframeinterval=30 idrinterval=60 t8x8intra=true t8x8inter=true airrate=30 !\
flvmux streamable=true !\
rtmpsink location="<RTMP URL>/<Ключ потока>" sync=false enable-last-buffer=false

где <RTMP URL> и <Ключ потока> берутся с сайта http://www.ustream.tv/manage-show/remote/9906504

<RTMP URL> выглядит примерно так: rtmp://1.9906504.fme.ustream.tv/ustreamVideo/9906504

<Ключ потока> выглядит примерно так: DKab11bfb0qSHLceJhf62gePBkEgTFuw


Трансляция сервер Youtube

Настройка трансляции: https://support.google.com/youtube/answer/2853700?hl=ru&ref_topic=2853713

На вашей странице создания живой трансляции на YouTube будут указаны ссылка и имя трансляции. Их необходимо подставить в соответствующее место в коде

gst-launch v4l2src queue-size=6 always-copy=false chain-ipipe=true  ! \
'video/x-raw-yuv,format=(fourcc)NV12, width=640, height=480' ! videorate ! 'video/x-raw-yuv,framerate=(fraction)30/1' ! \
dmaiaccel ! \
dmaienc_h264 ddrbuf=true copyOutput=true encodingpreset=2 ratecontrol=1 profile=66 level=30 entropy=0 t8x8intra=0 aud=false headers=false bytestream=false seqscaling=0 targetbitrate=600000 intraframeinterval=50 idrinterval=100 ! queue ! \
flvmux streamable=false name=mux alsasrc latency-time=10000 slave-method=0 ! \
audio/x-raw-int, channels=1, rate=32000, endianness=1234,signed=true,width=16,depth=16 ! queue ! \
dmaienc_aac bitrate=32000 tns=false copyOutput=true outputBufferSize=10000 fullbandwidth=true ! mux. mux. ! queue !  \
rtmpsink location="УКАЗАННЫЙ_В_НАСТРОЙКАХ_АДРЕС/УКАЗАННОЕ_В_НАСТРОЙКАХ_ИМЯ_ТРАНСЛЯЦИИ live=1" sync=true

В моем случае для одной из трансляций последняя стрчока выглядела так:

rtmpsink location="rtmp://a.rtmp.youtube.com/live2/realizator100-0431.hdxe-q155-cc71-azke live=1" sync=true


Обращаю внимание, что для каждой новой создаваемой вами трансляции гугл генерирует новое имя. Т.е. начиная новую трансляцию на YouTube не забудьте указать новое имя в этой строчке.

Трансляция со звуком

На примере сервиса ЯТВ.

gst-launch v4l2src always-copy=false chain-ipipe=true  ! \
'video/x-raw-yuv,format=(fourcc)NV12, width=640, height=480,framerate=(fraction)30/1' ! \
dmaiaccel ! queue ! \
dmaienc_h264 ddrbuf=true copyOutput=false encodingpreset=2 profile=66 \
level=30 entropy=0 t8x8intra=0 aud=false headers=false bytestream=false \
seqscaling=0  ratecontrol=1  targetbitrate=1000000 intraframeinterval=50 \
idrinterval=100 airrate=0 ! \
flvmux streamable=false name=mux alsasrc latency-time=200000 slave-method=0 ! queue ! \
audio/x-raw-int, channels=1, rate=16000, endianness=1234,signed=true,width=16,depth=16 ! \
dmaienc_aac bitrate=16000 tns=false copyOutput=false outputBufferSize=3000000 ! mux. mux. ! \
rtmpsink location="rtmp://m1.d0.yatv.ru app=live/gol_tv/p/1341de6789142311 playpath=cam1 live=1" \
blocksize=10000 enable-last-buffer=true preroll-queue-len=10 sync=false max-lateness=1000000

Ссылки по теме

http://habrahabr.ru/post/162237/


Дополнительные параметры цепочек

Можно посмотреть, указав имя цепочки в параметре утилиты gst-inspect

Например, для dmaienc_h264

gst-inspect dmaienc_h264