Как преобразовать кадр MediaFrameReader с USB-камеры в массив C # byte [] для отправки на удаленный сокет - PullRequest
0 голосов
/ 16 октября 2018

Не могу понять, как преобразовать кадр размером 1,2 МБ в байт [], чтобы отправить кадр камеры из моего приложения Windows 10 UWP C # в сокет в приложении Xamarin для iPad.

СОБЫТИЕ ДЛЯ ПРИБЫТИЯ КАДРАИЗ КАМЕРЫ ...

private void Reader_FrameArrived( MediaFrameReader sender, MediaFrameArrivedEventArgs args )
{
    using( MediaFrameReference frame = sender.TryAcquireLatestFrame() )
    {
        if( frame != null )
        {
            // frame = latest frame or null if no frame
            var frame_size_bytes = frame.Buffer​Media​Frame.Buffer.Length;

            if( SDKTemplate.SOURCE.Camera_Service_Socket.connection_established && frame != null )
            {

                ////////////////////////////////    S E N D   F R A M E   T O   I P A D      /////////////////////////////


                // Init packet header:
                    this.packet_header.CFV = 1;     
                    var header_size_bytes = System.Runtime.InteropServices.Marshal.SizeOf(typeof( Packet_Header_struct));
                    this.packet_header.frame_size_bytes = Convert.ToInt32( frame_size_bytes );
                    this.packet_header.packet_sequence_index = packet_sequence_index++;
                    this.packet_header.ORC = 0;     // TBD
                    this.packet_header.recognition_probability_factor = 0;  // tbd
                    this.packet_header.logical_CRC = 0;     // TBD

                // Send packet header to iPad:
                    // Copy structure to a Byte array:
                    Byte[] header_buffer = getBytes( this.packet_header );

                    SDKTemplate.SOURCE.Camera_Service_Socket.send_data( header_buffer );     /////////  SEND 32 BYTE HEADER

                // Send packet payload (ie. frame) to iPad:
                // Copy 



                SDKTemplate.SOURCE.Camera_Service_Socket.send_data( frame.???????????????????? );    ////////////  SEND 1.2MByte frame
            }

            // Display locally:
            _frameRenderer.ProcessFrame( frame );
        }
    }
}

1 Ответ

0 голосов
/ 17 октября 2018

как преобразовать кадр размером 1,2 МБ в байт []

Вы можете получить буфер из BufferMediaFrame кадра.Затем вы можете вызвать метод .ToArray () , чтобы получить массив байтов.

using (var frame = sender.TryAcquireLatestFrame())
{
    if (frame != null)
    {
        IBuffer buffrer = frame.BufferMediaFrame.Buffer;
        byte[] bytes = buffrer.ToArray();
    }
    _frameRenderer.ProcessFrame(frame);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...