0
我有模板圖像(template.jpg),我在其上繪製一些文本(13.07.2017。),並將其保存到另一個位置(temp/intro.jpg )。編輯並保存在C#中的圖像無法被ffmpeg讀取
比我想用ffmpeg將那個和其他一些圖像轉換成視頻。
如果我運行命令
ffmpeg.exe -f concat -safe 0 -i input.txt -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4
這些圖像得到濃縮成一個視頻文件。問題在於,通過C#編輯的此圖像在最終視頻中是黑色的。
例如,如果我打開C#在Adobe Fireworks中創建的圖像並保存(CTRL + S)而不更改任何內容,並重新運行ffmpeg命令,那麼一切正常。
這是我使用將文本添加到模板圖像
//INTRO IMAGE CREATION
Bitmap image = new Bitmap(1280, 720);
image.SetResolution(image.HorizontalResolution, image.VerticalResolution);
Graphics g = Graphics.FromImage(image);
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
StringFormat format = new StringFormat()
{
Alignment = StringAlignment.Near,
LineAlignment = StringAlignment.Near
};
//template
Bitmap back = new Bitmap(Application.StartupPath + @"\Templates\template.jpg");
g.DrawImage(back, 0, 0, image.Width, image.Height);
//date
string Date = dateIntro.Value.ToString("dd.MM.yyyy.");
var brush = new SolidBrush(Color.FromArgb(255, 206, 33, 39));
Font font = new Font("Ubuntu", 97, FontStyle.Bold, GraphicsUnit.Pixel);
float x = 617;
float y = 530;
g.DrawString(Date, font, brush, x, y, format);
g.Flush();
image.Save(Application.StartupPath + @"\temp\intro.jpg", ImageFormat.Jpeg);
image.Dispose();
圖像創建這樣可以打開和除了轉換爲具有FFMPEG視頻中的任何程序代碼觀察。
在C#中添加文本和保存圖像時是否有任何缺失?
工作正常,我。難道ffmpeg被迫輸出一個你的播放器不喜歡的色彩空間?你可以在製作MP4時用'-vf format = yuv420p'強制它嗎? – Dan
我不明白,但它實際上是通過用'-vf format = yuv420p'替換'-vf「fps = 25,format = yuv420p」''''謝謝。 – mmijic