Gstreamer(gst-inspect, gst-launch) 測試指令
參考網站
http://wiki.oz9aec.net/index.php/Gstreamer_cheat_sheet
安裝新版本Gstreamerc和相關模組
sudo apt-get install gstreamer1.0-tools gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
查詢所有已安裝模組與元件
gst-inspect-1.0 gst-inspect-1.0 | grep nv gst-inspect-1.0 | nvcamera gst-inspect-1.0 | nvcamerasrc
查看模組詳細的參數
gst-inspect-1.0 nvcamerasrc
測試圖像
gst-launch-1.0 videotestsrc num-buffers=120 ! video/x-raw,width=1920,height=1080,rate=30/1 ! xvimagesink
螢幕錄製成影像檔
gst-launch-1.0 ximagesrc num-buffers=60 remote=1 use-damage=0 ! video/x-raw,framerate=30/1 ! videoconvert ! omxh264enc ! matroskamux ! filesink location=test.mp4
螢幕錄製成圖片檔
#使用nvjpegenc 會造成圖片異常 gst-launch-1.0 ximagesrc num-buffers=1 ! video/x-raw,framerate=1/1 ! nvjpegenc ! filesink location=test.jpeg #改用jpegenc 圖片就正常 gst-launch-1.0 ximagesrc num-buffers=1 ! video/x-raw,framerate=1/1 ! jpegenc ! filesink location=test.jpeg
CSI Camera 或 USB Camera 錄製成影像檔案
gst-launch-1.0 nvcamerasrc num-buffers=200 sensor-id=0 ! 'video/x-raw(memory:NVMM),width=1920, height=1080, framerate=30/1, format=NV12' ! omxh264enc ! qtmux ! filesink location=test.mp4 -ev
CSI Camera 或 USB Camera 擷取成圖片檔案
gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=1 ! image/jpeg,width=1948,height=1096 ! filesink location=/home/nvidia/test.jpg gst-launch-1.0 -e nvcamerasrc num-buffers=1 ! "video/x-raw(memory:NVMM), width=1920, height=1080, format=I420" ! nvjpegenc ! multifilesink location=test.jpg #一次擷取10 個 jpeg檔案 gst-launch-1.0 -e nvcamerasrc sensor-id=0 num-buffers=10 ! 'video/x-raw(memory:NVMM), width=1920, height=1080, format=I420' ! nvjpegenc ! multifilesink location=test_%d.jpg # 圖片名稱為現在的時間+數字 gst-launch-1.0 -e nvcamerasrc sensor-id=0 num-buffers=10 ! 'video/x-raw(memory:NVMM), width=1920, height=1080, format=I420' ! nvjpegenc ! multifilesink location=$(date +%s).%d.jpg
顯示 Camera 影像
gst-launch-1.0 nvcamerasrc num-buffers=60 ! 'video/x-raw(memory:NVMM), format=I420, width=1920, height=1080, framerate=30/1' ! nvvidconv ! 'video/x-raw' ! xvimagesink
顯示 Camera 影像上加入文字(textoverlay font-desc="Sans 24" text="Camera1" valignment=top halignment=left)
gst-launch-1.0 nvcamerasrc num-buffers=60 ! 'video/x-raw(memory:NVMM), format=I420, width=1920, height=1080, framerate=30/1' ! nvvidconv ! 'video/x-raw' ! textoverlay font-desc="Sans 24" text="Camera1" valignment=top halignment=left ! xvimagesink
顯示 Camera影像上加入時間計數(timeoverlay)
gst-launch-1.0 nvcamerasrc num-buffers=60 ! 'video/x-raw(memory:NVMM), format=I420, width=1920, height=1080, framerate=30/1' ! nvvidconv ! 'video/x-raw' ! timeoverlay ! xvimagesink
顯示多個Camera影像於一個畫面(1920x1080)
gst-launch-1.0 nvcamerasrc sensor-id=0 fpsRange="30 30" num-buffers=240 ! 'video/x-raw(memory:NVMM), width=(int)1920, \ height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! nvvidconv ! 'video/x-raw, width=(int)630, \ height=(int)480, format=(string)I420, framerate=(fraction)30/1' ! textoverlay font-desc="Sans 24" text="Camera1" ! mixer.sink_1 \ nvcamerasrc sensor-id=1 fpsRange="30 30" num-buffers=240 ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! nvvidconv ! 'video/x-raw, width=(int)630, \ height=(int)480, format=(string)I420, framerate=(fraction)30/1' ! textoverlay font-desc="Sans 24" text="Camera2" ! mixer.sink_2 \ nvcamerasrc sensor-id=2 fpsRange="30 30" num-buffers=240 ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! nvvidconv ! 'video/x-raw, width=(int)630, \ height=(int)480, format=(string)I420, framerate=(fraction)30/1' ! textoverlay font-desc="Sans 24" text="Camera3" ! mixer.sink_3 \ nvcamerasrc sensor-id=3 fpsRange="30 30" num-buffers=240 ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! nvvidconv ! 'video/x-raw, width=(int)630, \ height=(int)480, format=(string)I420, framerate=(fraction)30/1' ! textoverlay font-desc="Sans 24" text="Camera4" ! mixer.sink_4 \ nvcamerasrc sensor-id=4 fpsRange="30 30" num-buffers=240 ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! nvvidconv ! 'video/x-raw, width=(int)630, \ height=(int)480, format=(string)I420, framerate=(fraction)30/1' ! textoverlay font-desc="Sans 24" text="Camera5" ! mixer.sink_5 \ nvcamerasrc sensor-id=5 fpsRange="30 30" num-buffers=240 ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! nvvidconv ! 'video/x-raw, width=(int)630, \ height=(int)480, format=(string)I420, framerate=(fraction)30/1' ! textoverlay font-desc="Sans 24" text="Camera6" ! mixer.sink_6 \ videotestsrc pattern="black" num-buffers=240 ! video/x-raw,width=1,height=1 \ ! videomixer name=mixer sink_0::xpos=0 sink_0::ypos=0 sink_0::alpha=0 \ sink_1::xpos=0 sink_1::ypos=0 \ sink_2::xpos=0 sink_2::ypos=480 \ sink_3::xpos=630 sink_3::ypos=0 \ sink_4::xpos=630 sink_4::ypos=480 \ sink_5::xpos=1240 sink_5::ypos=0 \ sink_6::xpos=1240 sink_6::ypos=480 \ ! xvimagesink sync=false -v
音頻解碼(AAC)
gst-launch-1.0 filesrc location=small.mp4 ! qtdemux name=demux demux.audio_0 ! queue ! avdec_aac ! audioconvert ! alsasink -e
音頻解碼(MP3)
gst-launch-1.0 filesrc location=piano2-CoolEdit.mp3 ! mpegaudioparse ! avdec_mp3 ! audioconvert ! alsasink -e
TX1 和 TX2 的 CSI Camera 不支援 v4l2src,如果要使用 Camera 建議使用 nvcamerasrc
文章標籤
全站熱搜
