Exemplo n.º 1
0
        private void Test01_a(string rFile, string wFile)
        {
            Console.WriteLine("rFile: " + rFile);
            Console.WriteLine("wFile: " + wFile);

            FFmpegConv.MakeWavFile(rFile, wFile);

            Console.WriteLine("done");
        }
Exemplo n.º 2
0
        private void MakeMovie_Main(string mediaFile, string destMP4File, bool masterFlag, IVideoMaker videoMaker)
        {
            WaveData wave;

            {
                string wavFile       = this.WD.GetPath("audio.wav");
                string masterWavFile = this.WD.GetPath("audio2.wav");

                FFmpegConv.MakeWavFile(mediaFile, wavFile);

                if (masterFlag && MasterUtils.Mastering(wavFile, masterWavFile))
                {
                    wave = new WaveData(masterWavFile);
                    this.FFmpeg.Audio.PutAudioFile(masterWavFile);
                }
                else
                {
                    wave = new WaveData(wavFile);
                    this.FFmpeg.Audio.PutAudioFile(mediaFile);
                }
            }

            int frame = 0;

            using (WorkingDir mvWd = new WorkingDir())
            {
                videoMaker.MakeVideo(wave, mvWd, image =>
                {
                    image.Save(this.FFmpeg.GetImageFile(frame), ImageFormat.Jpeg, AudioPicMP4Props.JPEG_QUALITY);
                    frame++;

                    GC.Collect();
                });
            }

            this.FFmpeg.MakeMovie();

            ProcessTools.Batch(new string[]
            {
                string.Format(@"ECHO Y|CACLS {0} /P Users:F Guest:F", this.FFmpeg.GetMovieFile()),
            });

            File.Move(this.FFmpeg.GetMovieFile(), destMP4File);
        }
Exemplo n.º 3
0
        private void MakeMovie_Main()
        {
            this.DiscJacket         = new Canvas2(this.DiscJacketFile);
            this.BluredDiscJacket   = PictureUtils.Blur(this.DiscJacket, 5);           // 要調整
            this.MarginedDiscJacket = PictureUtils.PutMargin(this.DiscJacket);

            {
                string wavFile       = this.WD.GetPath("audio.wav");
                string masterWavFile = this.WD.GetPath("audio2.wav");

                FFmpegConv.MakeWavFile(this.SourceMediaFile, wavFile);

                if (this.MasterFlag && MasterUtils.Mastering(wavFile, masterWavFile))
                {
                    this.Wave = new WaveData(masterWavFile);
                    this.FFmpeg.Audio.PutAudioFile(masterWavFile);
                }
                else
                {
                    this.Wave = new WaveData(wavFile);
                    this.FFmpeg.Audio.PutAudioFile(this.SourceMediaFile);
                }
            }

            ShadowSpectraData ss = new ShadowSpectraData();
            FadeInOutData     f1 = new FadeInOutData()
            {
                MaxValue = 20
            };
            FadeInOutData f2 = new FadeInOutData();

            f1.Rate = 1.0;

            int frameNum = DoubleTools.ToInt((this.Wave.Length * 1.0 / this.Wave.WavHz) * AudioPicMP4Props.FPS);

            for (int frame = 0; frame < frameNum; frame++)
            {
                if (frame == 2 * AudioPicMP4Props.FPS)
                {
                    f1.TargetRate = 0.0;
                }

                if (frame == frameNum - 10 - f2.MaxValue)
                {
                    f2.TargetRate = 1.0;
                }

                f1.Approach();
                f2.Approach();

                double rate    = frame * 1.0 / (frameNum - 1);
                double invRate = 1.0 - rate;

                double r1 = 1.0 + 0.2 * rate;
                double r2 = 1.0 + 0.1 * invRate;

                D4Rect wallRect;
                D4Rect frntRect;

                {
                    D2Size size = Utils.TangentSize(
                        new D2Size(AudioPicMP4Props.VIDEO_W, AudioPicMP4Props.VIDEO_H),
                        new D2Size(this.DiscJacket.GetWidth(), this.DiscJacket.GetHeight()),
                        false
                        );

                    size.W *= r1;
                    size.H *= r1;

                    wallRect = Utils.Centering(new D2Size(AudioPicMP4Props.VIDEO_W, AudioPicMP4Props.VIDEO_H), size);
                }

                {
                    D2Size size = Utils.TangentSize(
                        new D2Size(AudioPicMP4Props.VIDEO_W, AudioPicMP4Props.VIDEO_H),
                        new D2Size(this.DiscJacket.GetWidth(), this.DiscJacket.GetHeight()),
                        true
                        );

                    size.W *= r2;
                    size.H *= r2;

                    // マージン分
                    size.W *= this.MarginedDiscJacket.GetWidth() * 1.0 / this.DiscJacket.GetWidth();
                    size.H *= this.MarginedDiscJacket.GetHeight() * 1.0 / this.DiscJacket.GetHeight();

                    frntRect = Utils.Centering(new D2Size(AudioPicMP4Props.VIDEO_W, AudioPicMP4Props.VIDEO_H), size);
                }

                Canvas2 frameImg = new Canvas2(AudioPicMP4Props.VIDEO_W, AudioPicMP4Props.VIDEO_H);

                PictureUtils.Paste(frameImg, this.BluredDiscJacket, wallRect);
                PictureUtils.Filter(frameImg, Color.Black, 0.5);                 // 要調整
                PictureUtils.Paste(frameImg, this.MarginedDiscJacket, frntRect);
                PictureUtils.Filter(frameImg, Color.Black, 0.1);                 // 要調整

                PictureUtils.Filter(frameImg, Color.Black, f1.Rate);             // 背景カーテン

                this.Wave.SetWavPart(DoubleTools.ToInt((frame * 1.0 / AudioPicMP4Props.FPS + AudioPicMP4Props.AUDIO_DELAY_SEC) * this.Wave.WavHz));
                SpectrumGraph0001 sg = new SpectrumGraph0001(hz => this.Wave.GetSpectrum(hz));
                ss.Projection(sg.Spectra);
                this.DrawSpectra(frameImg, sg, ss);

                PictureUtils.Filter(frameImg, Color.Black, f2.Rate);                 // 前景カーテン

                frameImg.Save(this.FFmpeg.GetImageFile(frame), ImageFormat.Jpeg, AudioPicMP4Props.JPEG_QUALITY);

                GC.Collect();
            }

            this.FFmpeg.MakeMovie();

            File.Copy(this.FFmpeg.GetMovieFile(), this.DestMP4File);
        }