2017-06-23 1 views
0

npmプロジェクトで '-acodec libopus'を使用しようとすると、次のようなコマンドラインで使用します。NPMでコーデックの種類を正しく使うには

ffmpeg -acodec libopus -i 1.webm 1.wav 

これは完全に機能します。しかし私はNPMプロジェクトでそれを可能にしたいと思っています。

どのようにパラメータを設定できますか? これは私が持っているものですが、動作しません。出力ファイルは、オーディオファイルのいくつかのフレームが欠けているように壊れています。それは音があり、そうでないようです。およびその逆。

var proc = new ffmpeg({ 
     source: file, 
     nolog: false  
    }); 


format = "opus"; // or could be wav as well! 


    proc.addOptions([ 
     '-f ' + format,   
     '-acodec libopus', 
     '-vn' 
    ]); 

ビデオファイルからオーディオファイルをシームレスに取得することを目的としています。

コーデックのlibopusがないと、コマンドプロンプトで次のようなエラーが表示されるため、NPMプロジェクトでも同じ問題を処理する必要があります。

[opus @ 00000000006d4520] LBRR frames is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented. 


[opus @ 00000000006d4520] Error decoding a SILK frame. 

[opus @ 00000000006d4520] Error decoding an Opus frame. 

私のライブラリは最新ですが、私はちょうどコーデックのlibopusを適切に使用する必要があります。 提案がありますか?

\node-js>ffmpeg -version 
ffmpeg version N-86175-g64ea4d1 Copyright (c) 2000-2017 the FFmpeg 
developers 
built with gcc 6.3.0 (GCC) 

Output in command line; 
xtranscribe transcodeWatson: file : ./data/that/2.webm 
progress 62.625273103421605% 
progress 100.01224534515762% 
SAVED - transcodeWatson : .mp3 
out of transcode! 
fileSizeInBytes : 16284033 
+1

"動作していません" ...どうなりますか?生成されるコマンドラインとは何ですか?あなたのコードが何らかのフォーマットと '-vn'を指定するのはなぜですか?あなたが最初に書いた行の例はそれを持っていません。注:ffmpegでは、オプションが配置されている場所、つまり入力オプションであるか出力オプションであるかが重要です。 ffmpegのあなたのバージョンは何ですか? (コマンドラインで実行すると、 'ffmpeg'コマンドの出力を表示します。) – slhck

+0

@slhck、それに応じて質問が更新されました。 -vnは「no video」に使用されます。 – shamaleyte

+1

[あなたの他の質問](https://stackoverflow.com/a/44890636/691711)で提案したのと同様に、fluent-ffmpegにlibopusでオーディオをデコードするように指示する方法を理解する必要があります。私はAPIの流暢な定義でそれをどうやって行うのか分かりません。正規のffmpegは、あなたが入力を定義する前に(またはそれが少なくとも私がそれを理解した方法である) '-acodec libopus' **と言うので、引数/オプションの順序で理解します。 – zero298

答えて

2

the READMEによると、あなたは、プロセスへの入力オプションを追加することができます:あなたはffmpegの中にオプションを置く場所

proc.addInputOption('-acodec libopus'); 

それは問題になります。 -iより前に置くと、その特定の入力に適用されます。出力ファイル名の前に置くと、その出力に適用されます。

+0

恐ろしいです!あなたがそれらのコマンドで何をしているのかを知ることは非常に重要です。各パラメータには場所があります。そして、入力ファイルのために、それはあなたがコーデックを設定する方法でした!魅力のように動作します。 出力オーディオファイルのサイズをシームレスに縮小する方法を理解する必要があります。 :)) 私はそれのために別のトピックを作成しました! https://stackoverflow.com/questions/44891840/fluent-ffmpeg-how-to-reduce-the-size-of-the-output-file-without-losing-any-sound – shamaleyte

関連する問題