FFMPEG'yi ayrı bir işlem (en basit yol) olarak kullanabilir ve sizin için ilk IDR'yi deşifre edebilirsiniz. Eğer video dosyasının adresini geçmesi buna Burada, GetThumbnail() yöntemini içeren bir sınıf FFMPEG var, JPEG görüntünün adresi görüntü olmak istiyorum yapılan ve çözünürlük edilecek: gibi
using System.Diagnostics;
using System.Threading;
public class FFMPEG
{
Process ffmpeg;
public void exec(string input, string output, string parametri)
{
ffmpeg = new Process();
ffmpeg.StartInfo.Arguments = " -i " + input+ (parametri != null? " "+parametri:"")+" "+output;
ffmpeg.StartInfo.FileName = "utils/ffmpeg.exe";
ffmpeg.StartInfo.UseShellExecute = false;
ffmpeg.StartInfo.RedirectStandardOutput = true;
ffmpeg.StartInfo.RedirectStandardError = true;
ffmpeg.StartInfo.CreateNoWindow = true;
ffmpeg.Start();
ffmpeg.WaitForExit();
ffmpeg.Close();
}
public void GetThumbnail(string video, string jpg, string velicina)
{
if (velicina == null) velicina = "640x480";
exec(video, jpg, "-s "+velicina);
}
}
Kullanımı Bu: Bunun için
FFMPEG f = new FFMPEG();
f.GetThumbnail("videos/myvid.wmv", "images/thumb.jpg", "1200x223");
klasör/utils ffmpeg.exe olmalıdır, işe veya ffmpeg.exe bulmak için kodunu değiştirmek için.
.NET sarmalayıcıları gibi .NET'te FFMPEG'yi kullanmanın başka yolları da var, bunlar için google. Temelde aynı şeyi burada yaparlar, sadece daha iyi. Yani FFMPEG işinizi bitirirse, .NET sarıcısını kullanmayı öneririm. Yukarıda verilen cevap kodunda
ffmpeg.StartInfo.Arguments =" -i c:\MyPath\MyVideo -vframes 1 c:\MyOutputPath\MyImage%d.jpg"
yerine
ffmpeg.StartInfo.Arguments = " -i " + input+ (parametri != null? " "+parametri:"")+" "+output;
:
Herhangi bir videonun ilk karesi genellikle siyahtır. Birkaç çerçeveyi incelemek ve en büyük olanı (bayt boyutu) seçmek daha iyi olur. İster inanın ister inanmayın, özellikle de en karartılmış durumdaki 'en ilginç olana' iyi bir yaklaşımdır. –