Caps Negotiation

Caps Negotiatio## Caps Negotiation 能力协商概述 Caps negotiation is the act of finding a media format (GstCaps) between elements that they can handle. This process in GStreamer can in most cases find an optimal solution for the complete pipeline. 能力协商是指在两个元素之间寻找一个彼此可以处理的媒体格式,在 GStreamer 中多数情况下是为了整个管道寻找一个优化的方案。 Caps negotiation basics In GStreamer, negotiation of the media format always follows the following […] →Read more

GStreamer State Transition

overview Both elements and pads can be in different states. The states of the pads are linked to the state of the element so the design of the states is mainly focused around the element states. An element can be in 4 states. NULL, READY, PAUSED and PLAYING. When an element is initially instantiated, it […] →Read more

gstreamer tips 2

install gstreamer and plugins sudo apt-get install -y gstreamer1.0-tools gstreamer1.0-nice gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-plugins-good libgstreamer1.0-dev git libglib2.0-dev libgstreamer-plugins-bad1.0-dev libsoup2.4-dev libjson-glib-dev send/receive rtp over rtp and udp gst-launch-1.0 videotestsrc ! video/x-raw, width=640, height=360 ! queue ! vpuenc_h264 ! rtph264pay ! udpsink host=192.168.60.5 port=5555 gst-launch-1.0 udpsrc port=5555 \ ! application/x-rtp, encoding-name=H264, payload=96 \ ! queue \ ! rtph264depay […] →Read more

GStreamer Tips

Display the (Logitech) webcam (/dev/video0) on screen (autovideosink ==> display on screen) gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! autovideosink Latency is high due to video conversion Using native MJPG stream of the Logitech Camera gst-launch-1.0 -v v4l2src device=/dev/video0 ! image/jpeg,width=1920,height=1080,framerate=30/1 ! jpegparse ! jpegdec ! videoconvert ! autovideosink Record a video gst-launch-1.0 v4l2src ! x264enc […] →Read more

v4l2 utils

installation sudo apt install v4l-utils sudo apt show v4l-utils Package: v4l-utils Version: 1.20.0-2 Priority: optional Section: utils Maintainer: Gregor Jasny <gjasny@googlemail.com> Installed-Size: 1826 kB Depends: libv4l-0 (= 1.20.0-2), libv4l2rds0 (= 1.20.0-2), libc6 (>= 2.28), libgcc-s1 (>= 3.5), libstdc++6 (>= 5.2), libudev1 (>= 183) Breaks: ivtv-utils (<< 1.4.1-2), media-ctl Replaces: ivtv-utils (<< 1.4.1-2), media-ctl Homepage: https://linuxtv.org/downloads/v4l-utils/ […] →Read more

v4l2looback

commands to install v4l2loopback sudo rmmod v4l2loopback.ko sudo insmod v4l2loopback.ko video_nr=12 max_buffers=2 exclusive_caps=1 card_label="VirtualCam" Other commands sudo modprobe v4l2loopback video_nr=12 max_buffers=2 exclusive_caps=1 card_label="VirtualCam" sudo modprobe v4l2loopback video_nr="12"\ 'card_label=VirtualCam' \ exclusive_caps=1 max_buffers=2 gst-launch-1.0 videotestsrc ! \ video/x-raw, format=YUY2, width=320, height=240 ! \ xvimagesink gst-launch-1.0 v4l2src device=/dev/video12 ! autovideosink gst-launch-1.0 videotestsrc ! v4l2sink device=/dev/video12 gst-launch-1.0 -v videotestsrc […] →Read more

gitlab runner

在执行 pipeline 上机器上安装 gitlab runner # Download the binary for your system sudo curl -L –output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 # Give it permission to execute sudo chmod +x /usr/local/bin/gitlab-runner # Create a GitLab Runner user sudo useradd –comment 'GitLab Runner' –create-home gitlab-runner –shell /bin/bash # Install and run as a service sudo gitlab-runner install –user=gitlab-runner –working-directory=/home/gitlab-runner […] →Read more

multi user chat by boost beast

overview @startuml main -> io_context: construct main -> shared_state: construct main -> listener: construct main -> listener : run @enduml classes @startuml class http_session { beast::tcp_stream stream_; beast::flat_buffer buffer_; boost::shared_ptr state_; boost::optional parser_; struct send_lambda; void fail(beast::error_code ec, char const* what); void do_read(); void on_read(beast::error_code ec, std::size_t); void on_write(beast::error_code ec, std::size_t, bool close); void run(); […] →Read more

EMQ with python

start EMQX docker run -d –name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest install paho-mqtt library pip3 install paho-mqtt start subscriber import paho.mqtt.client as mqtt ​ # The callback function of connection def on_connect(client, userdata, flags, rc): print(f"Connected with result code {rc}") client.subscribe("$SYS/#") # The callback function for received message […] →Read more

c++ 中恼人的依赖管理

Java 有 maven, Python 有 pip, C++ 呢? C++ 有 vcpkg 和 conan 示例 比较一下 libzmq 的安装 从源码编译安装 git clone git@github.com:zeromq/libzmq.git cd libzmq ./autogen.sh ./configure make make install 从 vcpkg 安装 git clone https://github.com/microsoft/vcpkg.git ./bootstrap-vcpkg.bat # For powershell ./bootstrap-vcpkg.sh # For bash ./vcpkg install zeromq 参见 https://github.com/52doho/vcpkg-vs-conan https://devbins.github.io/post/conan/ →Read more