2017-06-12 4 views
0

J'essaie d'utiliser-ffmpeg couramment dans les fonctions Firebase prendre capture d'écran de vidéo mises en ligne, mais continuer à obtenir cette erreur:Erreur: ffprobe sorti avec le code 1

Erreur:

Error: ffprobe exited with code 1 
ffprobe version N-83692-gb8a7dcbde2-static http://johnvansickle.com/ffmpeg/ Copyright (c) 2007-2017 the FFmpeg developers 
    built with gcc 5.4.1 (Debian 5.4.1-5) 20170205 
    configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-5 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg 
    libavutil  55. 47.100/55. 47.100 
    libavcodec  57. 81.100/57. 81.100 
    libavformat 57. 66.102/57. 66.102 
    libavdevice 57. 3.100/57. 3.100 
    libavfilter  6. 74.100/6. 74.100 
    libswscale  4. 3.101/4. 3.101 
    libswresample 2. 4.100/2. 4.100 
    libpostproc 54. 2.100/54. 2.100 
test/testvideo.mp4: No such file or directory 

    at ChildProcess.<anonymous> (/user_code/node_modules/fluent-ffmpeg/lib/ffprobe.js:233:22) 
    at emitTwo (events.js:106:13) 
    at ChildProcess.emit (events.js:191:7) 
    at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12) 

Voici mon Code:

exports.blurOffensiveImages = functions.storage.object().onChange(event => { 
    const object = event.data; 
    const file = gcs.bucket(object.bucket).file(object.name); 

    // Exit if this is a move or deletion event. 
    if (object.resourceState === 'not_exists') { 
    return console.log('This is a deletion event.'); 
    } 

    var proc = new ffmpeg({ source: object.name }) 
    .withSize('150x100') 
    .takeScreenshots({ 
     count: 2, 
     timemarks: [ '50%', '75%' ], 
     filename: '%b_screenshot_%w_%i' 
    }, 'test_screenshot/', function(err, filenames) { 
     console.log(filenames); 
     console.log('screenshots were saved'); 
    }); 

}); 

quelqu'un peut-il aider à ce que je fais mal?

+0

l'avez-vous résolu? Je reçois le même problème .. – user1590595

Répondre

0

Le gros problème est spécifiquement mentionné dans le stacktrace

« test/testvideo.mp4: Aucun fichier ou répertoire »

Ce que vous essayez de faire est de passer directement chemin de stockage firebase du fichier ffmpeg, alors que ffmpeg est en cours d'exécution sur le système Firebase.

Ainsi, afin de passer chemin valide à la ffmpeg, vous devez d'abord télécharger le fichier depuis le stockage firebase et le stocker dans un répertoire temporaire de firbase (depuis firebase ne supporte que le répertoire tmp) et après cette voie de passage qui du fichier, que vous avez téléchargé depuis le stockage dans le dossier tmp (chemin local), vers le fichier ffmpeg.

Depuis maintenant nous avons passé un chemin local du fichier au ffmpeg qui sera maintenant disponible localement, il sera capable de trouver le répertoire et de faire tout le nécessaire pour vous.

Vous pouvez également voir ce lien pour

des mentions- https://github.com/firebase/functions-samples/blob/master/generate-thumbnail/functions/index.js

Merci