在 gstreamer 中旋转视频

Rotate a Video in gstreamer

我有这个管道可以同时从两个网络摄像头进行录制:

gst-launch-1.0 -v v4l2src device=/dev/video0 num-buffers=300\
! "video/x-raw,width=800,height=600,framerate=30/1" ! videorate\
! "video/x-raw,framerate=30/1" ! jpegenc ! queue ! mux. \
pulsesrc device="alsa_input.pci-0000_00_1b.0.analog-stereo" \
!  'audio/x-raw,rate=88200,channels=1,depth=24' !  audioconvert ! \
avenc_aac compliance=experimental ! queue ! mux. matroskamux name="mux"\
 ! filesink location=/home/sina/T1.avi  v4l2src device=/dev/video1 \
! 'image/jpeg,framerate=30/1,width=800,height=600' ! videorate !  \
 ! queue ! mux2.  pulsesrc \
device="alsa_input.usb-046d_0990_94D7DC5E-02-Q9000.analog-mono" \
!  'audio/x-raw,rate=88200,channels=1,depth=24' !  audioconvert \
!  avenc_aac compliance=experimental ! queue ! mux2. \
matroskamux name="mux2" ! filesink location=/home/sina/T2.mts 

我想将第二个摄像头 (/dev/video1) 的视频旋转 180 度,因为它是倒置安装的,我该如何旋转?

videoflip 元素可以为您做到这一点。您可能希望使用 method=rotate-180 作为此元素的选项。然而,这需要对图像进行重新编码(例如 jpeg-decode 和 jpeg-encode)。

您可能想要调查 GstVideoOrientation 界面。 v4l2src 元素实现了这个接口并允许控制一些翻转选项。不过,您需要编写我们自己的 GStreamer 应用程序才能访问此接口。此外,由于翻转是在硬件设备本身中完成的,因此它可能适用于您的设备,也可能不适用于您的设备。