Jump to content


Кодирование потокового видео для Second Life


  • You cannot reply to this topic
1 reply to this topic

#1 SOb Zemlja

    Активный участник

  • Главные администраторы
  • PipPipPipPip
  • 791 posts
  • Пол:М
  • Откуда:Россия, Москва
  • Основной цех:Строители
  • Второй цех:Скриптеры
  • SL Status: 

Posted 22.01.09 - 16:13

  • Клиент — QuickTime версии 7 и выше
  • Источник видео/audio — DirectShow

  • В качестве формата сжатия выбран H264 как обеспечивающий отличное качество и поддерживаемый клиентом (1) на различных платформах.
  • В качестве ПО для конвертации выбран VLC (VideoLAN) версии 0.8.6d, как обеспечивающий сжатие выбранного формата с источника (2).
  • Для работы не используется графический интерфейс плеера.

Команда для запуска:

start vlc -vvvv --intf dummy --no-audio dshow:// :dshow-vdev="SplitCam Capture" :dshow-adev="none" :dshow-size="320x240" :dshow-fps=17 --sout #transcode{venc=x264{keyint=75,bframes=2},vcodec=h264,vb=64,scale=1,acodec=mp4a,
ab=128,threads=auto,fps=17}:duplicate{dst=display,dst=rtp{dst=192.168.0.1,ttl=127, port=20000,port-audio=20002,port-video=20004,name=name,email=email,description=description,url=url,sdp="http://:8383/05022008.sdp"}} --sout-all

где:

-vvvvуровень отладки
--intf dummyиспользовать консоль вместо графического интерфейса плеера
--no-audioполное отключение звука, работать только с видео
dshow://использовать DirecShow для захвата
:dshow-vdev="SplitCam Capture"источник видео для захвата
:dshow-adev="none"источник аудио для захвата
:dshow-size="320x240"размер картинки при захвате
:dshow-fps=17частота кадров при захвате
--soutвывод захваченного видео
#transcode{конвертировать захваченное видео/аудио
venc=x264{keyint=75,bframes=2}параметры x264, не все параметры поддерживаются, подробнее тут
vcodec=h264кодек для видео — h264 (x264 — библиотека для кодирования кодеком h264)
vb=64битрейт видео
scale=1масштабирование видео
acodec=mp4aкодек для аудио
ab=128битрейт аудио
threads=autoколичество потоков при кодировании, зависит от количества CPU в системе
fps=17частота кадров после кодирования
:duplicate{дублировать конвертированное видео/аудио
dst=displayдублировать с низким качеством для контроля, в дополнительное окно
dst=rtp{дублировать для вещания по протоколу RTP
dst=192.168.0.1IP сервера с которого будет вестись вещание
ttl=127время жизни TCP пакета, чем быстрее сеть, тем меньше может быть параметр
port=20000порт элементарного потока (не знаю, что это)
port-audio=20002порт для передачи аудио
port-video=20004порт для передачи видео
name=name,email=email,description=description,url=urlописание потока
sdp="http://:8383/05022008.sdp"SDP описание потока формируемое на порту 8383 встроенного в VLC HTTP сервера
--sout-allвыбор всех элементарных потоков (тоже не знаю, что, но вроде нужно)

После запуска плеера должно появиться 2 окна. В одном из них картинка с источника. После чего поток можно будет открыть в QuickTime как http://192.168.0.1:8383/05022008.sdp

В случае ошибок — читать сообщения в окне отладки.

Attached Image: monthly_01_2009/post-1-1232627830.jpg

Получить перечисленный выше набор параметров путём выставления галочек в графическом интерфейсе не представляется возможным… поэтому вот так, в командной строке. На моей машине загрузка процессора (Centrino Duo 1.73GHz) ~30%, задержка ~5сек., это видно на скриншоте, картинки разные в окошках. На скриншоте фильм, ему конечно битрейт видео надо было выставить чуть больше, чем 64, но для web-камеры без активного движения и этого хватает.

#2 SOb Zemlja

    Активный участник

  • Главные администраторы
  • PipPipPipPip
  • 791 posts
  • Пол:М
  • Откуда:Россия, Москва
  • Основной цех:Строители
  • Второй цех:Скриптеры
  • SL Status: 

Posted 06.11.09 - 20:28

Больше и глубже. На хабре: VLC: Стрим и Стрим-Сервер #1.