開発者ドキュメントユーザーガイドSDK for Linux音声・映像入力ソースと LocalStream の作成方法

音声・映像入力ソースと LocalStream の作成方法

Publish をするためには、音声・映像入力ソースまたはデータソースと紐付いた LocalStream が必要です。

このセクションでは SkyWay SDK for Linux®︎ (以下、SDK for Linux ) でソースを取得し LocalStream を作成する方法について説明します。

音声入力ソース

音声入力ソース(音声入力デバイス)を取得しLocalStreamを作成します。

音声入力の LocalStream を作る操作は以下の流れで行います。

  1. 利用できるデバイスのリストを取得する
  2. 利用するデバイスを指定する
  3. デバイスから LocalStream を作成する

デバイス一覧の取得には skyway::media::DeviceManager::GetRecordDevices() を、デバイスの指定には skyway::media::DeviceManager::SetRecordingDevice() を利用します。

LocalStreamは skyway::media::StreamFactory::CreateAudioStream() で作成します。

取得したデバイスのリストは[0]の要素にデフォルトのデバイスが格納され、[1]以降に各デバイスが列挙されています。

以下は音声入力デバイスを取得して LocalStream を作成する例です。デフォルトのデバイスである audio_devices[0] を指定しています。

// 音声入力デバイスを取得します。 auto audio_devices = skyway::media::DeviceManager::GetRecordDevices(); if (audio_devices.size() > 0) { // index で入力デバイスを指定します。 auto device = audio_devices[0]; skyway::media::DeviceManager::SetRecordingDevice(device); // LocalStream を作成します。 auto audio_stream = skyway::media::StreamFactory::CreateAudioStream(); }

注意 SDK for Linux では複数の音声入力ソースを同時に利用することはできません。

映像入力ソース

映像ソース(ビデオデバイス)を取得しLocalStreamを作成します。

skyway::media::DeviceManager::GetVideoDevices() で利用できるビデオデバイスの一覧を取得できます。 LocalStreamはskyway::media::StreamFactory::CreateVideoStream(device) で作成します。

以下はデバイスを指定してLocalStreamを作成する例です。

この例では利用できるデバイスが存在する場合、先頭のデバイスを利用しています。

// 利用できるビデオデバイスの一覧を取得します。 auto video_devices = skyway::media::DeviceManager::GetVideoDevices(); if (video_devices.size() > 0) { // index で入力デバイスを指定します。 auto device = video_devices[0]; // LocalStream を作成します。 auto video_stream = skyway::media::StreamFactory::CreateVideoStream(device); }

また、以下は利用可能な全デバイスの index と名前を確認する例です。

auto video_devices = skyway::media::DeviceManager::GetVideoDevices(); if (video_devices.size() > 0) { std::cout << "- VideoDevices" << std::endl; for (auto device : video_devices) { std::cout << " - Index: " << device.index << " Name: " << device.name << std::endl; } }

注意 /dev/video0 ~ /dev/video63 以外のデバイスは利用できません。

データソース

データソースの LocalStream の作成は以下の手順で行います。

  1. LocalStream を作成する
  2. LocalStream にデータを書き込む

データソースの LocalStream を作成するために skyway::media::StreamFactory::CreateDataStream() を利用します。

データの送信には作成した LocalStream の Write() メソッドを利用します。

以下は LocalStream を作成して一定間隔で文字列を送信する例です。

// LocalStream を作成します。 auto data_stream = skyway::media::StreamFactory::CreateDataStream(); // 一定間隔でメッセージを送信するthreadを作成します。 auto data_thread = std::make_unique<std::thread>([this] { auto count = 0; while (true) { auto data = "send msg: " + std::to_string(count); data_stream->Write(data); count++; std::this_thread::sleep_for(std::chrono::seconds(1)); } });

商標

Linux®︎は、米国およびその他の国における Linus Torvalds の登録商標です。