The problem was finding a definitive declaration of what constitutes a the rawvid rgb24 stream.
It is simply a stream of pixel values encoded in three bytes (R8+G8+B8 = 24bits) each with neither headers nor frame delimiters.
The frame info is supplied separately to the stream reader (i.e. frame height, width, and rate).
The following mechanisms work for producing a rawvid RGB24 video stream!
The first technique uses BMP files and the ImageMagick 'stream' program to produce a single frame.
The single frame is then duplicated to produce as many frames as desired.
Code: Select all
stream -map rgb -storage-type char test24.bmp ./pixels.rv24
cat ./pixels.rv24 ./pixels.rv24 ./pixels.rv24 ...<repeat>... ./pixels.rv24 > ./sample.rv24
cvlc --demux rawvid --rawvid-fps 30 --rawvid-chroma RV24 --rawvid-width 127 --rawvid-height 64 --no-drop-late-frames ./sample.rv24
The second technique uses ffmpeg to convert a video from a known format to rawvideo.
Code: Select all
ffmpeg -i ./sample.mp4 -f rawvideo -vcodec rawvideo -pix_fmt rgb24 -s 400x300 ./sample.rv24
cvlc --demux rawvid --rawvid-fps 30 --rawvid-chroma RV24 --rawvid-width 400 --rawvid-height 300 --no-drop-late-frames ./sample.rv24
Serving the sample using a webserver (e.g. apache, nginx) plays correctly.
Code: Select all
cvlc --demux rawvid --rawvid-fps 30 --rawvid-chroma RV24 --rawvid-width 400 --rawvid-height 300 --no-drop-late-frames http://localhost/rawvideo/sample.rv24
---
Some handy sample images.
http://wvnvaxa.wvnet.edu/vmswww/bmp.html