2

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。これらのエラーを修正する方法がわかりません。誰かが私にそれについてのヒントを与えることができますか?

4

2 に答える 2

6

常に完全な出力を表示し、一部を切り取らないようにする必要があります。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

本当の目的が 1 つのサムネイルだけをエクスポートすることである場合は、次の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から、またはFFmpegavconvからオリジナルを使用できます— source からコンパイルすることをお勧めします。ffmpeg

于 2013-04-20T11:49:40.670 に答える