public PpboxSource( String url) { this.demuxer_ = new Demuxer(); this.url_ = url; this.pending_ = false; this.mediaStreamTypes_ = new List<MediaStreamType>(); this.mediaStreamDescriptions_ = new Dictionary<MediaStreamType, MediaStreamDescription>(); this.mediaStreamSamples_ = new Dictionary<MediaStreamType, List<MediaStreamSample>>(); }
public void Demux() { var knownTypes = new[] { 1, 2 }; var dm = new Demuxer<int, Event<long>>(knownTypes, "@event => @event.Type"); foreach (var stream in dm.Streams) stream.Should().NotBeNull(); var testInterval = new TestInterval(100, 5); testInterval.Interval.Subscribe(dm); var expected = new[] {20L, 20L}; var results = new long[2]; for (int index = 0; index < knownTypes.Length; index++) { var x = index; dm.Streams[knownTypes[index]].Count().Subscribe(i => results[x] = i); } testInterval.Start(); results.ShouldAllBeEquivalentTo(expected); }
private void Open_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); //ofd.Filter = "" if (ofd.ShowDialog() == true) { m_demuxer = new Demuxer(File.Open(ofd.FileName, FileMode.Open, FileAccess.Read)); var width = m_demuxer.Video.Width; var height = m_demuxer.Video.Height; var format = PixelFormats.Rgb24; var buffer = m_demuxer.GetBufferRGB(); m_bitmap = new WriteableBitmap((int)width, (int)height, 96d, 96d, format, null); Int32Rect rec = new Int32Rect(0, 0, (int)width, (int)height); m_bitmap.WritePixels(rec, buffer, m_bitmap.BackBufferStride, 0); ui_image.Source = m_bitmap; } }
public Demuxer Clone() { Demuxer demuxer = (Demuxer)MemberwiseClone(); demuxer.AudioFormatOpt = new SerializableDictionary <string, string>(); foreach (var kv in AudioFormatOpt) { demuxer.AudioFormatOpt.Add(kv.Key, kv.Value); } demuxer.VideoFormatOpt = new SerializableDictionary <string, string>(); foreach (var kv in VideoFormatOpt) { demuxer.VideoFormatOpt.Add(kv.Key, kv.Value); } demuxer.SubsFormatOpt = new SerializableDictionary <string, string>(); foreach (var kv in SubsFormatOpt) { demuxer.SubsFormatOpt.Add(kv.Key, kv.Value); } return(demuxer); }
public static void Main(string[] args) { try { var demuxer = new Demuxer(); demuxer.Open("C:\\Temp\\Gus.mp3"); Console.WriteLine("Demuxer opened"); var audioParameters = demuxer.GetAudioDecoder().GetAudioParameters() .SetMediaType(MediaType.Audio) .SetCodecType(CodecType.PCM_Signed16BitLittleEndian) .SetSampleRate(44100) .SetBitRate(16 * 44100 * 2) .SetAudioChannelLayout(0x00000003) .SetChannelCount(2) .SetSampleFormat(SampleFormat.Signed16Bit) .SetTimeBase(new RationalNumber(1, 44100)); var muxer = new Muxer(); muxer.Open("C:\\Temp\\Gus.wav", audioParameters, null); Console.WriteLine("Muxer opened"); var resampler = new Resampler(); resampler.Initialise(demuxer.GetAudioDecoder().GetCodec(), muxer.GetAudioEncoder().GetCodec()); var frames = 0; demuxer.FrameDecodedEvent += (frameWrapper) => { switch (frameWrapper.GetMediaType()) { case MediaType.Audio: var resampledFrame = resampler.Convert(frameWrapper); muxer.AddToBuffer(resampledFrame); if (resampler.Flush(resampledFrame) > 0) { muxer.AddToBuffer(resampledFrame); } frames++; Console.WriteLine($"\r{frames} frames decoded"); break; case MediaType.Video: // TODO break; default: break; } }; demuxer.DecodePackets(MediaType.Audio); Console.WriteLine($"\r{frames} audio frames decoded - muxing..."); muxer.WriteBuffer(); Console.WriteLine("Mux complete - cleaning up..."); muxer.Close(); demuxer.Close(); Console.WriteLine("Finished"); } catch (Exception ex) { Console.WriteLine($"Exception: {ex}"); } Console.WriteLine("Enter a character to go away..."); Console.ReadKey(); }