<blockquote id="76sxc"></blockquote>
<cite id="76sxc"><track id="76sxc"></track></cite>
<legend id="76sxc"></legend>

  • <blockquote id="76sxc"><p id="76sxc"></p></blockquote>
    <sub id="76sxc"><p id="76sxc"></p></sub>

          錄制和回放

          本文內(nèi)容

          ● 使用回放API

          ● 時(shí)間戳同步


          傳感器SDK提供了用于將設(shè)備數(shù)據(jù)錄制到 Matroska (.mkv) 文件的 API 接口。 Matroska 容器格式可以存儲(chǔ)視頻數(shù)據(jù)、IMU數(shù)據(jù)和設(shè)備校準(zhǔn)信息。您可以使用 k4arecorder 命令行工具進(jìn)行錄制,也可以直接使用錄制 API 來錄制內(nèi)容。


          有關(guān)錄制 API 的詳細(xì)信息,請(qǐng)參閱 k4a_record_create()。

          有關(guān) Matroska 文件格式規(guī)范的詳細(xì)信息,請(qǐng)參閱錄制文件格式頁。



          使用回放 API

          錄制文件可以使用回放 API 進(jìn)行錄像回放。 通過回放 API 可以訪問格式與 SDK 相同的傳感器數(shù)據(jù)。


          打開錄制文件

          在以下示例中,我們將使用 k4a_playback_open() 打開一個(gè)錄制文件,輸出錄制長(zhǎng)度,然后使用 k4a_playback_close() 關(guān)閉該文件。

          k4a_playback_t playback_handle = NULL;
          if (k4a_playback_open("recording.mkv", &playback_handle) != K4A_RESULT_SUCCEEDED)
          {
             printf("Failed to open recording\n");
             return 1;
          }
          uint64_t recording_length = k4a_playback_get_last_timestamp_usec(playback_handle);
          printf("Recording is %lld seconds long\n", recording_length / 1000000);
          k4a_playback_close(playback_handle);


          讀取 Capture

          打開文件后,可以讀取錄制內(nèi)容中的 Capture。 以下示例演示讀取文件中的每個(gè) Capture。

          k4a_capture_t capture = NULL;
          k4a_stream_result_t result = K4A_STREAM_RESULT_SUCCEEDED;
          while (result == K4A_STREAM_RESULT_SUCCEEDED)
          {
             result = k4a_playback_get_next_capture(playback_handle, &capture);
             if (result == K4A_STREAM_RESULT_SUCCEEDED)
             {
                 // Process capture here
                 k4a_capture_release(capture);
             }
             else if (result == K4A_STREAM_RESULT_EOF)
             {
                 // End of file reached
                 break;
             }
          }
          if (result == K4A_STREAM_RESULT_FAILED)
          {
             printf("Failed to read entire recording\n");
             return 1;
          }


          在錄制內(nèi)容中查找

          到達(dá)文件末尾后,我們可能需要返回并再次讀取。 若要完成此過程,可以使用 k4a_playback_get_previous_capture() 進(jìn)行回讀,但根據(jù)錄制內(nèi)容的長(zhǎng)度,這種做法可能非常緩慢。 我們可以改用 k4a_playback_seek_timestamp() 函數(shù)轉(zhuǎn)到文件中的時(shí)間點(diǎn)。


          在此示例中,我們以微秒為單位指定了時(shí)間戳,以定位到文件中的各個(gè)時(shí)間點(diǎn)。

          // Seek to the beginning of the file
          if (k4a_playback_seek_timestamp(playback_handle, 0, K4A_PLAYBACK_SEEK_BEGIN) != K4A_RESULT_SUCCEEDED)
          {
             return 1;
          }
          // Seek to the end of the file
          if (k4a_playback_seek_timestamp(playback_handle, 0, K4A_PLAYBACK_SEEK_END) != K4A_RESULT_SUCCEEDED)
          {
             return 1;
          }
          // Seek to 10 seconds from the start
          if (k4a_playback_seek_timestamp(playback_handle, 10 * 1000000, K4A_PLAYBACK_SEEK_BEGIN) != K4A_RESULT_SUCCEEDED)
          {
             return 1;
          }
          // Seek to 10 seconds from the end
          if (k4a_playback_seek_timestamp(playback_handle, -10 * 1000000, K4A_PLAYBACK_SEEK_END) != K4A_RESULT_SUCCEEDED)
          {
             return 1;
          }


          讀取標(biāo)記信息

          錄制內(nèi)容還可能包含各種元數(shù)據(jù),例如設(shè)備序列號(hào)和固件版本。 此元數(shù)據(jù)存儲(chǔ)在錄制標(biāo)記中,可以使用 k4a_playback_get_tag() 函數(shù)來訪問。

          // Print the serial number of the device used to record
          char serial_number[256];
          size_t serial_number_size = 256;
          k4a_buffer_result_t buffer_result = k4a_playback_get_tag(playback_handle, "K4A_DEVICE_SERIAL_NUMBER", &serial_number, &serial_number_size);
          if (buffer_result == K4A_BUFFER_RESULT_SUCCEEDED)
          {
             printf("Device serial number: %s\n", serial_number);
          }
          else if (buffer_result == K4A_BUFFER_RESULT_TOO_SMALL)
          {
             printf("Device serial number too long.\n");
          }
          else
          {
             printf("Tag does not exist. Device serial number was not recorded.\n");
          }


          錄制標(biāo)記列表

          下面是可以包含在錄制文件中的所有默認(rèn)標(biāo)記的列表。 其中的許多值可用作 k4a_record_configuration_t 結(jié)構(gòu)的一部分,可以使用 k4a_playback_get_record_configuration() 函數(shù)來讀取。

          如果某個(gè)標(biāo)記不存在,則假設(shè)采用默認(rèn)值。

          標(biāo)記名稱

          默認(rèn)值

          k4a_record_configuration_t 字段

          備注

          K4A_COLOR_MODE

          "OFF"

          color_format / color_resolution

          可能的值:"OFF"、"MJPG_1080P"、"NV12_720P"、"YUY2_720P" 等

          K4A_DEPTH_MODE

          "OFF"

          depth_mode / depth_track_enabled

          可能的值:"OFF"、"NFOV_UNBINNED"、"PASSIVE_IR" 等

          K4A_IR_MODE

          "OFF"

          depth_mode / ir_track_enabled

          可能的值:"OFF"、"ACTIVE"、"PASSIVE"

          K4A_IMU_MODE

          "OFF"

          imu_track_enabled

          可能的值:"ON"、"OFF"

          K4A_CALIBRATION_FILE

          "calibration.json"

          不適用

          請(qǐng)參見k4a_device_get_raw_calibration()

          K4A_DEPTH_DELAY_NS

          "0"

          depth_delay_off_color_usec

          值以納秒為單位存儲(chǔ),API 以微秒為單位。

          K4A_WIRED_SYNC_MODE

          "STANDALONE"

          wired_sync_mode

          可能的值:"STANDALONE"、"MASTER"、"SUBORDINATE"

          K4A_SUBORDINATE_DELAY_NS

          "0"

          subordinate_delay_off_master_usec

          值以納秒為單位存儲(chǔ),API 以微秒為單位。

          K4A_COLOR_FIRMWARE_VERSION

          ""

          不適用

          設(shè)備顏色固件版本,例如 "1.x.xx"

          K4A_DEPTH_FIRMWARE_VERSION

          ""

          不適用

          設(shè)備深度固件版本,例如 "1.x.xx"

          K4A_DEVICE_SERIAL_NUMBER

          ""

          不適用

          錄制設(shè)備序列號(hào)

          K4A_START_OFFSET_NS

          "0"

          start_timestamp_offset_usec

          請(qǐng)參閱下面的時(shí)間戳同步。

          K4A_COLOR_TRACK

          None

          不適用

          請(qǐng)參閱錄制文件格式 - 識(shí)別篇目

          K4A_DEPTH_TRACK

          None

          不適用

          請(qǐng)參閱錄制文件格式 - 識(shí)別篇目。

          K4A_IR_TRACK

          None

          不適用

          請(qǐng)參閱錄制文件格式 - 識(shí)別篇目

          K4A_IMU_TRACK

          None

          不適用

          請(qǐng)參閱錄制文件格式 - 識(shí)別篇目。

           


          時(shí)間戳同步

          Matroska 格式要求錄制內(nèi)容必須以時(shí)間戳 0 開頭。 使用多機(jī)同步時(shí),每個(gè)設(shè)備中的第一個(gè)時(shí)間戳可以不為 0。

          為了在錄制和播放之間切換時(shí)保留設(shè)備的原始時(shí)間戳,該文件會(huì)存儲(chǔ)一個(gè)要應(yīng)用到時(shí)間戳的偏移量。

          K4A_START_OFFSET_NS 標(biāo)記用于指定時(shí)間戳偏移量,以便在錄制后可以重新同步文件。 可將此時(shí)間戳偏移量添加到文件中的每個(gè)時(shí)間戳,以重新構(gòu)造原始設(shè)備時(shí)間戳。

          起始偏移量也會(huì)在 k4a_record_configuration_t 結(jié)構(gòu)中提供。


          <blockquote id="76sxc"></blockquote>
          <cite id="76sxc"><track id="76sxc"></track></cite>
          <legend id="76sxc"></legend>

        1. <blockquote id="76sxc"><p id="76sxc"></p></blockquote>
          <sub id="76sxc"><p id="76sxc"></p></sub>

                双龙h啊~嗯啊h巨大漫画 | freesexvideos喷水 | 冲田杏梨av番号大全 | 久久久国产精品免费A片分环卫 | 播放性生活片 | 园产精品久久久久久久7电影 | 色欲麻豆国产福利精品 | 无码任你躁久久久久久在少妇 | 好爽好紧军人h男男小说 | 91亚洲国产成人久久精品麻豆 |