8

私は流暢な ffmpeg でビデオのサムネイルを作成しようとしています。これが私のコードです

var ffmpeg = require('fluent-ffmpeg');

exports.thumbnail = function(){
    var proc = new ffmpeg({ source: 'Video/express2.mp4',nolog: true })
    .withSize('150x100')
    .takeScreenshots({ count: 1, timemarks: [ '00:00:02.000' ] }, 'Video/', function(err, filenames) {
    console.log(filenames);
    console.log('screenshots were saved');
  });
}

しかし、私はこのエラーが発生し続けます

  "mate data contains no duration, aborting screenshot creation"

理由は何か、

ところで、Windows を使用していて、ffmpeg フォルダーを c/ffmpeg に置き、ffmpeg/bin を環境変数に追加しました。fluent-ffmpeg が ffmpeg のパスを知る必要があるかどうかはわかりませんが、正常に実行できます以下のコードでサムネイルを作成します

   exec("C:/ffmpeg/bin/ffmpeg -i Video/" + Name  + " -ss 00:01:00.00 -r 1 -an -vframes 1 -s 300x200 -f mjpeg Video/" + Name  + ".jpg")

私を助けてください!!!

4

3 に答える 3

0

FFmpeg は動画ファイルの長さを知る必要がありますが、ほとんどの動画ではこの情報がファイル ヘッダーに含まれていますが、一部のファイルには含まれていません。ほとんどの動画は生の H.264 ストリームのような生の動画です。

簡単な解決策は、スナップショットを作成する前にビデオを再多重化することです。このタスクの FFmpeg 0.5 コマンドは非常に簡単です。

ffmpeg -i input.m4v -acodec copy -vcodec copy output.m4v

このコマンドは、FFmpeg に「input.m4v」ファイルを読み取り、出力に同じオーディオ エンコーダーとビデオ エンコーダー (エンコードなし) を使用し、データをファイル output.m4v に出力するように指示します。

FFmpeg は、後でスナップショットを作成するために必要なメタデータ/ヘッダー情報をすべて自動的に追加します。

于 2014-04-06T00:29:01.957 に答える