A while ago I had to create web app providing simple interface to start youtube video streams from network devices (linux desktop screens, webcams, network cameras) in several auditoriums. At that moment I couldn't find any application could fit my needs.
For work with audio and video stream I used ffmpeg library. For web interface and I used python Flask microframework and wsgi. To start and stop translations I used Bash scripts.
For now this application can successfully start and stop streams from:
- Network cameras
- Linux desktop screens
- Webcams on linux
After some time I found that network cameras provide distorted sound. I solved this problem by getting sound from router(TP-Link 1043nd) and usb audio card. I used pulseaudio to get sound from router and send it to server. Ffmpeg combine audio and video streams to provide stream for youtube.
I spend some time debugging unstable sound noise from router. In the end I found that while using usb cards there should be set big buffer by setting default-fragment-size-msec to some big value. In my case 1024 was sufficient to get stable pure sound.
Source codes are available on Github https://github.com/litvinovg/videoapp