2013-06-18 122 views
1

我有一個簡單的網站上人們上傳視頻,所以我想從上傳的視頻生成一個簡單的縮略圖。我已經嘗試了各種技巧和方法來從一些網站做到這一點,但我沒有使命令順利運行。ffmpeg從視頻錯誤獲取圖像或縮略圖

$video = $_FILES['vpopupdropin']["tmp_name"]; 
    $ffmpeg = "C:\\Ffmpeg\\ffmpeg-20130605-git-3289670-win64-static\\bin"; 
    $image = "manu.jpg"; 
    $second = 12; 
    $size = "150x90"; 
$command = "$ffmpeg -i $video -an -ss $second -s $size -vcodec mjpeg  $image"; 
echo $command; 
    shell_exec($command); 

    if(shell_exec($command)){ 
     echo 'okay'; 
     echo '<img src="'.$image.'"/ >'; 
     } 

    else{ 
     echo ' Problem'; 
     } 

我從PHP呼應的命令,這是我得到: C:\ ffmpeg的\ ffmpeg的-20130605-的git-3289670-Win64的靜態\ BIN -i C:\ XAMPP \ tmp目錄\ php27F1 .TMP -an -ss 12 -s 150x90 -vcodec MJPEG manu.jpg問題

,所以我把上面的命令,並在cmd中輸入的,並得到這個錯誤

[圖像2 @ 00000000000000003d87580]無法打開文件: manu.jpg av_interleaved_write_frame():輸入/輸出錯誤。上傳的文件可以很好地傳輸到iam保存並在網站上播放,這意味着該文件沒有損壞。但縮略圖命令似乎失敗,我甚至檢查了這個網站上的其他問題,但我似乎無法得到正確的解決方案。命令中的路徑是正確的,我已驗證至少

+0

@ moskito-X的答案真的幫了......我一直在使用您的解決方案了一個多月現在..謝謝你這麼多... – Jay

+0

歡迎您;-) –

回答

2

您沒有給ffmpeg一個名稱:-)所以你試圖執行一個\\bin文件夾!

$ffmpeg = "C:\\Ffmpeg\\ffmpeg-20130605-git-3289670-win64-static\\bin"; 

你忘記ffmpeg.exe

$ffmpeg = "C:\\Ffmpeg\\ffmpeg-20130605-git-3289670-win64-static\\bin\\ffmpeg"; 

我做了.AVI用下面的命令

ffmpeg -i Echo2012.avi -r 1 -s 1024x576 -f image2 -vframes 1 foo-001.jpg 

不執行你的命令兩次!

$command = "$ffmpeg -i $video -an -ss $second -s $size -vcodec mjpeg  $image"; 
echo $command; 
shell_exec($command); 

    if(shell_exec($command)){ 

編輯:

您的命令字符串:

ffmpeg -i upload.tmp -an -ss 12 -s 150x90 -vcodec mjpeg  manu.jpg 
  • -vcodec編解碼器(輸出):設置視頻輸出編解碼器。這是一個輸出視頻的開關。你想要輸出一個圖像。
  • -an:您可以禁用音頻流。你不需要音頻的圖像。
  • -ss:位置(輸入/輸出)當用作輸入選項(之前-i)時,請在此輸入文件中尋找位置。

我的命令串:

ffmpeg -i Echo2012.avi -r 1 -s 1024x576 -f image2 -vframes 1 foo-001.jpg 
  • -r:FPS(輸入/輸出,每個流)。設置幀率(Hz值,分數或縮寫)。
    作爲輸入選項,忽略存儲在文件中的任何時間戳,而是生成時間戳,假設幀速率爲fps。
  • -f image2:強制輸出文件格式image2。格式通常是從輸出文件的文件擴展名中猜測出來的。
  • -vframes數字(輸出):設置要記錄的視頻幀數。
+0

誠實的錯誤在那裏,離開了ffmpeg,仍然當我嘗試正確的命令時,我得到了同樣的錯誤! – Jay

+0

@eMatsiyana:只要你無法用普通的'cmd'來創建一個.jpg文件就沒有成功,用php腳本試試這個沒用。使用我的命令並用你的文件名替換。 –

+0

..謝謝!!我試過你的命令,它工作,我不知道爲什麼我沒有工作,但如果可以的話,請你指出錯誤... – Jay