An working example of the GStreame 1.18.4 with the new rpicamsrc source.
Please note, it only works on a Raspberry Pi with an 32-bits OS.
If you have an 64-bits OS see https://github.com/Qengineering/GStreamer-1.18.4-RPi_64-bits
To run the application, you have to:
- A Raspberry Pi 4 with a 32-bits operating system.
- GStreamer 1.18.4 installed. Install GStreamer
- OpenCV bit installed. Install OpenCV 4.5
- Code::Blocks installed. (
$ sudo apt-get install codeblocks
) - A working Raspicam
To extract and run the app in Code::Blocks
$ mkdir MyDir
$ cd MyDir
$ wget https://github.com/Qengineering/GStreamer-1.18.4-RPi_32-bits/archive/refs/heads/main.zip
$ unzip -j master.zip
Remove master.zip, LICENSE and README.md as they are no longer needed.
$ rm master.zip
$ rm LICENSE
$ rm README.md
Your MyDir folder must now look like this:
GStreamerTest32.cpb
main.cpp
To run the application load the project file GStreamerTest32.cbp in Code::Blocks.
Next, follow the instructions at Hands-On.
The Raspicam supports many sizes and frame rates, as you can see here.
You can switch between the different options by altering the parameters in the pipeline.
As long it's a valid combination, it will work. For instance:
//pipeline parameters
int capture_width = 640 ;
int capture_height = 480 ;
int display_width = 640 ;
int display_height = 480 ;
int framerate = 90 ;
Since the developer of the rpicamsrc, Jan Schmidt aka thaytan, took the raspivid parameters as best they could, many can now be used in the pipeline. An example;
"rpicamsrc exposure-mode=off shutter-speed=50 preview=false ! "
"video/x-raw, width=(int)" + std::to_string(capture_width) + ", height=(int)" + std::to_string(capture_height) + ", framerate=(fraction)" + std::to_string(framerate) +"/1 !"
" videoscale ! video/x-raw,"
" width=(int)" + std::to_string(display_width) + ","
" height=(int)" + std::to_string(display_height) + " ! "
" videoconvert ! video/x-raw, format=(string)BGR ! appsink";
For more info see rpicamsrc