SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight 4で作る新しいRIAアプリケーション

カメラとマイクを使った新しいユーザー体験

Silverlight 4で作る新しいRIAアプリケーション(2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード sample.zip (1.8 MB)

ページの構成

 プログラムの解説に移る前に今回作成するアプリケーションの概要と、サンプルページの構成を確認しておきましょう。

 図2は今回作成するサンプルの動作イメージです。

図2 サンプルの動作イメージ
サンプルの動作イメージ

 サンプル画面は、実際にカメラの情報を表示する表示部と、キャプチャーの開始、停止、チャプターの取得、キャプチャーした音声を保存する操作部、チャプターごとのイメージを並べるチャプター部からなります。リスト1は今回のサンプルのページ定義です。

リスト1 サンプルページ定義
<navigation:Page x:Class="Slverlight4_2Sample.Views.WebCamSample" 
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
       xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
       mc:Ignorable="d"
       xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
       d:DesignWidth="640" d:DesignHeight="480"
       Title="WebCamSample Page">
  <StackPanel x:Name="LayoutRoot">
    <Rectangle Width="200" Height="200" Fill="Blue" x:Name="webCamDisplay" />
    <StackPanel Orientation="Horizontal">
      <Button Content="開始" Click="btnStart_Click" />
      <Button Content="停止" x:Name="btnStop" Click="btnStop_Click" />
      <Button Content="画像の切取" Click="btnCapture_Click" />
      <Button Content="音声の保存" Click="btnCaptureAudio_Click" /> 
    </StackPanel>
    <StackPanel HorizontalAlignment="Center">
      <ListBox x:Name="captureImages">
        <ListBox.ItemsPanel>
          <ItemsPanelTemplate>
            <VirtualizingStackPanel Orientation="Horizontal" />
          </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
      </ListBox>
    </StackPanel>
  </StackPanel>
</navigation:Page>

 画面の構成自体は特に問題になるところはないでしょう。後述しますが、ビデオデバイスから取得した動画データは、VideoBrushクラスでSilverlightのさまざまな要素に表示できます。今回は、webCamDisplayという名前を持つRectangleクラスに、ビデオデバイスから取得した動画を表示させています。

デバイスから取得した動画の表示

 リスト2に、デバイスから取得した動画を表示するサンプルを示します。

リスト2 ビデオデバイスから取得した動画を表示するサンプル
private CaptureSource _captureSource = null;

// キャプチャーの開始ボタンのイベントハンドラー
private void btnStart_Click(object sender, RoutedEventArgs e)
{
    // 1.デバイスへのアクセス許可を調査する。
    if (!(   CaptureDeviceConfiguration.AllowedDeviceAccess
          || CaptureDeviceConfiguration.RequestDeviceAccess()))
    {
        MessageBox.Show("デバイスの起動に失敗しました。");
        return;
    }

    // 2.デバイスを操作するためのCaptureSourceを作成する。
    _captureSource = new CaptureSource()
    {
        VideoCaptureDevice = CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice(),
        AudioCaptureDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice(),
    };

    // 3.ビデオブラシを作成し、動画を表示する。
    var brush = new VideoBrush();
    brush.SetSource(_captureSource);
    webCamDisplay.Fill = brush;

    // 4.ビデオデバイスからデータの取得を開始する。
    _captureSource.Start();
}

// キャプチャーのストップボタンのイベントハンドラー
private void btnStop_Click(object sender, RoutedEventArgs e)
{
    if (_captureSource != null)
        _captureSource.Stop();

}

次のページ
キャプチャー画像の表示

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Silverlight 4で作る新しいRIAアプリケーション連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト かるあ (杉山 洋一)(カルア(スギヤマ ヨウイチ))

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5392 2010/09/01 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング