Приветствую!
Всех с наступившим Новым годом 2017!
Пере до мной встала задача организовать потоковое вещание с вебки на линуксе.
Вещание происходит внутри локальной сети, поэтому в качестве протокола передачи хочу использовать rtp, rtsp, или udp - по большому счёту протокол значения не имеет, но думаю не http точно.
На первом месте качество картинки. В windows эта вебка показывает очень хорошо, даже использует подсветку лица в темноте.
Так же очень желательно разделить видео и аудио на 2 разных потока, т.к. в итоге планируется раздельная обработка видео и аудио для разных задач.
На одной машине linux debian с подключенной веб-камерой, ну другой windows на которой я проверяю результаты трансляции с помощью плеера vlc.
В линуксе я не силен и задача довольно специфическая, так что гугл помог не сильно.
Что у меня получилось:
1) Получилось транслировать видео с помощью cv2 на питоне - я понимаю, это дикий костыль, но проверял работоспособность. Меня не устроило то, что качество захвата с веб-камеры при этом способе очень низкое. Изображение плохое и никакие настройки не дали приемлемого результата. Возможно дело в том, что opencv использует свой универсальный драйвер для работы с веб-камерой, но это догадка.
2) Попробовал использовать vlc - но настройки использовал из гугл-примеров. В итоге заработал только такой вариант:
vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=1280 :v4l2-height=720 --sout="#transcode{vcodec=h264,vb=800,scale=1,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{sdp=rtsp://:8554/live.ts}" -I dummy
При этом звук вообще отсутствовал, а изображение было серым, с со смазанными конурами того, что есть перед камерой.
3) Использовать ffmpeg вообще не вышло, на смотрящей стороне, воспроизведение хоть и не вызвало никаких ошибок, но изображения не было вовсе, как и звука. Примерный код того, что я писал:
ffmpeg -f video4linux2 -i /dev/video0 -f alsa -vcodec libx264 -s 320x240 -pix_fmt yuv420p -vb 200000 -minrate 200000 -maxrate 200000 -bufsize 2000000 -acodec libmp3lame -ab 128k -ar 44100 -ac 2 -f rtp rtp://:8554/
В итоге ни один из вариантов не привёл к удачной трансляции.
Хотелось бы получить помощь с настройкой этой злосчастной трансляции, на которую я уже потратил не один час :)
Спасибо)