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); }
//<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); }
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; }