2016-12-02 3 views
1

sagen Sie mir bitte, wie ich Audio-Datei mit node.js Slice Slice kann? Jetzt lese ich die Dokumentation für ffmpeg Modul, aber verstehe nicht, wie man Audiodatei mit diesem Modul schneidet. ich diesen Code gefunden, aber es gibt einen Fehler Fehler: NaNWie kann ich Audio-Datei mit node.js schneiden

ffmpeg('music/ant.mp3') 
    .setStartTime('00:00:03') 
    .setDuration('10') 
    .output('music/ant.mp3') 
    .on('end', function(err) { 
     if(!err) 
     { 
      console.log('conversion Done'); 
     } 
    }) 
    .on('error', function(err){ 
     console.log('error: ', +err); 
    }).run(); 
+0

genau, wie Sie eine Audio-Datei schneiden wollte? – nmnsud

+0

@nrnsud Ich habe die Frage aktualisiert. Ich habe Startzeit und und Endzeit, ich muss in diesem Zeitraum Audio schneiden. –

Antwort

0

Nicht viele Infos hier, aber von den Blicken von ihm sind Sie Strings in die .setStartTime und .setDuration Methoden übergeben. NaN bedeutet keine Nummer, wenn Sie nicht wissen

'00: 00: 03 'ist ein String, wie' 10 ', weil Sie Zitate um sie legen. Selbst wenn Sie die Anführungszeichen von der '00: 00: 03 'entfernen, wird es nicht in der Lage sein, das als eine Zahl zu analysieren. Sie müssen den Wert wahrscheinlich als eine Art Ganzzahl übergeben, aber es darf nicht in Sekunden, sondern in Millisekunden oder ähnlich sein. Wenn es Sekunden wären, würden Sie '3' (ohne Anführungszeichen) oder Millisekunden setzen, Sie würden '3000' ohne Anführungszeichen setzen. Wenn die Zeiteinheit, die übergeben werden soll, nicht Sekunden sondern Millisekunden oder dergleichen ist, müssen Sie wahrscheinlich den Wert '10' (wieder ohne Anführungszeichen) auf '10000' (keine Anführungszeichen) für Millisekunden usw. ändern.

0

Sie könnten wahrscheinlich ffmpeg verwenden. Es basiert auf der Befehlszeile, was großartig ist, da es zugänglich ist, aber Teilprozesse können manchmal absterben. Hier ist eine Knoten-Schnittstelle, die ffmpeg Verwendung von Befehlszeile abstrahiert ruft: https://npmjs.org/package/ffmpeg

Ihre letzte Befehle in der Befehlszeile wahrscheinlich würde wie folgt aussehen:

ffmpeg -i long.mp3 -acodec copy -ss 00:00:00 -t 00:30:00 half1.mp3 
    ffmpeg -i long.mp3 -acodec copy -ss 00:30:00 -t 00:60:00 half2.mp3 

Dieser Befehl lautet:

Um mögliche Timeouts/Hung-Prozesse zu behandeln, sollten Sie 'versuchen' und Timeouts liefern. Nicht sicher, wie gut die Fehlerrückrufe funktionieren. Das ist ein Fehler, der bei einem Prozess, der sich anhängt, nicht richtig funktioniert.

0

Ich habe es child_process

https://nodejs.org/api/child_process.html

const spawn = require('child_process').spawnSync; 

var ffmpeg = spawn('ffmpeg', [ 
    '-i', 
    filename, 
    '-acodec', 
    'copy', 
    '-ss', 
    ss, 
    '-t', 
    t, 
    output.mp3 
], { shell: true }); 

Ein paar Dinge mit zu beachten:

  • Stellen Sie sicher, Sie ffmpeg dann laichen mit dem gewünschten Befehl installiert haben. Setzen Sie die Argumente in ein Array. Spawn macht seltsame Dinge mit Anführungszeichen, aber {shell:true} sollte darauf achten.

  • Erstellen Sie das gewünschte Ausgabeverzeichnis vor Hand oder mit einem anderen Spawn, da ffmpeg es nicht für Sie erstellt, wenn es nicht bereits existiert.

  • Überprüfen Sie den Prozess mit diesem:

    process.on('exit', (code, signal) => { 
        console.log(`ffmpeg exited with code ${code} and signal ${signal}`); 
    }); 
    
Verwandte Themen