Exemplo n.º 1
0
        /// <summary>
        /// Read/Write a file and check the contents are identical
        /// </summary>
        /// <returns></returns>
        public async Task ReadWrite()
        {
            const string fpath = @"C:\Users\Kieran\Downloads\test-001.ts";

            using var fsin = new FileStream(fpath, FileMode.Open, FileAccess.Read);
            using var dump = new StreamWriter($"{fpath}.txt");

            var pidPipes = new Dictionary <ushort, Pipe>();

            await PipeStream(fsin, async (pr) =>
            {
                var pes       = new MPEGTS.PESReader();
                pes.OnPacket += async(pid, data) =>
                {
                    //skip non-video
                    if (data[0] == 0x00 && data[1] == 0x00 && data[2] == 0x01 && data[3] == 0xe0)
                    {
                        if (!pidPipes.ContainsKey(pid))
                        {
                            var pnew = new Pipe();
                            _        = Task.Run(async() =>
                            {
                                await foreach (var nal in MediaStreams.NALReader.ReadUnits(pnew.Reader))
                                {
                                    if (!nal.Equals(default))
Exemplo n.º 2
0
        public async Task TestStream()
        {
            var req = new HttpClient();
            var rsp = await req.GetAsync("http://localhost/play-channel/93276");

            if (rsp.IsSuccessStatusCode)
            {
                await PipeStream(await rsp.Content.ReadAsStreamAsync(), async (pr) =>
                {
                    var pes       = new MPEGTS.PESReader();
                    pes.OnPacket += async(pid, data) =>
                    {
                        using var fs = new FileStream($"{pid}.bin", FileMode.Append, FileAccess.ReadWrite);
                        await fs.WriteAsync(data);
                        await fs.FlushAsync();
                        fs.Close();
                    };
                    await foreach (var pkt in MPEGTSReader.TryReadPackets(pr))
                    {
                        await pes.PushPacket(pkt);
                    }
                });
            }
        }