1

I'm running an intentionally minimal Arch OS on my RPi2 (installed via ArchLinuxARM-rpi-2-latest.tar.gz dated 2015-08-14), and I'm trying to have it stream video from the camera. I followed the camera instructions on the arch wiki, including appending

gpu_mem=128
start_file=start_x.elf
fixup_file=fixup_x.dat

to /boot/config.txt, and putting

bcm2835-v4l2

in /etc/modules-load.d/rpi-camera.conf. The camera itself seems to work fine using /opt/vc/bin/raspistill and /opt/vc/bin/raspivid, but when I attempt to stream video via:

cvlc v4l2:///dev/video0 --v4l2-width 1920 --v4l2-height 1080 --v4l2-chroma h264 --sout '#standard{access=http,mux=ts,dst=0.0.0.0:12345}'

I get the error

v4l2 demux error: cannot open device '/dev/video0': Permission denied 

Ok, so I check the permissions on /dev/video0 and see that it's readable by the video group, so I add my user to this group and now when I run the cvlc command I don't get the error, but I can't see the stream on a remote computer either. When I turn on the v4l2 overlay (v4l2-ctl --overlay=1) before running the cvlc command, I can indeed see that the camera is working, but still no visible stream on the remote computer. I used vlc to try to receive the stream and get the error

core stream error: cannot pre fill buffer

Any suggestions for how to trouble-shoot this?

1

I am unfamiliar with cvlc, but on Linux there are a few checks you can do from the command line on both/either the RPi with the camera, and a client to see if the daemon is running, listening and if connection to the daemon's port can be made.

The following all assume that the cvlc daemin is listening on port 12345 as in your question above.

On the RPi with the camera, to check if cvlc daemon is listening on (TCP) port 12345 (the -o arch just limits output so you do not have to look at as much output):

$ sudo ss -tlpn -o '( sport = 12345 }'
State       Recv-Q Send-Q                 Local Address:Port                                Peer Address:Port
LISTEN      0      1                                  *:12345                                          *:*                   users:(("cvlc",pid=24275,fd=3))

On either another host, which has netcat (nc) installed (OS X usually does) you can check simple connectivity with the following:

$ nc -z -v 192.168.1.2 12345
Connection to 192.168.1.2 12345 port [tcp/italk] succeeded!

Note: if your version of netcat (nc) complains about the -v flag, just omit it, and you can check the return value from the command for success or failure. The verbose output is just a nice convenience for this test.

Hopefully this can help a bit debugging either end of the connection.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.