2021年02月14日
Jetson Nano - その9: GstreamerでRTSPサーバーのビデオをキャプチャ
RTSPサーバーのビデオをキャプチャ
忘れないためのメモになります。
RTSPサーバーを以下のコマンドで起動していると思いますが・・・
それに対して、受け側は、以下のコマンドでH264で受信して そのままmp4のファイルに落とします。
ここで、CTL-Cでこの処理を止める場合、 "-e"オプションが重要とのこと。
ここのサイト に以下のように書いていました。
Add -e to your command line. In that case when you press ctrl-c the pipeline will not just stop but is being properly shut down by sending an EOS signal through the pipeline.
ファイルは生成できるのに再生できなくてハマりました。。
Pythonで実行
Pythonで同じような処理をしたいと思います。
rec_video.shというスクリプトファイルを以下の内容で作成。
( ここのサイト を参考にdateコマンドで日付時間をファイル名に付加しています。)
Pythonで以下を実行。
(シグナルの送信に関しては、 ここのサイト を参考。)
忘れないためのメモになります。
RTSPサーバーを以下のコマンドで起動していると思いますが・・・
./test-launch "nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, framerate=30/1 ! omxh264enc ! queue ! rtph264pay name=pay0 pt=96"
それに対して、受け側は、以下のコマンドでH264で受信して そのままmp4のファイルに落とします。
gst-launch-1.0 rtspsrc location=rtsp://localhost:8554/test ! rtph264depay ! h264parse ! qtmux ! filesink location=test1.mp4 -e
ここで、CTL-Cでこの処理を止める場合、 "-e"オプションが重要とのこと。
ここのサイト に以下のように書いていました。
Add -e to your command line. In that case when you press ctrl-c the pipeline will not just stop but is being properly shut down by sending an EOS signal through the pipeline.
ファイルは生成できるのに再生できなくてハマりました。。
Pythonで実行
Pythonで同じような処理をしたいと思います。
rec_video.shというスクリプトファイルを以下の内容で作成。
( ここのサイト を参考にdateコマンドで日付時間をファイル名に付加しています。)
#!/bin/bash
gst-launch-1.0 rtspsrc location=rtsp://localhost:8554/test ! rtph264depay ! h264parse ! qtmux ! filesink location=video_`date "+%Y%m%d_%H%M_%S"`.mp4 -e
Pythonで以下を実行。
(シグナルの送信に関しては、 ここのサイト を参考。)
import subprocess
import signal
import os
p = subprocess.Popen('./rec_video.sh', shell=True, preexec_fn=os.setsid) <= Rec開始
os.killpg(os.getpgid(p.pid), signal.SIGINT) <= 終了
【Jetson Nanoの最新記事】
この記事へのコメント