2012-04-12 13 views
0
私がサムネイルとして使用する映像のうちの一つの画像を取得する必要があり

を使用して、ビデオファイルから画像を抽出する方法を
だから私はこれをしようとしています:はffmpegの

ffmpeg -ss 00:05:34.05 -i input.avi -vframes 1 -sameq output.jpg 

しかしこれは一度のだけで正常に動作しますしばらく私は通常、それは、入力ファイルが切り捨ておよび/または破損していることを意味し、これは次のエラーメッセージ

av_interleaved_write_frame(): I/O error occurred 

で失敗したファイルに遭遇します。

私の選択肢は何ですか?
ありがとう

答えて

0

は、長尺動画から親指をつかんでいる間、常にパフォーマンスを最適化するために、-i前-ss設定

ffmpeg -ss 5 -i sample.mp4 -vframes 1 -s 320x240 -f image2 -y sample.jpg; 

このコマンドを試してみてください。

0

最初のフレームの1つをサムネイルとして抽出すると簡単だと思います。この[OK]を私のために働くように見えた

ffmpeg -i input.avi -vf thumbnail=25 -vframes 1 -sameq output.jpg 
+0

私はffmpegの取得維持:あなたアクティブにlibavfilter http://ffmpeg.org/libavfilter.html#thumbnail場合videofilterが認識され、 – Rahul

+0

-vf '-vf' 認識できないオプションを –

0

私は-vfサムネイルを使用する代わりに-ssの

= num_frame ffmpegの-itsoffset -4 -i test.avi -vcodec MJPEG -vframes 1 -an -f rawvideo -s 320×240 test.jpg

0

はいffmpegを使用することは可能です。

-ffmpegをサーバーにインストールします。
-check example code。

extension_loaded('ffmpeg') or die('Error in loading ffmpeg'); 

// $vid = realpath('./video/Wildlife.wmv'); 

$video_url = 'http://download.wavetlan.com/SVV/Media/HTTP/H264/Talkinghead_Media/H264_test1_Talkinghead_mp4_480x360.mp4'; 

$image_filename = 'images/' . time() . ".jpg"; 

$movie = new ffmpeg_movie($video_url, false); 

$frameCount = $movie->getFrameCount(); 

$capPos = ceil($frameCount/4); 

$frameObject = $movie->getFrame($capPos); 

if ($frameObject) { 

    $frameObject->resize(500, 250, 0, 0, 0, 0); 

    imagejpeg($frameObject->toGDImage()); 

} else { 

    echo 'error'; 

}