Exemplo n.º 1
0
 /// <summary>
 /// 格式转换
 /// </summary>
 /// <param name="_filePath"></param>
 private void ConvertExtension(string _filePath)
 {
     if (File.Exists(_filePath))
     {
         _taskQueue.ConvertMediaTaskItem(async token =>
         {
             try
             {
                 var _fileinfo         = new FileInfo(_filePath);
                 string outputFileName = Path.ChangeExtension(_fileinfo.FullName, _cfg.GetValue <string>("converter:extension"));
                 var mediaInfo         = await FFmpeg.GetMediaInfo(_fileinfo.FullName);
                 //var videoStream = mediaInfo.VideoStreams.First();
                 //var audioStream = mediaInfo.AudioStreams.First();
                 //videoStream.Rotate(RotateDegrees.CounterClockwise).SetSize(VideoSize.Hd1080).SetCodec(VideoCodec.h264);
                 var conversion = await FFmpeg.Conversions.FromSnippet.Convert(_fileinfo.FullName, outputFileName);
                 conversion.SetOutput(outputFileName).SetOverwriteOutput(true).UseMultiThread(true).SetPreset(ConversionPreset.UltraFast);
                 //conversion.OnProgress += async (sender, args) =>
                 //{
                 //    _logger.LogInformation($"[{args.Duration}/{args.TotalLength}][{args.Percent}%] {_fileinfo.Name}");
                 //};
                 await conversion.Start();
                 _logger.LogInformation($"【{_fileinfo.Name}】转换完成");
                 if (_cfg.GetValue <bool>("converter:isDeleteOriFile"))
                 {
                     File.Delete(_filePath);
                 }
             }
             catch (Exception ex)
             {
                 _logger.LogError(ex.Message);
             }
         });
     }
 }