我正在使用ffmpeg
从多个视频文件中获取图片。我已准备好ffmpeg
代码,但当我exec
我的代码时出现以下错误。
ffmpeg version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
built on Apr 2 2013 17:02:36 with gcc 4.6.3
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
//files info...
//files info...
Incompatible pixel format 'yuv420p' for codec 'mjpeg', auto-selecting format 'yuvj420p'
//file info...
[buffer @ 0x1513c40] Buffering several frames is not supported. Please consume all available frames before adding a new one.
Last message repeated 75 times
[image2 @ 0x1513460] Could not open file : /test/project
av_interleaved_write_frame(): Input/output error
我只显示突出显示颜色的错误消息。 我的代码:
$ffmpeg ="/usr/bin/ffmpeg";
$image_source_path = '/test/project/test.mp4';
$ALL_PLACE_WIDTH = 300;
$ALL_PLACE_HEIGHT = 300;
$image_cmd = " -r 1 -ss 00:00:10 -t 00:00:01 -s ".$ALL_PLACE_WIDTH."x".$ALL_PLACE_HEIGHT." -f image2 " ;
$dest_image_path = '/test/project';
$str_command= $ffmpeg ." -i " . $image_source_path . $image_cmd .$dest_image_path;
shell_exec($str_command);
似乎我的Linux希望我切换到avconv
。我不知道如何解决这些错误。有人可以给我一个暗示吗?
答案 0 :(得分:4)
您应始终显示完整输出,而不是剪切部分。在您的示例中,如果您显示执行的实际ffmpeg
命令行而不是围绕它的整个PHP代码,则错误会更明显。
在您的情况下,您的问题是命令如下:
ffmpeg -i /test/project/test.mp4 -r 1 -ss 00:00:10 -t 00:00:01 -f image2 /test/project
但是,/test/project
是一个文件夹,而不是有效的输出图像路径。如果您希望从/text/project/image%04d.jpg
开始创建图像,则可以使用image0001.jpg
。
如果您真正的目标是只导出一个缩略图,请使用vframes
选项:
ffmpeg -i /test/project/test.mp4 -r 1 -ss 00:00:10 -vframes 1 /test/project/image.jpg
在较新的ffmpeg
中,您也可以使用-frames:v
。
您可以在Ubuntu中使用ffmpeg
,但它是旧版本。您可以使用Libav中的avconv
或FFmpeg中的原始ffmpeg
- 我建议使用compiling it from source。
答案 1 :(得分:1)
我遇到了同样的问题,在我的情况下我的文件名错误(例如00:00:00.png)因此它基本上是操作系统限制而不是ffmpeg' s 希望这有帮助