2017-03-17 20 views
0

私はライブのユニプロジェクトに参加しています(ウェブカメラから撮影)、C#(UWP、Windows 10 IoTコア)を使用してデスクトップにストリーミングします。 UWPを使用してJava(Raspの場合)とクライアント側でサーバー側の実装を行っているプロジェクトがいくつか見つかりましたが、C#でサーバーサイドプログラミングに関するプロジェクトを見つけることができませんでした。ラズベリーパイとCを使用したライブビデオストリーミング

また、Microsoftのリンクではそうではないと言われているように、ライブストリーミングのためにC#を使用してサーバーサイドプログラミングを行うことは本当に可能ですか? View the Microsoft Link

ご協力いただければ幸いです。

よろしくお願いします。 T.私はC#でのサーバーサイドのプログラミングに関するいかなるプロジェクトを見つけることができなかったUWPを使用して、いくつかのJavaでサーバサイドの実装を行っているプロジェクト(やすり用)とクライアント側を発見した場合でも

+0

[このプロジェクト](https://github.com/davetoland/VideoSocketServer)にチェックしましたか? –

+0

ありがとうございます。 –

答えて

0

私がコード化して正常にテストした別のプロジェクトがあります。それがあなたを助けることができるなら、あなたは参照を持つことができます。

MyVideoServerアプリケーションで重要なのは、カメラのIDとビデオのpreviewFrameを取得していることです。 previewFrame = await MyMediaCapture.GetPreviewFrameAsync(videoFrame);その後、streamSocketClientを通じてビデオストリームをクライアントに送信します。 await streamSocketClient.sendBuffer(buffer);

public MainPage() 
    { 
     this.InitializeComponent(); 
     InitializeCameraAsync(); 
     InitSocket(); 
    } 

    MediaCapture MyMediaCapture; 
    VideoFrame videoFrame; 
    VideoFrame previewFrame; 
    IBuffer buffer; 

    DispatcherTimer timer; 
    StreamSocketListenerServer streamSocketSrv; 
    StreamSocketClient streamSocketClient; 

    private async void InitializeCameraAsync() 
    { 
     var allVideoDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture); 
     DeviceInformation cameraDevice = allVideoDevices.FirstOrDefault(); 
     var mediaInitSettings = new MediaCaptureInitializationSettings { VideoDeviceId = cameraDevice.Id }; 
     MyMediaCapture = new MediaCapture(); 

     try 
     { 
      await MyMediaCapture.InitializeAsync(mediaInitSettings); 
     } 
     catch (UnauthorizedAccessException) 
     { 

     } 

     PreviewControl.Height = 180; 
     PreviewControl.Width = 240; 
     PreviewControl.Source = MyMediaCapture; 

     await MyMediaCapture.StartPreviewAsync(); 
     videoFrame = new VideoFrame(BitmapPixelFormat.Bgra8, 240, 180, 0); 
     buffer = new Windows.Storage.Streams.Buffer((uint)(240 * 180 * 8)); 
    } 

次に鍵サーバのコードは、サーバーを作成し、InitSocket機能でソケット通信によりクライアントを接続しようとしています。 StreamSocketListenerServerをオブジェクトとして作成して開始する必要があります。同時に、サーバのipポートが設定されます。 streamSocketSrv = new StreamSocketListenerServer(); await streamSocketSrv.start("22333");最後に、Timer_Tickは100msごとにクライアントにビデオストリームを送信します。

private async void InitSocket() 
    { 
     streamSocketSrv = new StreamSocketListenerServer(); 
     await streamSocketSrv.start("22333"); 

     streamSocketClient = new StreamSocketClient(); 

     timer = new DispatcherTimer(); 
     timer.Interval = TimeSpan.FromMilliseconds(100); 
     timer.Tick += Timer_Tick; 
     timer.Start(); 
    } 

あなたは、あなたがPC上でMyVideoClientアプリケーションを配備することができラズベリーパイ3. enter image description here にMyVideoServerアプリケーションを配備することができ後。次に、「Raspberry Pi 3 IP Address」と入力し、「接続」ボタンをクリックします。ビデオストリームがアプリケーションに表示されます。 enter image description here

これはsampleコードです。参考にすることができます。

+0

ありがとうございました:-) –

+0

このソリューションにオーディオを追加できますか?もし私がそれをする方法ができますか? –

関連する問題