4

私はこれを読みましたが、あまり役に立ちませんでした。

videosと呼ばれるフォルダーと、サムネイルと呼ばれる別のフォルダーがあります。ビデオフォルダーに多くのmp4ビデオがあり、ffmpegとphpを使用してサムネイルフォルダーの4秒目にサムネイルをキャッチしたいと考えています。

  1. Windows Whit php 5.3.8およびApache 2.2.21でWampサーバー2.2を使用しています
  2. ffmpeg ダウンロード ページのFFmpeg Windows ビルドセクションからffmpeg をダウンロードし、このリンク から静的 32 ビルドをダウンロードしました。
  3. 7z ファイルを Web サイトのルートに抽出しました。これ
    が私の php コードです。

    $ffmpeg = "includes/ffmpeg/bin/ffmpeg";
    foreach(glob('files/videos/*.mp4') as $pathname){
      $filename = substr($pathname,13,strripos($pathname,'.mp4')-13);
      $thumbnail = 'files/thumbnails/'.$filename.'.jpg';
      exec("ffmpeg -i $pathname -an -y -f mjpeg -ss 00:00:04 -vframes 1 $thumbnail");
    }
    

しかし、何も起こらず、サムネイル フォルダは常に空です。
- サーバーに ffmpeg がインストールされているかどうかを確認するにはどうすればよいですか?
- スクリプトを機能させるにはどうすればよいですか?
助けてください

4

3 に答える 3

5

これを試して:

$ffmpeg = "c:/wamp/www/includes/ffmpeg/bin/ffmpeg";
$videos = "c:/wamp/www/files/videos/*.mp4";
$ouput_path = "c:/wamp/www/files/thumbnails/";
foreach(glob($videos) as $v_file){
    $fname = basename($v_file, ".mp4");
    $thmb = $ouput_path.$fname.'_tn.jpg';
    $cmd = "$ffmpeg -i $v_file -an -y -f mjpeg -ss 00:00:04 -vframes 1 $thmb";
    $stat = system ($cmd);
}
于 2014-06-04T11:05:23.063 に答える
2

PATH ENV 変数に依存するのではなく、コマンドで絶対パスを使用してみてください。両方ともexec()機能しsystem()ます。パス定義を解決します。

/* Using Absolute paths */
$ffmpeg = "c:/wamp/www/includes/ffmpeg/bin/ffmpeg";
$videos = "c:/wamp/www/files/videos/*.mp4";
$ouput_path = "c:/wamp/www/files/thumbnails/";

foreach(glob($videos) as $video_file){

    $filename = basename($video_file, ".mp4");
    $thumbnail = $ouput_path.$filename.'_tn.jpg';
    $command = "$ffmpeg -i $video_file -an -y -f mjpeg -ss 00:00:04 -vframes 1 $thumbnail";

    $status = system ($command);
/*or
    $status = exec($command);

    if ($status === false) {
        var_dump("ERROR: Conversion Failed!!!!");
    } else
        var_dump($status);
*/
}
于 2013-02-02T14:05:00.473 に答える