ホームページ >ウェブフロントエンド >jsチュートリアル >NodeJS を使用してビデオをトランスコードする
今回は、NodeJS を使用して 動画 をトランスコードするときの 注意事項 と、NodeJS を使用して動画をトランスコードする場合の実際的なケースを紹介します。
ビデオのトランスコーディングは、最初にデコードしてからエンコードするプロセスであり、それによって元のビデオを必要なビデオに変換します。この変換には、さまざまな形式 (mp4/avi/flv など)、解像度、ビット レート、フレーム レートなどが含まれる場合があります。
従来のビデオ トランスコーディングでは、非常に一般的に使用されるツールは FFmpeg です。 FFmpeg は、デジタル オーディオとビデオの記録、変換、ストリームへの変換に使用できるオープン ソース コンピューター プログラムのセットです。
nodejs には、node-fluent-ffmpeg と呼ばれる FFmpeg もあります。 node-fluent-ffmpeg は、ノード上で利用可能な ffmpeg であり、使用する前に ffmpeg をインストールする必要があります。
ffmpeg
FFmpeg は、デジタル オーディオとビデオの記録、変換、ストリームへの変換に使用できるオープン ソース コンピューター プログラムのセットです。 LGPL または GPL ライセンスを使用します。オーディオとビデオの記録、変換、ストリーミングのための完全なソリューションを提供します。非常に高度なオーディオ/ビデオ コーデック ライブラリ libavcodec が含まれており、高い移植性とコーデックの品質を確保するために、libavcodec の多くのコードは最初から開発されています
。 NodeJSでビデオトランスコーディングを実装する方法を紹介します。
1. FFmpeg をインストールします (MAC 上)
MAC では、brew コマンド (brew install ffmpeg) を直接使用してインストールできます。
インストールが成功したら、コマンド ラインを使用して ffmpeg コマンドを使用してビデオをトランスコードできます。たとえば、input.avi を Output.ts にトランスコードし、ビデオ ビット レートを 640kbps に設定するには、実行する必要があるコマンドは次のとおりです:
ffmpeg -i input.avi -b:v 640k output.ts
2. Node-fluent-ffmpeg モジュール基本的な使い方メソッド
node-fluent-ffmpeg は基本的に、nodejs を介してターミナルで FFmpeg コマンドを実行します。 node-fluent-ffmpeg のインストールと基本的な導入は他の npm モジュールと同じです。 npm 経由でインストールした後 (npm fluent-ffmpeg をインストールします)、require を使用して js ファイル内で参照します。基本的な使い方は以下の通りです:
var ffmpeg = require(‘fluent-ffmpeg'); var command = new ffmpeg(这里可以传入视频文件路径,或者流);
このようにして、コマンド ラインがインスタンス化され、トランスコードされるビデオ ファイルを渡す必要があります。データ ストリームの形式もサポートされています。
3. 使用例
以下は、ビデオのトランスコーディングにnode-fluent-ffmpegを使用する例です:
var ffmpeg = require('../index'); var command = ffmpeg('testvideo-5m.mpg') // set video bitrate .videoBitrate(1024) // set aspect ratio .aspect('16:9') // set size in percent .size('50%') // set fps .fps(24) // set audio bitrate .audioBitrate('128k') // set audio codec .audioCodec('libmp3lame') // set number of audio channels .audioChannels(2) // set custom option .addOption('-vtag', 'pX') // set output format to force .format('avi') // setup event handlers .on('end', function() { console.log('file has been converted succesfully'); }) .on('error', function(err) { console.log('an error happened: ' + err.message); }) // save to file .save('outtest.avi');
node-fluent-ffmpeg はチェーン呼び出しを実行でき、インスタンス化の直後に一連のビデオ属性がチェーンに設定され、最後にビデオがトランスコードされたことを示す end イベントが監視されます。完了後、save() メソッドを呼び出して、ビデオ ファイルを対応するディレクトリに保存できます。
4. node-fluent-ffmpeg でできること
node-fluent-ffmpeg は、ffmpeg で実行できることはすべて実行でき、ビデオに対してあらゆる処理を実行できます。さらに、nodejs を使用すると、node-fluent-ffmpeg は、ビデオの長さを読み取って動的に返すこと、必要に応じてビデオを任意の形式にトランスコードすることなど、他の多くのことも実行できます。具体的なメソッドは github で参照できます。メソッドの概要が記載されています。使用する場合は、必要なものを選択するだけで簡単にビデオのトランスコードを完了できます。
5. ビデオトランスコーディングのいくつかの要素
上記の各 関数 は、ビデオのさまざまな属性を設定します。ここでは、ビデオのトランスコーディングにおけるより重要な属性のいくつかと、node-fluent-ffmpeg の対応するメソッドについて簡単に紹介します。
1.fps: ビデオのフレーム レート。1 秒間に画像が何回更新されるかを示します。ゲームをプレイするとき、fps が低いとゲームが遅延することは誰もが知っています。これが fps の役割です。特定の範囲内で fps が高いほど、1 秒あたりにビデオが更新される回数が多くなり、人間の目にはより滑らかに見えます。この属性に対応するメソッドは fps() で、設定したいフレーム レート値を渡すだけです。
2. 解像度: ビデオのサイズを設定するために使用されます。対応するメソッドは size() で、幅 x 高さを渡します。
3. ビット レート: ビデオ分野では、一般的にビット レートはビット レートを指します。データ送信時の単位時間当たりに送信されるデータのビット数をkbps単位で表します。この値はビデオの品質に影響します。値が大きいほどビデオの品質は高くなりますが、同時にビデオ ファイルのサイズも大きくなります。したがって、ファイル サイズが制限を超えない範囲で品質をできるだけ高くするには、トランスコーディング時にコード レートを合理的に設定する必要があります。
4. フォーマット: 言うまでもなく、フォーマットは format メソッドを通じて設定できます。 この記事を読む方法はもうマスターされたと思います。さらに興味をそそられる場合は、PHP 中国語 Web サイトの他の関連記事にも注目してください。
推奨読書:
ネイティブ JS で Ajax を非同期的に実装する方法は何ですか?以上がNodeJS を使用してビデオをトランスコードするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。