Grabber::setSinkType Method
シンクのフォーマットの設定。シンクはイメージストリームの出力対象を指定するものです。ライブモード中や"prepared"状態の場合にはシンクの設定はできません。
構文
bool setSinkType( smart_ptr<GrabberSinkType> pNewSink );
パラメータ | 説明 |
---|---|
pNewSink | 新しいシンクタイプを指定します。 |
戻り値
シンクが正常に変更された場合はtrue、エラーが発生した場合はfalse。
備考
サンプル
ここではどのようにMediaStreamSinkクラスライブラリリファレンス>クラス>MediaStreamSinkを設定するかを紹介します。
Grabber grabber;
if( !setupDeviceFromFile( grabber ) )
{
return -1;
}
tCodecListPtr pCodecs = Codec::getAvailableCodecs();
// 全てのコーデックを表示
int choice = presentUserChoice( toStringArrayPtrListPtr( pCodecs ) );
if( choice == -1 )
{
return -1;
}
// 選択されたコーデックでAVIファイルへの書き込みを行うためのMediaStreamSinkを作成
tMediaStreamSinkPtr pSink = MediaStreamSink::create(
MediaStreamContainer::create( MSC_AviContainer ), pCodecs->at( choice ) );
// ファイル名の設定
pSink->setFilename( filename );
// シンクは最初は停止しているためビデオデータはファイルには書き込まれません
pSink->setSinkMode( GrabberSinkType::ePAUSE );
// pSink を現在のシンクとして設定
grabber.setSinkType( pSink );
// ライブモードの開始。pSinkは停止中なのでライブ画像は表示されてもAVIファイルへの書き込みはされません。
if( !grabber.startLive( true ) )
{
std::cerr << grabber.getLastError().toString() << std::endl;
return -1;
}
std::cout << "Press [enter] to start capturing!";
std::cin.get();
// シンクを開始させます。イメージストリームがAVIファイルに書き込まれます。
pSink->setSinkMode(GrabberSinkType::eRUN );
std::cout << "Video recording started." << std::endl;
std::cout << "Press [enter] to stop capturing!";
std::cin.get();
// シンクを停止させます。これによりAVIファイルへの書き込みが停止します。
// GrabberSinkType::eRUNをパラメータとしてsetSinkMode をコールすることでAVI録画を再開します
pSink->setSinkMode(GrabberSinkType::ePAUSE );
std::cout << "Video recording stopped." << std::endl;
// ライブモードを停止します。
// モードがGrabberSinkType::ePAUSEでない場合AVIファイルへの書き込みが停止し、ファイルは閉じられます。
grabber.stopLive();