0

我需要从视频中取出一张图片用作缩略图
所以我正在尝试这个:

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

这工作得很好但是每隔一段时间我就会遇到一个文件失败并显示以下错误消息

av_interleaved_write_frame(): I/O error occurred  

通常这意味着输入文件被截断和/或损坏。

如果有的话,我有什么选择?
谢谢

4

4 回答 4

1

试试这个命令

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

始终在 -i 之前设置 -ss 以优化性能,同时从长视频中获取拇指。

于 2012-04-13T04:52:59.817 回答
0

我认为如果您将第一帧中的一个提取为缩略图会更容易。

而不是 -ss 我使用 -vf thumbnail=num_frame

ffmpeg -i input.avi -vf thumbnail=25 -vframes 1 -sameq output.jpg
于 2012-04-12T12:08:26.800 回答
0

好的,这似乎对我有用 ffmpeg -itsoffset -4 -i test.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 test.jpg

于 2012-04-13T00:57:05.597 回答
0

是的,可以使用 ffmpeg。

- 在您的服务器中安装 ffmpeg。
-检查下面的示例代码。

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';

}
于 2014-08-26T11:57:53.590 回答