A friend of mine has a bird box with a camera system setup which transmits its images to a receiver plugged into their TV.
They asked me if it would be possible to view the footage on a mobile phone locally or preferably across the internet.
I knew their system had come bundled with a video capture device (Ezcap) and I also knew that their son had received a raspberry Pi Zero for Christmas because I had recommended it as a gift.
I suggested that it should be reasonably straightforward to use the Pi to transmit the output of the Ezcap via one of handful of streaming methods to a mobile phone.
I am no expert, but I do dabble and figured that with free software and some Googling I could easily get this to work. This has not been the case.
Firstly the Ezcap does not show up at all on the Pi until I use this trick:
sudo modprobe em28xx card=64
echo eb1a 5124 | sudo tee /sys/bus/usb/drivers/em28xx/new_id
that I found in several places, but I will credit to this site: https://freesoft.dev/program/168927094
I decided I'd start with a very straightforward packaged solution so I installed motionEyeOS. (https://github.com/ccrisan/motioneyeos)
A picture shows up using this without too much faffing, but it is of awful quality and is almost monochrome, though some colour does show, even though this seems to be the inverse of the colour that should be showing e.g. bright red shows up green and red hues seem to show as tones of grey. Can't really work out what is going on, but it is unusable.
I then tried my initial preferential solution of streaming using VLC.
I tried pretty much everything on this site, which has some great examples: https://www.raspberrypi.org/forums/viewtopic.php?t=256572
but nothing seems to work, though on occasion I have managed to get my phone to play a few seconds of HTTP protocol streamed video, at very low frame rates, but the quality did look good when it did turn up.
The solution seemed to be to use ffmpeg, to allow for the gpu assisted h246_omx codec to be employed and pipe the results to VLC for streaming. I have spent the best part of 2 weeks trying to get this to work. (This seems to be a key part of that failing is - OMX_GetHandle(OMX.broadcom.video_encode) failed: 80001005. - I have Googled without successful resolution) Also, I have never really discovered whether I need to compile ffmpeg, or whether it is now possible to just install it on Raspisan lite. I tried both without any success. What I ended up doing was just installing a full copy of Raspian, which I now know includes ffmpeg and VLC. Still no joy.
Moving on, I decided to try mjpg-streamer. https://github.com/jacksonliam/mjpg-streamer
I held out very little hope of this working as the Ezcap does not deliver MJPG, only raw yuv frames (if I have described that correctly).
Starting the mjpg-streamer results in a host of errors (including could not obtain the requested pixel format and error at raw bits per pixel: Inappropriate ioctl for device), but I get a really decent colour picture which I would be entirely satisfied with if it wasn't for the fact that it was completely ruined by what looks like interference lines.
I don't think they are generated by the Ezcap, as they don't show in motionEyeOS nor when I managed to get a short amount of VLC streaming to work. If I could get shot of these lines, I would be entirely happy with sticking with mjpg-streamer, as it is simple and straightforward, though I think deep down my ideal would be to get VLC streaming using the hardware-assisted h264_omx codec.
Attached is a screen print of the camera looking at my herringbone floor with the interference lines shown.
I would be grateful if somebody could give me some advice and if so please just ask me for what information I can give in order to assist.