コード例 #1
0
        private MediaEncodingProfile GetEncodingProfile()
        {
            var profile           = new MediaEncodingProfile();
            var containerEncoding = new ContainerEncodingProperties
            {
                Subtype = MediaEncodingSubtypes.Mpeg4
            };

            const uint bitsPerKiloBit = 1000;

            var videoEncoding = new VideoEncodingProperties
            {
                Subtype          = MediaEncodingSubtypes.H264,
                Width            = Configuration.Width,
                Height           = Configuration.Height,
                Bitrate          = Configuration.KiloBitsPerSecond * bitsPerKiloBit,
                FrameRate        = { Denominator = 1, Numerator = Configuration.FramesPerSecond },
                PixelAspectRatio = { Denominator = 1, Numerator = 1 }
            };

            profile.Container = containerEncoding;
            profile.Video     = videoEncoding;

            return(profile);
        }
コード例 #2
0
ファイル: MainPage.xaml.cs プロジェクト: arturosantos/el-bebe
        //<SnippetGetMediaEncodingProfile>
        public MediaEncodingProfile CreateProfileForTranscoder(VideoStreamDescriptor videoStream1, VideoStreamDescriptor videoStream2, AudioStreamDescriptor audioStream, TimedMetadataStreamDescriptor timedMetadataStream)
        {
            ContainerEncodingProperties container = new ContainerEncodingProperties()
            {
                Subtype = MediaEncodingSubtypes.Mpeg4
            };

            MediaEncodingProfile profile = new MediaEncodingProfile()
            {
                Container = container
            };


            VideoStreamDescriptor encodingVideoStream1 = videoStream1.Copy();

            encodingVideoStream1.EncodingProperties.Subtype = MediaEncodingSubtypes.H264;
            encodingVideoStream1.Label = videoStream1.Name;

            VideoStreamDescriptor encodingVideoStream2 = videoStream2.Copy();

            encodingVideoStream2.EncodingProperties.Subtype = MediaEncodingSubtypes.H264;
            encodingVideoStream2.Label = videoStream2.Name;

            AudioStreamDescriptor encodingAudioStream = audioStream.Copy();

            encodingAudioStream.EncodingProperties.Subtype = MediaEncodingSubtypes.Ac3;
            encodingAudioStream.Label = audioStream.Name;

            TimedMetadataStreamDescriptor encodingTimedMetadataStream = timedMetadataStream.Copy();

            profile.SetTimedMetadataTracks(new TimedMetadataStreamDescriptor[] { encodingTimedMetadataStream });
            profile.SetVideoTracks(new VideoStreamDescriptor[] { encodingVideoStream1, encodingVideoStream2 });
            profile.SetAudioTracks(new AudioStreamDescriptor[] { encodingAudioStream });
            return(profile);
        }
コード例 #3
0
        public async Task Record()
        {
            if (IsRecording)
            {
                throw new InvalidOperationException("Recording already in progress!");
            }
            _memoryBuffer = new InMemoryRandomAccessStream();
            _mediaCapture = new MediaCapture();
            MediaCaptureInitializationSettings settings =
                new MediaCaptureInitializationSettings
            {
                StreamingCaptureMode = StreamingCaptureMode.Audio
            };

            await _mediaCapture.InitializeAsync(settings);

            MediaEncodingProfile recordProfile = new MediaEncodingProfile();

            AudioEncodingProperties audioProp = new AudioEncodingProperties();

            audioProp.ChannelCount  = 1;
            audioProp.BitsPerSample = 16;
            audioProp.SampleRate    = 8000;
            audioProp.Bitrate       = 16;
            audioProp.Subtype       = MediaEncodingSubtypes.AmrNb;
            recordProfile.Audio     = audioProp;
            ContainerEncodingProperties containProp = new ContainerEncodingProperties();

            containProp.Subtype     = MediaEncodingSubtypes.Mpeg4;
            recordProfile.Container = containProp;

            recordProfile.Video = null;
            //await _mediaCapture.StartRecordToStorageFileAsync(recordProfile, fileBuffer);
            StorageFile amr = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/a.amr"));

            var pro = await MediaEncodingProfile.CreateFromFileAsync(amr);

            pro.Container.Subtype = MediaEncodingSubtypes.Mpeg4;
            var pro2 = MediaEncodingProfile.CreateWma(AudioEncodingQuality.Low);
            await _mediaCapture.StartRecordToStreamAsync(pro2, _memoryBuffer);

            IsRecording = true;
        }