VLC у нас вот так:
udp://ip_потока:порт -I dummy -vvv --sout-ffmpeg-chroma-elim-threshold=7 --sout-ffmpeg-luma-elim-threshold=-4 --rt-priority --skip-frames --drop-late-frames --no-ffmpeg-hurry-up --sout '#transcode{high-priority,vcodec=h264,venc=x264{keyint=75,level=3.1,profile=main,bitrate=684},vb=684,fps=25,acodec=aac,ab=64,channels=2,samplerate=44100}:std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=:порт/имя_потока.flv}' --sout-mux-caching 4096
Если будете брать поток с http, то добавьте еще vlc://pause:1 --loop
--loop позволит автоматом снова запускать воспроизведение если был обрыв, а vlc://pause:1 добавит в плейлист паузу в 1 секунду, без этого --loop при отсутствующем потоке может положить машину.
Настройки конечно можно менять в зависимости от требуемого качества, канала, наличия процессорного времени, итд. Можно погуглить энкодер x264, ну и на сайте самого VLC есть информация.
Скрипт выложить не могу, он генерится автоматом самописной CMS, и делает еще дофига других вещей, завязанных на нашу систему. Выдирать оттуда только проверку и восстановление VLC лениво. Там в принципе все просто, можно прямо на баше все написать. Подскажу, что просто и эффективно мониторить:
- наличие процесса в системе
- нагрузку на CPU этого процесса (транскодинг жручий, если нагрузка меньше X%, что-то не то, надо перезапускать/уведомлять)
- трафик на соответсвующих портах
- писать в файлы звуковую и видео дорожки, проверять размеры файлов
- можно писать подробный лог VLC, и пытаться его анализировать, но практика показала что кучу неприятностей по логу отследить не выходит.
UPD: Еще в настройках VLC забыл scale, или width и height, если надо разрешение поменять.