代码之家  ›  专栏  ›  技术社区  ›  Ratzz

使用arge.Video将文本添加到图像中。C中的FFMEG#

  •  1
  • Ratzz  · 技术社区  · 8 年前

    使用 AForge.Video.FFMPEG 我能够从图像中创建视频。

            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();
            }
    

    我正在尝试使用添加文本/字符串到输入图像

        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;
        }
    

    喜欢

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

    如何将字符串写入图像?

    有什么方法可以添加字幕吗 AForge.Video.FFMEG

    1 回复  |  直到 8 年前
        1
  •  2
  •   MrJ    8 年前

    专用位图写入字符串(位图bmp){

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

    似乎是错的。