2012-07-03 38 views
3

我想從視頻文件中使用ffmpeg獲取海報幀。使用ffmpeg獲取海報幀(縮略圖)

我一直在關注這個tutorial,並拿出了下面的代碼(這是採取/從我給的鏈接,其適於):

public bool GetVideoThumbnail(string path, string saveThumbnailTo, int seconds) 
     { 
      string parameters = string.Format("-i {0} {1} -vcodec mjpeg -ss {2} -vframes 1 -an -f rawvideo", path, saveThumbnailTo, seconds); 

      if (File.Exists(saveThumbnailTo)) 
      { 
       return true; 
      } 
      else 
      { 
       using (Process process = Process.Start(pathToConvertor, parameters)) 
       { 
        process.WaitForExit(); 
       } 
       return File.Exists(saveThumbnailTo); 
      } 
     } 

目前,此代碼是成功的正確創建文件目的地(saveThumbnailTo)只有圖片是完全黑色的。我已經嘗試更改代碼中的秒數值,以確保我不僅從視頻開頭獲得空白圖片。順便說一下,路徑指的是我的視頻存儲位置。

我目前調用上面的代碼如下所示:

GetVideoThumbnail(videoPath, folderPath + "/poster.jpg", 100) 

..和然後傳遞出來給我的視圖來顯示圖片。我只是想知道「.jpg」是否是我應該給這個文件的擴展名,因爲我不完全確定?

編輯:當我運行在命令行中,我得到了下面的錯誤相同的命令:

不兼容的像素格式「YUV420P」編解碼器「MJPEG」,自動選擇 格式「yuvj420p」

,其顯示爲黃色

,和

[IMAGE2 @ 02S96AE0]無法獲取幀filen ame number 2 from pattern 'poster.jpg'an_interleaved_write_frame():無效參數

以紅色顯示。

任何人都可以幫助我正確地工作,因爲我完全不熟悉ffmpeg命令行,不知道我做錯了什麼。我試圖刪除vcodec參數並獲得相同的錯誤消息。

+0

你有沒有試圖消除-vcodec參數? –

+0

是的,但仍然得到相同的錯誤信息,我會更新我的問題 – DevDave

+0

您可以嘗試添加:-r 1 –

回答

8

嘗試這種情況:

public bool GetVideoThumbnail(string path, string saveThumbnailTo, int seconds) 
{ 
    string parameters = string.Format("-ss {0} -i {1} -f image2 -vframes 1 -y {2}", seconds, path, saveThumbnailTo); 

    var processInfo = new ProcessStartInfo(); 
    processInfo.FileName = pathToConvertor; 
    processInfo.Arguments = parameters; 
    processInfo.CreateNoWindow = true; 
    processInfo.UseShellExecute = false; 

    File.Delete(saveThumbnailTo); 

    using(var process = new Process()) 
    { 
     process.StartInfo = processInfo; 
     process.Start(); 
     process.WaitForExit(); 
    } 

    return File.Exists(saveThumbnailTo); 
} 

簡短說明:

  • ˚FIMAGE2:輸出是圖像
  • vframes 1:取一幀從輸入
  • ÿ:覆蓋輸出文件
  • 「processInfo.CreateNoWindow =真正的」:不顯示ffmpeg的窗口

多試幾次不同的值,爲「秒」參數。 另外,請確保「pathToConvertor」是正確的。

這對我有用,最近在Windows機器上構建ffmpeg.exe。

讓我知道如何去。

+0

謝謝你的答案Fengari。會給這個嘗試.. – DevDave

+0

做了鳳ari風雲,非常感謝! – DevDave

+0

不客氣! – Fengari