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

Posted

技术标签:

【中文标题】在 C# 中使用 AForge.Video.FFMPEG 向图像添加文本【英文标题】:Add text to image using AForge.Video.FFMEG in C# 【发布时间】:2017-07-08 06:23:28 【问题描述】:

使用 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】:

私有位图写入字符串(位图 bmp)

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

似乎是错误的。

【讨论】:

以上是关于在 C# 中使用 AForge.Video.FFMPEG 向图像添加文本的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中定义 F# '**' 运算符

如何在 C# 中使用 libcinder?

在 C# 中使用 GitLabCI

如何在网站项目中使用 C# 7? [复制]

如何使用 SMO 在存储过程中调用 c# 函数?

在 C# 中使用 / 或 \\ 作为文件夹路径