コード例 #1
0
        public async Task AudioConvert(AudioConversionItem fileToConvert, CancellationToken cancelToken)
        {
            var info = await GetInfo(fileToConvert.InputFile.FullName);


            IAudioStream audioStream = info.AudioStreams.FirstOrDefault()
                                       ?.SetCodec(AudioCodec.libvorbis)
                                       ?.SetSampleRate(fileToConvert.SampleRate);

            if (audioStream.Bitrate > fileToConvert.Bitrate)
            {
                audioStream = audioStream.SetBitrate(fileToConvert.Bitrate);
            }

            var conversion = FFmpeg.Conversions.New()
                             .AddStream(audioStream)
                             .SetOutput(fileToConvert.OutputPath);

            if (File.Exists(fileToConvert.OutputPath))
            {
                File.Delete(fileToConvert.OutputPath);
            }

            conversion.OnProgress += (sender, args) =>
            {
                OnProgress?.Invoke(this, fileToConvert, args);
            };

            var result = await conversion.Start(cancelToken);

            OnConversionDone?.Invoke(this, fileToConvert, result);
        }
コード例 #2
0
        public async Task VideoConvert(ConcurrentQueue <AudioConversionItem> filesToConvert, CancellationToken cancelToken)
        {
            while (filesToConvert.TryDequeue(out AudioConversionItem fileToConvert))
            {
                var info = await GetInfo(fileToConvert.InputFile.FullName);


                IStream audioStream = info.AudioStreams.FirstOrDefault()
                                      ?.SetCodec(AudioCodec.vorbis);


                var conversion = await FFmpeg.Conversions.FromSnippet
                                 .ToOgv(fileToConvert.InputFile.FullName, fileToConvert.OutputPath);

                //ffmpeg -i input.mp4 -c:v libtheora -q:v 7 -c:a libvorbis -q:a 4 intro.ogv


                conversion.OnProgress += (sender, args) => OnProgress?.Invoke(this, fileToConvert, args);

                var result = await conversion.Start(cancelToken);

                OnConversionDone?.Invoke(this, fileToConvert, result);
            }
        }