
Here's the ffmpeg|vlc command: ffmpeg -thread_queue_size 1024 -f video4linux2 -input_format mjpeg -i /dev/video0 -r 30 -f alsa -ac 1 -thread_queue_size 1024 -i hw:1,0 -acodec aac -vcodec libx264 -preset ultrafast -crf 18 -s hd720 -vf format=yuv420p -profile:v main -threads 0 -f mpegts -|vlc -I dummy -sout='#std -sout-all -sout-keep' If you're using a file as input, you won't need all that v4l2 and alsa stuff. You will have to adjust the command for your device or file. I've also had audio-sync issues with some of the other methods, where this method always has perfect audio-sync. Piping through vlc must be CPU-friendly, because my old dual-core Pentium CPU is able to do the real-time encoding with no dropped frames. I'm using a video capture HDMI>USB device that sets itself up on the video4linux2 driver as input. I've tried both, but the http ts stream seems to work glitch-free on my playback devices. In the example I use an mpeg transport stream (ts) over http, instead of rtsp. If you don't have these installed, you can add them: sudo apt install vlc ffmpeg Another streaming command I've had good results with is piping the ffmpeg output to vlc to create a stream.
