Exemplo n.º 1
0
        public void Test264File()
        {
            int width = 320, height = 240;
            var x264 = new X264Native(new X264Params(width, height, 10, 320));

            //x264.SetIKeyIntMax(10);
            x264.Init();

            var        ls    = StreamingKit.Media.ReadFile.GetBuffByFile1(@".\test.yuv");
            AVCodecCfg cf    = AVCodecCfg.CreateVideo(width, height, (int)StreamingKit.AVCode.CODEC_ID_H264, 100000);
            FFImp      ffimp = new FFImp(cf, true);
            //FFScale ffscale = new FFScale(width, height, 26, 12, width, height, 12, 12);
            FFScale ffscale = new FFScale(width, height, 0, 12, width, height, 3, 24);

            foreach (var item1 in ls)
            {
                var item    = ffscale.FormatS(item1);
                var in_buf  = FunctionEx.BytesToIntPtr(item);
                var out_buf = Marshal.AllocHGlobal(item.Length);
                //var bKeyFrame = false;
                //var nOutLen = 0;
                var nInLen = item.Length;
                //  var size = X264Encode(x264.obj, in_buf, ref nInLen, out_buf, ref nOutLen, ref bKeyFrame);
                // var buf = FunctionEx.IntPtrToBytes(out_buf, 0, size);
                var buf = x264.Encode(item);
                Console.WriteLine(buf.To16Strs(0, 16));
                var size = buf.Length;

                if (w == null)  //OK
                {
                    w = new BinaryWriter(new FileStream("4567.es", FileMode.Create));
                }
                w.Write(buf);
            }
        }
Exemplo n.º 2
0
        private void Init(MediaFrame frame, bool reinit = false)
        {
            if (_inited && !reinit)
            {
                return;
            }

            if (_ffimp != null)
            {
                _ffimp.Release();
            }

            _inited = true;
            _width  = frame.nWidth;
            _height = frame.nHeight;
            _ffimp  = new FFImp(AVCodecCfg.CreateVideo(_width, _height), true, true);
            if (_yuvDraw == null && _control != null)
            {
                _yuvDraw = new YUVGDIDraw(_control);
            }
            _yuvDraw.SetSize(_width, _height);

            _yuvDataBuffer = new byte[_width * _height * 3 / 2];

            _drawHandle = new Action <byte[]>(Draw);
        }
Exemplo n.º 3
0
        public void Test264FileFrame()
        {
            int width = 320, height = 240;
            var x264 = new X264Native(new X264Params(width, height, 10, 320));

            //x264.SetIKeyIntMax(10);
            x264.Init();
            var        fs    = new FileStream("./testfile.test", FileMode.CreateNew);
            var        ls    = StreamingKit.Media.ReadFile.GetBuffByFile1(@".\test.yuv");
            AVCodecCfg cf    = AVCodecCfg.CreateVideo(width, height, (int)StreamingKit.AVCode.CODEC_ID_H264, 100000);
            FFImp      ffimp = new FFImp(cf, true);
            //FFScale ffscale = new FFScale(width, height, 26, 12, width, height, 12, 12);
            FFScale ffscale = new FFScale(width, height, 0, 12, width, height, 3, 24);

            foreach (var item1 in ls)
            {
                var item    = ffscale.FormatS(item1);
                var in_buf  = FunctionEx.BytesToIntPtr(item);
                var out_buf = Marshal.AllocHGlobal(item.Length);
                //var bKeyFrame = false;
                //var nOutLen = 0;
                var nInLen = item.Length;
                //  var size = X264Encode(x264.obj, in_buf, ref nInLen, out_buf, ref nOutLen, ref bKeyFrame);
                // var buf = FunctionEx.IntPtrToBytes(out_buf, 0, size);
                var buf = x264.Encode(item);
                Console.WriteLine(buf.To16Strs(0, 16));
                var size = buf.Length;

                if (w == null)  //OK
                {
                    w = new BinaryWriter(new FileStream("4567.es", FileMode.Create));
                }
                w.Write(buf);

                var mf = new MediaFrame();
                mf.IsKeyFrame = (byte)(x264.IsKeyFrame() ? 1 : 0);
                mf.Width      = width;
                mf.Height     = height;
                mf.Encoder    = MediaFrame.H264Encoder;
                //mf.Timetick = 0;
                mf.Size = size;
                mf.SetData(buf);
                buf = mf.GetBytes();
                fs.Write(BitConverter.GetBytes(buf.Length), 0, 4);
                fs.Write(buf, 0, buf.Length);
                fs.Flush();
                // IntPtr intt = IntPtr.Zero;
                //var sssss = ffimp.VideoDec(buf, ref intt);
                //Console.WriteLine(buf.Take(32).ToArray().To16Strs());
                // var size = Encode1(ii, in_buf, ref nInLen, out_buf);
            }

            fs.Close();
        }
Exemplo n.º 4
0
        private void Init(byte[] buffer)
        {
            if (!_inited)
            {
                AAC_ADTS[] adtss = AAC_ADTS.GetMultiAAC(buffer);

                if (adtss != null)
                {
                    int channels  = adtss[0].MPEG_4_Channel_Configuration;
                    int frequency = adtss[0].Frequency;
                    //_aac = new FaadImp();
                    _aac    = new FFImp(AVCodecCfg.CreateAudio(channels, frequency, (int)AVCode.CODEC_ID_AAC), true, false);
                    _inited = true;
                }
            }
        }
Exemplo n.º 5
0
        protected virtual void Init(MediaFrame frame)
        {
            if (!_inited && frame.IsKeyFrame == 1 && frame.IsAudio == 1)
            {
                if (frame.Encoder == MediaFrame.AAC_Encoder)
                {
                    _aac = new FFImp(AVCodecCfg.CreateAudio(frame.Channel, frame.Frequency, (int)AVCode.CODEC_ID_AAC), true, false);
                }
                if (frame.Encoder == MediaFrame.SPEXEncoder)
                {
                    _speex = _speex ?? new Speex(4, 160);
                }
                if (WaveOut.Devices == null || WaveOut.Devices.Length == 0)
                {
                }
                else
                {
                    _wave = new WaveOut(WaveOut.Devices[0], frame.Frequency, 16, frame.Channel);
                }

                _inited = true;
            }
        }