如何从mp4文件生成图像?

时间:2013-05-22 23:55:07

标签: php image ffmpeg

我正在尝试使用imagesmp4视频文件生成ffmpeg

我只想要文件中每个视频的前3秒。

我有以下命令..

 $videoFile = $mp4File; //I have many mp4 files

 $ffmpeg ="/usr/ffmpeg";

 $image_path = $videoFile;

 $ALL_PLACE_WIDTH = 300;
 $ALL_PLACE_HEIGHT = 220;

 $image_cmd = " -r 1 -r 0.03 -s ".$ALL_PLACE_WIDTH."x".$ALL_PLACE_HEIGHT." -f image2 ";
 $dest_path = 'project/image-%01d.png';

 $str_command= $ffmpeg  ." -i " . $image_path . $image_cmd .$dest_path;
 shell_exec($str_command);

我正在尝试为每个mp4文件生成第3张图像,但我的脚本会生成大量图像,并在整个mp4文件中创建图像。

我可以限制脚本只获取前3秒图像吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你需要三秒内的一张图片。

变化:

$image_cmd = " -r 1 -r 0.03 -s ".$ALL_PLACE_WIDTH."x".$ALL_PLACE_HEIGHT." -f image2 ";

为:

$image_cmd = " -vf scale=".$ALL_PLACE_WIDTH.":-1 -frames:v 1 -ss 3 ";

有什么不同?

  • -r-f image2不是必需的。

  • scale filter可以根据您的给定值自动调整-1的高度或宽度,以保留方面。这样可以避免因绝对调整大小而导致拉伸或压扁。这意味着不需要$ALL_PLACE_HEIGHT = 220;

  • 使用-frames:v 1输出一帧。

  • -ss是偏移时间,或您想要图像的时间。