目次
RTSP リアルタイム オーディオおよびビデオ ストリーム アドレス:
- 形式: rtsp://ip:ポート/ストリーム番号
- デフォルトのポート: 554
- ストリームID: 0 (主流), 1 (二次ストリーム)
- 例えば, デバイスアドレスからサブストリームを取得するには 192.168.1.188, URLは:
- rtsp://192.168.1.1 8 8 :554 / 1
クライアント (モバイルアプリ) TCPプロトコル経由でカメラパラメータを取得および設定します;
カメラは TCP サーバーとして機能します, デフォルトの TCP ポートは 8866.
TCP通信データ形式:
純粋な JSON 文字列
カメラのステータスを取得する:
データ構造:
typedef 構造体
{
文字 s8DevId[64]; // デバイスID, ID が設定されていない場合はデフォルトで IP が使用されます.
u32 u32TfRecord; // TFカードの記録状態, 0: 録音なし; 1: 録音中です
}JSON_DEV_STATUS_INFO_S;
コマンド文字:
#JS_CMD _ GET_DEV_STATUS を定義する “GetDevStatus”
デバイスの IP アドレスが 192.168.1.188, クライアントは次の JSON データを送信します:
{
” GetDevStatus “: { }
}
カメラがデータを正常に受信した後, 次の JSON データが返されました:
{
” GetDevStatus “: {
” s8DevId ” : ” 192.168.1.188 ” ,
「 u32TfRecord 」 : 0
}
}
ビデオエンコードパラメータ取得・設定:
データ構造:
typedef 構造体
{
u8 u8ビデオエンチャント; //0 : 主流; 1: 二次ストリーム;
u8 u8ビデオコーデックタイプ; // 1:h264 ; 2:p265
u16 u16ビデオ幅; // ビデオの幅
u16 u16ビデオの高さ; // ビデオの高さ
u16 u8フレームレート; // フレームレート (1-30)
u16 u8IframeInterval; // 私- フレーム間隔サイズ (1-100)
u8 u8ビットレート制御モード; //ビットレート制御モード: 0: CBR 1: VBR
u16 u16ビットレートKps; // ビットレートサイズ
char s8ビデオサイズ名[256]; // サポートされている解像度のリスト }JSON_VIDEO_ENC_PARAM_S;
コマンド文字:
パラメータの取得:
#JS_CMD_GET_VIDEO_ENC_PARAM を定義する “getVideoEncParam”
パラメータの設定:
#JS_CMD_SET_VIDEO_ENC_PARAM を定義する “setVideoEncParam”
例えば:
クライアントは、カメラのメイン ビットストリームのエンコード パラメータを含む次の JSON データを取得します。:
{
” getVideoEncParam “: {
” u8ビデオエンチャント “: 0
}
}
カメラから返されるJSONデータは以下の通りです;
{
” getVideoEncParam “: {
” u8ビデオエンチャント “: 0,
「 u8VideoCodecType 」 : 1,
「 u16VideoWidth 」 : 3840,
” u16ビデオの高さ ” : 1080,
「 u8FrameRate 」 : 30,
” u8IframeInterval ” : 60,
” u8ビットレート制御モード ” : 0,
「u16BitRateKps」 : 4096,
” s8ビデオサイズ名 ” : ” 3840×1080,1920×540 “
}
}
クライアントはカメラのセカンダリ ストリーム フレーム レートを次のように設定します。 15 ビットレートは JSON 形式で 1024K です, 次のように:
{
” setVideoEncParam “: {
” u8ビデオエンチャント “: 1,
” u8フレームレート “: 15,
” u16ビットレートKps “: 1024
}
}
セットアップが成功した後, カメラは TRUE を返します.
オーディオエンコードパラメータの取得・設定:
データ構造:
typedef 構造体
{
u8 u8有効にする; //0: 無効にする; 1: 有効にする;
u32 u32ChnNum; // 1 : 単核症; 2: ステレオ
u8 u8EncodeType; //6 : AAC; 8: G711A; 9: G711U; u32 u32サンプルレート; // サンプリングレート: 8000, 16000, 24000, 32000, 48000
u8 u8Aoutボリューム; // ボリュームサイズ: [0–100] }JSON_VIDEO_ENC_PARAM_S;
コマンド文字:
パラメータの取得:
#JS_CMD_GET_AUDIO_PARAM を定義する “getAudioParam”
パラメータの設定:
#JS_CMD_SET_AUDIO_PARAM を定義する “setAudioParam”
例えば:
クライアントは、カメラ音声エンコードパラメータの次の JSON データを取得します。:
{
” getAudioParam “: { }
}
カメラから返されるJSONデータは以下の通りです;
{
” getAudioParam “: {
” u8有効にする “: 1,
「u32ChnNum」 : 1,
「 u8EncodeType 」 : 8,
「 u32SampleRate 」 : 8000,
「u8Aoutボリューム」 : 80,
}
}
カメラオーディオエンコーディングのクライアント側設定は AAC です, ステレオ, サンプリングレート48kHz. JSONデータは以下の通りです:
{
” setAudioParam “: {
「u32ChnNum」 : 2,
「 u8EncodeType 」 : 6,
「 u32SampleRate 」 : 48000
}
}
セットアップが成功した後, カメラは TRUE を返します.
映像パラメータ取得・設定:
データ構造:
typedef 構造体
{
u8 u8VideoIspChn; //ISPチャネル; [0-4]
u8 u8明るさ; // 輝度: [0~100]
u8 u8コントラスト; // コントラスト比: [0~100]
u8 u8Hue; // 色度: [0~100]
u8 u8飽和; // 飽和レベル: [0~100]
u8 u8シャープネス; // 切れ味: [0~100]
}JSON_IMAGE_PARAM_S;
コマンド文字:
パラメータの取得:
#JS_CMD_GET_IMAGE_PARAM を定義する “getImageParam”
パラメータの設定:
#JS_CMD_SET_IMAGE_PARAM を定義する “setImageParam”
例えば:
クライアントは、チャネルの画像パラメータの次の JSON データを取得します。 0 カメラの ISP の:
{
” getImageParam “: {
「 u8VideoIspChn 」 : 0
}
}
カメラから返されるJSONデータは以下の通りです;
{
” getImageParam “: {
” u8VideoIspChn “: 0,
「u8明るさ」 : 50,
「u8コントラスト」 : 50,
「u8Hue」 : 50,
「 u8Saturation 」 : 50,
「u8シャープネス」 : 50
}
}
カメラの明るさに関するクライアント側の JSON データ設定は次のとおりです。 53, コントラストは 60, そして飽和度は 56 は次のとおりです:
{
” setImageParam “: {
「 u8VideoIspChn 」 : 0,
「u8明るさ」 : 53,
「u8コントラスト」 : 60,
「 u8Saturation 」 : 56
}
}
セットアップが成功した後, カメラは TRUE を返します.
TFカード情報の取得;
データ構造:
typedef 構造体
{
u32 u32合計サイズ; // 合計サイズ (MB)
u32 u32使用サイズ; // 使用容量単位 (MB)
u32 u32利用可能なサイズ; // 利用可能な容量 (MB)
}JSON_SD_CARD_INFO_S;
パラメータの取得:
#JS_CMD_GET_SD_CARD_INFO を定義する “SDカード情報の取得”
例えば:
クライアントは、カメラの TF カード情報に関する次の JSON データを取得します。:
{
” SDカード情報の取得 “: { }
}
カメラから返されるJSONデータは以下の通りです;
{
” SDカード情報の取得 “: {
” u32合計サイズ “: 31254,
「u32使用サイズ」 : 20000,
” u32利用可能なサイズ ” : 11254
}
}
TFカード記録設定:
データ構造:
typedef 構造体
{
u8 u8AutoRecordEnable; //1: 録音を有効にする; 0: 録音を無効にする
u8 u8RecordStrChn; // 録画ストリームの選択: 0: プライマリストリーム; 1: 二次ストリーム
u8 u8PreRecordSeconds; // 事前録音時間 [0-10] 数秒で
u16 u16ファイルあたりのレコード秒数; // 1 つの録音ファイルの長さ [10-1000] 秒
}JSON_RECORD_CONTROL_PARAM_S;
パラメータの取得:
#JS_CMD_GET_RECORD_CONTROL_PARAM を定義する “getRecordControlParam”
パラメータの設定:
#JS_CMD_SET_RECORD_CONTROL_PARAM を定義する “setRecordControlParam”
例えば:
クライアントは、カメラの TF カード録画設定に関する次の JSON データを取得します。:
{
” getRecordControlParam “: { }
}
カメラから返されるJSONデータは以下の通りです;
{
” getRecordControlParam “: {
” u8AutoRecordEnable “: 1,
「 u8RecordStrChn 」 : 0,
” u8PrecordSeconds ” : 0,
” u16ファイルごとのレコード秒数 ” : 300
}
}
有線ネットワークのIP構成:
データ構造:
typedef 構造体
{
u8 u8Dhcp有効化; // 0: 静的IP; 1: DHCP;
文字 s8IP[16]; //IPアドレス
char s8サブマスク[16]; // サブネットマスク
char s8ゲートウェイ[16]; // ゲートウェイIP
文字 s8Dns[16]; //DNSアドレス
}JSON_NET_PARAM_S;
パラメータの取得:
#JS_CMD_GET_NET_IP_PARAM を定義する “getNetIpParam”
パラメータの設定:
#JS_CMD_SET_NET_IP_PARAM を定義する “setNetIpParam”
例えば:
クライアントは次のように JSON データを使用してカメラの IP 情報を取得します。:
{
” getNetIpParam “: { }
}
カメラから返されるJSONデータは以下の通りです;
{
” getNetIpParam “: {
” u8Dhcp有効にする “: 0,
” s8IP ” : ” 192.168.1.188 ” ,
” s8サブマスク ” : ” 255.255.255.0 ” ,
” s8ゲートウェイ ” : ” 192.168.1.1 ” ,
” s8Dns ” : ” 192.168.1.1 “
}
}
クライアントはカメラの IP アドレスを次のように設定されています。 192.168.3.10, としてのゲートウェイ 192.168.3.1, そしてDNSとして 192.168.3.1. JSONデータは以下の通りです:
{
” setNetIpParam “: {
” s8IP ” : ” 192.168.3.10 ” ,
” s8ゲートウェイ ” : ” 192.168.3.1 ” ,
” s8Dns ” : ” 192.168.3.1 “
}
}
セットアップが成功した後, カメラがデータを返さない, クライアントは新しい IP アドレスを使用してデバイスに再接続する必要があります.
WiFiパラメータ設定:
クライアント/アプリは、デバイスによって検出されたルーターの SSID のリストを取得します。.
{
“getAPSsidList” :{ }
}
デバイスは SSID のリストを返します。: リストから接続するルート SSID を選択します.
デバイスの Wi-Fi を STA モードで動作するように設定する:
{
“setWifiSsidParam”:{
“u8モード”: 0,
“s8Ss”: ” yrsx8888 “,
“s8PassWd”: “987545598400
}
}
デバイスの Wi-Fi をホットスポット AP モードで動作するように設定する:
{
“setWifiSsidParam”:{
“u8モード”: 1
}
}
デバイスのWi-Fiステータスを取得する:
{
“getWifiSsidParam” : { }
}
時刻同期:
データ構造:
typedef 構造体
{
u8 u8タイムゾーン; // タイムゾーン値 RT_TIMEZONE_E
char s8DateTime[64]; // 時刻形式: “2019-06-12_12:56:59_3”
}JSON_DATE_TIME_INFO_S;
タイムゾーン値の定義:
typedef 列挙型
{
RT_TIMEZONE_InternationalDateLineWest = 0, /* UTC-12:00 */
RT_TIMEZONE_ミッドウェイ島サモア = 1, /* UTC-11:00 */
RT_TIMEZONE_ハワイ = 2, /* UTC-10:00 */
RT_TIMEZONE_アラスカ = 3, /* UTC-9:00 */
RT_TIMEZONE_ティファナカリフォルニア州 = 4, /* UTC-8:00 */
RT_TIMEZONE_太平洋時間米国カナダ = 5, /* UTC-8:00 */
RT_TIMEZONE_MountainTime米国カナダ = 6, /* UTC-7:00 */
RT_TIMEZONE_チワワラパスマサトラン = 7, /* UTC-7:00 */
RT_TIMEZONE_アリゾナ = 8, /* UTC-7:00 */
RT_TIMEZONE_サスカチュワン州 = 9, /* UTC-7:00 */
RT_TIMEZONE_グアドラハラメキシコシティモンテレー = 10, /* UTC-6:00 */
RT_TIMEZONE_中部時間米国カナダ = 11, /* UTC-6:00 */
RT_TIMEZONE_中央アメリカ = 12, /* UTC-6:00 */
RT_TIMEZONE_ボゴタリマキト = 13, /* UTC-5:00 */
RT_TIMEZONE_米国東部時間カナダ = 14, /* UTC-5:00 */
RT_TIMEZONE_インディアナ東部 = 15, /* UTC-5:00 */
RT_TIMEZONE_カラカス = 16, /* UTC-4:30 */
RT_TIMEZONE_AtlanticTimeCanada = 17, /* UTC-4:00 */
RT_TIMEZONE_ジョージタウンラパスサンフアン = 18, /* UTC-4:00 */
RT_TIMEZONE_サンティアゴ = 19, /* UTC-4:00 */
RT_TIMEZONE_NenfoundLand = 20, /* UTC-3:30 */
RT_TIMEZONE_ブラジリア = 21, /* UTC-3:00 */
RT_TIMEZONE_ブエノスアイレスジョージタウン = 22, /* UTC-3:00 */
RT_TIMEZONE_グリーンランド = 23, /* UTC-3:00 */
RT_TIMEZONE_中部大西洋= 24, /* UTC-2:00 */
RT_TIMEZONE_カーボベルデIs = 25, /* UTC-1:00 (カーボベルデ共和国) */
RT_TIMEZONE_アゾレス諸島 = 26, /* UTC-1:00 (アゾレス諸島) */
RT_TIMEZONE_グリニッジ標準時ダブリンエディンバラリスボンロンドン = 27, /* UTC-0:00 */
RT_TIMEZONE_カサブランカ = 28, /* UTC-0:00 */
RT_TIMEZONE_モンロビア = 29, /* UTC-0:00 */
RT_TIMEZONE_アムステルダムベルリンベルンローマストックホルムウィーン = 30, /* UTC+1:00 */
RT_TIMEZONE_ベオグラードブラチスラバブダペストリュブリャナプラハ = 31, /* UTC+1:00 */
RT_TIMEZONE_ブリュッセルコペンハーゲンマドリードパリ = 32, /* UTC+1:00 */
RT_TIMEZONE_サラエボスコピエワルシャワザグレブ = 33, /* UTC+1:00 */
RT_TIMEZONE_西中央アフリカ = 34, /* UTC+1:00 */
RT_TIMEZONE_レアプレトリア = 35, /* UTC+2:00 */
RT_TIMEZONE_ヘルシンキキエフリガソフィアタリンビリニュス = 36, /* UTC+2:00 */
RT_TIMEZONE_カイロ = 37, /* UTC+2:00 */
RT_TIMEZONE_ミンスク = 38, /* UTC+2:00 */
RT_TIMEZONE_アテネブカレストイスタンブール = 39, /* UTC+2:00 */
RT_TIMEZONE_エルサレム = 40, /* UTC+2:00 */
RT_TIMEZONE_バグダッド = 41, /* UTC+3:00 */
RT_TIMEZONE_トビリシ = 42, /* UTC+3:00 */
RT_TIMEZONE_クウェートリヤド = 43, /* UTC+3:00 */
RT_TIMEZONE_モスクワサンクトペテルブルクヴォルゴグラード = 44, /* UTC+3:00 */
RT_TIMEZONE_ナイロビ = 45, /* UTC+3:00 */
RT_TIMEZONE_テヘラン = 46, /* UTC+3:30 */
RT_TIMEZONE_アブダビマスカット = 47, /* UTC+4:00 */
RT_TIMEZONE_バクエレバン = 48, /* UTC+4:00 */
RT_TIMEZONE_カブール = 49, /* UTC+4:30 */
RT_TIMEZONE_タシケント = 50, /* UTC+5:00 */
RT_TIMEZONE_エカテリンブルク = 51, /* UTC+5:00 */
RT_TIMEZONE_イスラマバードカラチ = 52, /* UTC+5:00 */
RT_TIMEZONE_チェンナイコルカタムンバイニューデリー = 53, /* UTC+5:30 */
RT_TIMEZONE_カトマンズ = 54, /* UTC+5:45 */
RT_TIMEZONE_アルマトイノヴォシビルスク = 55, /* UTC+6:00 */
RT_TIMEZONE_アスタナダッカ = 56, /* UTC+6:00 */
RT_TIMEZONE_ラングーン = 57, /* UTC+6:30 */
RT_TIMEZONE_クラスノヤルスク = 58, /* UTC+7:00 */
RT_TIMEZONE_バンコクハノイジャカルタ = 59, /* UTC+7:00 */
RT_TIMEZONE_北京重慶香港ウルムチ = 60, /* UTC+8:00 */
RT_TIMEZONE_クアラルンプールシンガポール = 61, /* UTC+8:00 */
RT_TIMEZONE_パース = 62, /* UTC+8:00 */
RT_TIMEZONE_台北 = 63, /* UTC+8:00 */
RT_TIMEZONE_イルクーツクウランバタール = 64, /* UTC+8:00 */
RT_TIMEZONE_大阪札幌東京 = 65, /* UTC+9:00 */
RT_TIMEZONE_ソウル = 66, /* UTC+9:00 */
RT_TIMEZONE_ヤクーツク = 67, /* UTC+9:00 */
RT_TIMEZONE_アデレード = 68, /* UTC+9:30 */
RT_TIMEZONE_ブリスベン = 69, /* UTC+10:00 */
RT_TIMEZONE_ウラジオストク = 70, /* UTC+10:00 */
RT_TIMEZONE_グアムモアズビー = 71, /* UTC+10:00 */
RT_TIMEZONE_ホバート = 72, /* UTC+10:00 */
RT_TIMEZONE_キャンベラメルボルンシドニー = 73, /* UTC+10:00 */
RT_TIMEZONE_マガダンソロモンニューカレドニア = 74, /* UTC+11:00 */
RT_TIMEZONE_オークランドウェリントン = 75, /* UTC+12:00 */
RT_TIMEZONE_フィジーカムチャツカマーシャル諸島 = 76, /* UTC+12:00 */
RT_TIMEZONE_ヌクアロファ = 77, /* UTC+13:00 */
RT_TIMEZONE_BUTT
}RT_TIMEZONE_E;
パラメータの取得:
#JS_CMD_GET_DEV_DATE_TIME を定義する “GetDevDateTime”
パラメータの設定:
#JS_CMD_SET_DEV_DATE_TIME を定義する “setDevDateTime”
デバイス時刻のJSONデータを取得する :
{
” GetDevDateTime ” : {}
}
デバイスは JSON データを返します:
{
” GetDevDateTime ” : {
「u8タイムゾーン」 : 60,
“s8日付時刻” : “2020-03-06_12:56:59_3”
}
}
JSON データはデバイスの時間を木曜日に設定します, 行進 12, 2020, で 3:38:30 午後:
{
” setDevDateTime ” : {
“s8日付時刻” : “2020-03-12_15:38:30_4”
}
}
セットアップが成功すると、デバイスは TRUE を返しました.
設備管理:
デバイスを再起動するための JSON データ:
{
” setSysControlParam ” : {
「u8Restart」 : 1
}
}
工場出荷時の設定を復元するための JSON データ:
{
” setSysControlParam ” : {
「u8リセットデフォルト」 : 1
}
}
SDカードのJSONデータのフォーマット:
{
” setSysControlParam ” : {
「u8フォーマットSDカード」 : 1
}
}
PTZ制御:
データ構造:
typedef 構造体
{
u8 u8Cmd; // コマンドコード PTZ_CONTROL_CODE
u8 u8スピード; // スピード (1-64)
u8 u8Data1; // 予約済み; これはプリセット位置に使用されます.
u8 u8Data2; // 予約済み, これは特別な PTZ コマンドに使用されます.
}JSON_PTZ_CONTROL_S;
列挙型 PTZ_CONTROL_CODE
{
PTZ_STOP = 0, // 停止
PTZ_UP=1, // 上
PTZ_DOWN=2, // 下
PTZ_LEFT=3, // 左
PTZ_RIGHT=4, // 右
PTZ_LEFT_UP=5, // 左上
PTZ_LEFT_DOWN=6, // 左下
PTZ_RIGHT_UP=7, // 右上
PTZ_RIGHT_DOWN=8, // 8 : 右下
PTZ_ZOOM_IN=9, // 9 : ズームイン
PTZ_ZOOM_OUT=10, // 10: ズームアウト=10, // 10 : ズームアウト=10
PTZ_FOCUS_NEAR=11, // 11 : 近くに焦点を当てる
PTZ_FOCUS_FAR=12, // 12 : 遠くに焦点を合わせる
PTZ_IRIS_ADD=13, // 13 : 絞りの増加
PTZ_IRIS_REDUCE=14, // 14 : 絞りを小さくした
PTZ_GOTO_POINT = 15, // 15 : プリセットビットを呼び出す
PTZ_CLEAR_POINT = 16, // 16 : プリセットビットをクリア
PTZ_PERSET_POINT = 17, // 17 : プリセットビットを設定する
PTZ_AUTO_RUN = 18, // 18 : 水平自動スキャン
};
PTZ制御:
#JS_CMD_PTZ_CONTROL を定義する “PtzControlCmd”
Ptz によって制御される JSON コマンド:
- の速度で下に移動します 30:
{
” PtzControlCmd “: {
” u8Cmd “: 2,
” u8スピード ” : 30
}
}
- 1. プリセット位置を設定する 2:
{
” PtzControlCmd “: {
” u8Cmd “: 17,
「u8スピード」 : 30,
「u8Data1」 : 2
}
}
TFカードファイル検索:
( 1) 同じ日の特定の期間内のすべてのビデオ ファイルを検索するコマンド:
{
“検索レコードファイルリスト”:{
“u32年”:2020, // 年
“u8月”:7, // 月
“u8Day”:14, // 日
“u8開始時間”:0, // 開始時間(時間単位)
“u8開始分”:0, // 開始時間(分)
“u8EndHour”:23, // 終了時間(時間単位)
“u8EndMinute”:59, // 終了時間(分)
“u8EncChn”:0, // 0 はデフォルト値です.
“u8レコードタイ”:0, // ファイルの種類: 0: すべてのファイル, 1: 予約録画; 2: アラーム録音; 3: 画像;
“u32StartIdx”:0, // 開始ファイルのシーケンス番号
“u32ExpectedCount”: 10 // リクエストによって返されたファイルの数, 現在の最大値は 32.
}
}
デバイスから返されるデータ:
{
“検索レコードファイルリスト”: {
“u32RecordFileTotalCount”: 7, // この期間内に検索されたファイルの合計数
“stRecordFileList”: [ // パス付きのファイル名, ファイルサイズ]
“/dev/disk/0/part0/rec-pic/20200714/0/000_180149_0_0300_2.mp4”, 251649649, “/dev/disk/0/part0/rec-pic/20200714/0/001_180644_0_0169_256.mp4”, 144935215, “/dev/disk/0/part0/rec-pic/20200714/0/002_181001_0_0300_2.mp4”, 251650689, “/dev/disk/0/part0/rec-pic/20200714/0/003_181458_0_0300_2.mp4”, 251657016, “/dev/disk/0/part0/rec-pic/20200714/0/004_181958_0_0300_2.mp4”, 301449467, “/dev/disk/0/part0/rec-pic/20200714/0/005_182458_0_0000_256.mp4”, 37801991, “/dev/disk/0/part0/rec-pic/20200714/0/006_182642_0_0244_256.mp4”, 200069913
]
}
}
JPG画像を手動でキャプチャする:
次のコマンドをデバイスに送信します.
{
“マニュアルスナップJPG”:{
}
}
無事返却されました:
{
“マニュアルスナップJPG”: 真実
}
PWM制御でLEDの明るさを調整:
現在のPWM値を取得します:
{
“getPwmParam”:{
“u32PwmChn”: 0
}
}
無事返却されました:
{
“getPwmParam”:{
“u32PwmChn”:0,
“u8有効にする”:1,
“u8DutyValue”:20
}
}
- PWM値を設定する:
{
“setPwmParam”:{
“u32PwmChn”: 0,
“u8有効にする”: 1,
“u8DutyValue”: 60
}
}
無事返却されました:
{
“setPwmParam”:真実
}
注記 : u32PwmChn のデフォルトは 0 恣意的に変更すべきではありません. u8Enable の値は次のとおりです 0/1, どこ 0 PWM出力を無効にし、 1 PWM出力を有効にします. u8DutyValue の値の範囲は次のとおりです。 0-100.
17. OSDテキスト取得・設定:
(1) 指定されたビデオチャンネルを取得します, OSDテキストパラメータ:
{“getVideoOsdTextInfo”:{
“u8IspChn”:0,
“u8TextIdx”:1
}}
無事返却されました:
{
“getVideoOsdTextInfo”:{
“u8IspChn”:0, // ビデオチャンネル 0, 埋める 0 1台のカメラ用
“u8TextIdx”:1, // OSDテキストボックスの番号, 複数のテキストボックスのサポート.
“u8有効にする”:0, // 有効にする, 0: 表示しない; 1: 画面
“u16XRatioBase50000”:40000, // 水平位置の相対座標, 最大値は 50000.
“u16YRatioBase50000”:1600, // 垂直位置の相対座標, 最大値は 50000.
“u8Fg透明性”:10, // 前景の透明度 [0-255]
“u8Bg透明性”:255, // 背景の透明度の値 [0-255]
“u8サイズタイプ”:1, // 文字サイズ, 値の範囲 [0-3]
“u32TextColor_BGRA8888”:4294967295, // 文字の色 ARGB888 値
“aszText”:”” // テキストボックスにはコンテンツ文字列が表示されます
}
}
(2) 指定したビデオチャンネルを設定します, OSDテキストパラメータ:
{
“setVideoOsdTextInfo”:{
“u8IspChn”:0,
“u8TextIdx”:1,
“u8有効にする”:1,
“u16XRatioBase50000”:40000,
“u16YRatioBase50000”:1600,
“u8Fg透明性”:10,
“u8Bg透明性”:255,
“u8サイズタイプ”:1,
“u32TextColor_BGRA8888”:4294967295,
“aszText”:”テスト11111222233334444″
}
}
無事返却されました:
{
“setVideoOsdTextInfo”:真実
}
CVBS HDMI to IP エンコーダ
CVBS HDMI to IP エンコーダ
アナログ CVBS AV ビデオからイーサネット IP ビデオ ストリーム コンバータ ボード エンコーダ サポート UDP RTSP 低遅延
CVBS HDMI to IP エンコーダ
ビデオ エンコーダ ボード TCP/RTSP 通信 & JSON API プロトコル中国語
UART 経由のビデオ エンコーダー ボード OSD 制御 – FAQ
Q1. TTL UART インターフェイスを介して Vcan2090S の OSD テキストを制御できますか?
標準の Vcan2090S ファームウェアは現在、TCP/JSON API を介して OSD 制御を提供します。.
デバイスはポート上で TCP サーバーとして動作します。 8866, OSD テキストは、 setVideoOsdTextInfo 指示.
現在の通信プロトコルのドキュメントでは、 ない OSDパラメータを直接制御するためのUARTプロトコルを定義する.
したがって, 標準ファームウェアが TTL UART インターフェイス経由で同じ JSON コマンドを受け入れるかどうかは確認できません.
第2四半期. 同じ JSON コマンドを TCP ではなく UART 経由で送信できますか?
Vcan2090S 用に文書化された標準プロトコルではありません.
次の JSON コマンドが TCP インターフェイスに対して定義されています:
{
"setVideoOsdTextInfo": {
"u8IspChn": 0,
"u8TextIdx": 1,
"u8Enable": 1,
"u16XRatioBase50000": 40000,
"u16YRatioBase50000": 1600,
"u8FgTransparency": 10,
"u8BgTransparency": 255,
"u8SizeType": 1,
"u32TextColor_BGRA8888": 4294967295,
"aszText": "test 11111222233334444"
}
}
このコマンドは TCP/JSON API 通常は TCP ポート経由でエンコーダに送信されます 8866.
したがって、特定の UART コマンド プロトコルがファームウェアに実装されていない限り、UART と TCP は別のインターフェイスと見なす必要があります。.
Q3. OSD制御に使用されるTCPポートは何ですか?
Vcan2090S は、:
- インタフェース: TCP
- デバイスの役割: TCPサーバー
- デフォルトのTCPポート:
8866 - データ形式: プレーンな JSON 文字列
例えば:
{
"setVideoOsdTextInfo": {
"u8IspChn": 0,
"u8TextIdx": 1,
"u8Enable": 1,
"aszText": "Camera 01"
}
}
コマンドが正常に処理された後, デバイスが戻ります:
{
"setVideoOsdTextInfo": true
}
Q4. OSDテキストは動的に更新できますか?
はい.
の setVideoOsdTextInfo コマンドを使用して OSD テキストを動的に変更できます.
例えば:
{
"setVideoOsdTextInfo": {
"u8IspChn": 0,
"u8TextIdx": 1,
"u8Enable": 1,
"aszText": "Battery: 85%"
}
}
アプリケーションは、表示されたテキストを更新する必要があるときはいつでも新しいコマンドを送信できます。.
Q5. OSDテキストを変更するためのUARTコマンドの例はありますか?
標準の Vcan2090S プロトコルのドキュメントでは、現在、次の UART コマンドが定義されていません。 setVideoOsdTextInfo.
したがって, 特定のハードウェアとファームウェアのバージョンを確認せずに、標準的な UART コマンドの例を提供することはできません。.
アプリケーションが UART ベースの OSD 制御を必要とする場合, カスタマイズされたファームウェア ソリューションを評価できます.
例えば, 専用の UART コマンド プロトコルを実装して、OSD テキストのみを更新することも可能, Wi-Fi や TCP 接続を必要とせずに.
Q6. UARTパラメータとは何ですか?
UARTのボーレート, データビット, パリティ, ストップビット, およびピンの定義はハードウェア/ファームウェアに依存しており、Vcan2090S 用に提供される TCP/JSON プロトコルのドキュメントでは指定されていません。.
したがって, UART インターフェイスを使用する前に、特定のハードウェア バージョンを確認してください。.
お客様には、次のような標準設定を想定しないことをお勧めします。 115200 8N1 弊社からの確認なしに.
Q7. どの UART ピンを使用する必要があるか?
正確な UART TX, RX ピンと GND ピンは、Vcan2090S ハードウェア バージョンとコネクタ定義に依存します.
適切な UART インターフェイスを特定する必要がある場合は、ハードウェアのバージョン、またはコネクタ/ピン定義の鮮明な写真を提供してください。.
Q8. バッテリー駆動のシステムを使用しているため、Wi-Fi を使用したくない. 推奨される解決策は何ですか?
アプリケーションに Wi-Fi が必要ない場合, 有線 UART インターフェイスは、適切な低電力制御方法となります。, ファームウェアが必要な UART コマンドをサポートしている場合.
現在の標準ファームウェアの場合, OSD 制御の文書化された方法は TCP/JSON です.
必要なアプリケーション向け:
- Wi-Fiなし
- 低消費電力
- MCUへの直接接続
- 動的なOSDアップデート
- 簡単なUART通信
について話し合うことができます カスタム UART OSD 制御プロトコル.
これにより、外部 MCU が Wi-Fi 接続を確立せずに TTL UART 経由で OSD テキストを直接更新できるようになります。.
Q9. Vcan2090S ファームウェアを UART OSD 制御用にカスタマイズできますか?
はい, プロジェクトに UART ベースの OSD 制御が必要な場合は、カスタマイズされたファームウェア ソリューションを評価できます.
カスタマイズされたプロトコルは、外部 MCU が次のような単純なコマンドを送信するだけで済むように設計できます。:
SET_OSD,0,1,Battery:85%
またはプロジェクトの要件に応じた別のバイナリ/JSON ベースのコマンド形式.
正確なコマンド形式, UARTパラメータ, ピン定義は、Vcan2090S ハードウェア バージョンとアプリケーション要件に基づいて当社のエンジニアリング チームによって確認される必要があります。.
Q10. 標準の Vcan2090S ファームウェアに推奨されるインターフェイスは何ですか?
標準ファームウェアの場合, OSD コントロールに推奨されるインターフェイスは次のとおりです。:
TCP + JSON API
基本的なアーキテクチャは次のとおりです:
Mobile App / PC / MCU
|
| TCP
| Port 8866
v
Vcan2090S Encoder
|
v
OSD Processing
|
v
Encoded Video Stream
低電力 MCU とエンコーダの直接接続が必要な場合, UART ベースのカスタマイズを評価するには、お問い合わせください。.

質問する
ご回答をありがとうございました。 ✨