0

を使用してビデオ ファイルimagesからを生成しようとしています。mp4ffmpeg

ファイル内のすべてのビデオの最初の 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);

すべてのファイルの最初の 3 秒の画像を生成しようとしていmp4ますが、私のスクリプトは多くの画像を生成し、ファイル全体に画像を作成しmp4ます。

最初の 3 秒間の画像のみを取得するようにスクリプトを制限できますか? どうもありがとう!

4

1 に答える 1

1

私があなたのことを正しく理解していれば、3 秒以内に 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はありません。

  • スケール フィルター-1、指定された値に関連して高さまたは幅を自動的に調整できるため、縦横比が保持されます。これにより、絶対的なサイズ変更に起因する可能性のある伸縮や収縮が回避されます。これは、$ALL_PLACE_HEIGHT = 220;必要がないことを意味します。

  • -frames:v 11 フレームの出力に使用します。

  • -ssオフセット時間、または画像を取得する時間です。

于 2013-05-23T00:15:34.203 に答える