産業用UVCカメラのすすめ 産業用UVCカメラのすすめ

Jetsonのハードウェアエンコーダを使って録画(Python編)

目的、概要

特定のUSBカメラで解像度を1920×1200pixelに設定し、カラーで30fpsのフレームレートで1台でNvidiaのハードウェアエンコーダー(CUDA)を利用して録画をする方法について説明します。サンプルプログラムはPythonです。

開発環境

Jetson Nano の場合

動作環境 JetsonNano(JetPack4.5.1)
対象OS Jetson Nano Developer Kit
開発言語 Python3.6.9
必要なパッケージ python-gst-1.0,tiscamera1.0.0

Pythonに実装

サンプルプログラムダウンロード

サンプルデータはPCにてダウンロードをお願いいたします。
モバイルサイトではご利用いただけません。

サンプルに含まれるファイルは下記の通りです。

Jetson_HWencode.py カメラのライブストリーミング開始
TIS.py TIS.pyはtiscamera(SDK)のGstreamerとv4l2等をラップしたものです。Gstreamerを使ったハードウェアエンコード(nvv4l2h265enc)などを記載しています。詳細は下記を参照してください。
https://www.argocorp.com/UVC_camera/Jetson_hardware_encoder.html

コード全体

from pickle import FALSE
import sys
import numpy as np
import TIS
import time


Tis = TIS.TIS()
# DFK 33UX253 Serial: 45120952 、 解像度1920x1080@30 fpsで表示する
Tis.open_device("45120952", 1920,1080, "30/1", TIS.SinkFormats.BGRA,True)

#selectDeviceを利用することでデバイスの選択、フォーマット、フレームレートをコマンドラインで指定できる
#openDeviceでカメラをオープンしているためコメントアウトしています
#if not Tis.select_device():
#    quit(0)

Tis.start_pipeline()
Tis.stop_pipeline()

print('Program ends')

上記のプログラムではDFK33UX253のカメラで解像度1920x1080(30 fps)で10秒間だけ動画保存するサンプルプログラムです。
TIS.pyで10秒間保存するように指定しています。TIS.pyの詳細について下記のワンポイントアドバイスの欄をご確認ください。
https://www.argocorp.com/UVC_camera/Linux_TIScam_GStreamer_Python.html#opt_rewrite
https://www.argocorp.com/UVC_camera/Linux_TIScam_GStreamer_Python.html#opt_eos

ターミナルでの実行

python3 Jetson_HWencode.py