2017-07-08 38 views
0

を使用するAForge.Video.FFMPEG画像から画像を作成できます。C#でAForge.Video.FFMEGを使用して画像にテキストを追加

 string[] files; 
     string folderPath = @"FolderPath"; 
     files = Directory.GetFiles(folderPath).OrderBy(c => c).ToArray(); 

     VideoFileWriter writer = new VideoFileWriter(); 
     writer.Open(@"C:folder\new.mp4", imageWidth, imageHeight, 10, VideoCodec.MPEG4); 
     for (int j = 0; j < files.Length; j++) 
     { 
      string fileName = files[j]; 
      BitmapSource imageBitMap = new BitmapImage(new Uri(fileName, UriKind.RelativeOrAbsolute)); 
      imageBitMap.Freeze(); 
      int stride = imageBitMap.PixelWidth * ((imageBitMap.Format.BitsPerPixel + 7)/8); 
      byte[] ImageInBits = new byte[imageBitMap.PixelWidth * imageBitMap.PixelHeight]; 
      imageBitMap.CopyPixels(ImageInBits, stride, 0); 

      Bitmap image = new Bitmap(imageWidth, imageHeight, stride, PixelFormat.Format8bppIndexed, Marshal.UnsafeAddrOfPinnedArrayElement(ImageInBits, 0)); 

      writer.WriteVideoFrame(image); 
      image.Dispose(); 
     } 

私は

私は画像に文字列を書き込むことができますどのように
  Bitmap image = new Bitmap(imageWidth, imageHeight, stride, PixelFormat.Format8bppIndexed, Marshal.UnsafeAddrOfPinnedArrayElement(ImageInBits, 0)); 
      Bitmap outputBitmap=WriteString(image); 
      writer.WriteVideoFrame(outputBitmap); 

よう

private Bitmap WriteString(Bitmap bmp) 
    { 
     RectangleF rectf = new RectangleF(70, 90, 90, 50); 

     Bitmap tempBitmap = new Bitmap(bmp.Width, bmp.Height); 
     Graphics g = Graphics.FromImage(tempBitmap); 

     g.DrawImage(bmp, 0, 0); 
     g.SmoothingMode = SmoothingMode.AntiAlias; 
     g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
     g.PixelOffsetMode = PixelOffsetMode.HighQuality; 
     g.DrawString("yourText", new Font("Tahoma", 8), Brushes.Red, rectf); 
     g.Flush(); 

     return bmp; 
    } 

を用いて、入力画像にテキスト/文字列を追加しようとしていますか?

動画を作成する前に、AForge.Video.FFMEGに字幕を追加する方法はありますか?

答えて

1

プライベートビットマップWriteStringメソッド(ビットマップBMP){

Bitmap tempBitmap = new Bitmap(bmp.Width, bmp.Height); << create new  
    ..draw on copy.. 
    return bmp; <<< return original 
} 

が間違っているように見えます。

関連する問題