Вот как я это сделал в Ubuntu:
Во-первых, соберите ffmpeg из исходного кода, чтобы включить драйверы libvpx (даже если вы используете версию, в которой она есть, вам нужны самые новые (на этот месяц)) для потоковой передачи WebM, потому что они только что добавили функциональность для включения глобальных заголовков).Я сделал это на сервере Ubuntu и на рабочем столе, и это руководство показало мне, как - инструкции для других ОС можно найти здесь .
Как только вы получитеВ соответствующей версии ffmpeg / ffserver вы можете настроить их для потоковой передачи, в моем случае это было сделано следующим образом.
На устройстве захвата видео:
ffmpeg -f video4linux2 -standard ntsc -i /dev/video0 http://<server_ip>:8090/0.ffm
- The "-f video4linux2 -standard ntsc -i / dev / video0 ", часть которого может изменяться в зависимости от вашего входного источника (у меня для карты видеозахвата).
Соответствующий отрывок ffserver.conf:
Port 8090
#BindAddress <server_ip>
MaxHTTPConnections 2000
MAXClients 100
MaxBandwidth 1000000
CustomLog /var/log/ffserver
NoDaemon
<Feed 0.ffm>
File /tmp/0.ffm
FileMaxSize 5M
ACL allow <feeder_ip>
</Feed>
<Feed 0_webm.ffm>
File /tmp/0_webm.ffm
FileMaxSize 5M
ACL allow localhost
</Feed>
<Stream 0.mpg>
Feed 0.ffm
Format mpeg1video
NoAudio
VideoFrameRate 25
VideoBitRate 256
VideoSize cif
VideoBufferSize 40
VideoGopSize 12
</Stream>
<Stream 0.webm>
Feed 0_webm.ffm
Format webm
NoAudio
VideoCodec libvpx
VideoSize 320x240
VideoFrameRate 24
AVOptionVideo flags +global_header
AVOptionVideo cpu-used 0
AVOptionVideo qmin 1
AVOptionVideo qmax 31
AVOptionVideo quality good
PreRoll 0
StartSendOnKey
VideoBitRate 500K
</Stream>
<Stream index.html>
Format status
ACL allow <client_low_ip> <client_high_ip>
</Stream>
- Обратите внимание, что это настроено для сервера в feeder_ip, чтобы выполнить вышеупомянутую команду ffmpeg, и для сервера в server_ip, чтобы сервер передавал client_low_ip через client_high_ip при обработке диалога mpeg to webm на server_ip (продолжение ниже).
Эта команда ffmpeg выполняется на машине, ранее называемой server_ip (она обрабатывает фактическое преобразование mpeg -> webm и передает ееобратно в ffserver в другом фиде):
ffmpeg -i http://<server_ip>:8090/0.mpg -vcodec libvpx http://localhost:8090/0_webm.ffm
После того, как все они будут запущены (сначала ffserver, затем процесс ffmpeg feeder_ip, затем процесс server_ip ffmpeg), вы сможете получить доступ кпрямой эфир на http://:8090/0.webm и проверить статус на http://:8090/
Надеюсь, это поможет.