在 C# 中使用 AForge.Video.FFMEG 向图像添加文本

Add text to image using AForge.Video.FFMEG in C#

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

我正在尝试使用

添加 text/String 到输入图像
    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 吗?

私有位图 WriteString(位图 bmp){

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

好像打错了。