ホームページ >ウェブフロントエンド >jsチュートリアル >NodeJSビデオトランスコーディング実装方法

NodeJSビデオトランスコーディング実装方法

小云云
小云云オリジナル
2018-01-18 11:12:402002ブラウズ

この記事では主に 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 に設定するには、実行する必要があるコマンドは次のとおりです。 module


node-fluent -ffmpeg は基本的に、nodejs を介してターミナルで FFmpeg コマンドを実行します。 node-fluent-ffmpeg のインストールと基本的な導入は他の npm モジュールと同じです。 npm (npm install fluent-ffmpeg) を介してインストールした後、require を使用して js ファイル内でそれを参照するだけです。基本的な使用法は次のとおりです:

ffmpeg -i input.avi -b:v 640k output.ts

この方法で、コマンド ラインがインスタンス化され、トランスコードされるビデオ ファイルを渡す必要があります。また、データ ストリームの形式もサポートされます。

3. 使用例


以下は、ビデオトランスコーディングにnode-fluent-ffmpegを使用する例です:


var ffmpeg = require(‘fluent-ffmpeg'); 
var command = new ffmpeg(这里可以传入视频文件路径,或者流);

node-fluent-ffmpegはチェーンで呼び出すことができ、上記は次のようになります。最後に、一連のビデオ属性がチェーンに設定され、最後にビデオがトランスコードされたことを示す終了イベントが監視されます。完了後、save() メソッドを呼び出して、ビデオ ファイルを対応するディレクトリに保存できます。


4.node-fluent-ffmpeg でできること


node-fluent-ffmpeg は、ffmpeg でできることはすべて実行でき、ビデオに対してあらゆる処理を実行できます。さらに、nodejs を使用すると、node-fluent-ffmpeg は、ビデオの長さを読み取って動的に返すこと、必要に応じてビデオを任意の形式にトランスコードすることなど、他の多くのことも実行できます。具体的なメソッドは github で参照できます。メソッドの概要が記載されています。使用する場合は、必要なものを選択するだけで簡単にビデオのトランスコードを完了できます。

5. ビデオトランスコーディングのいくつかの要素

上記の関数は、ビデオのさまざまな属性と、それに対応する ffmpeg のノードフルエントメソッドを簡単に紹介します。

1.fps: ビデオのフレーム レート。1 秒間に画像が更新される回数を示します。ゲームをプレイするとき、fps が低いとゲームが非常に遅くなることがわかります。これが fps の役割です。特定の範囲内で fps が高いほど、1 秒あたりにビデオが更新される回数が多くなり、人間の目にはより滑らかに見えます。この属性に対応するメソッドは fps() で、設定したいフレーム レート値を渡すだけです。

2. 解像度: ビデオのサイズを設定するために使用され、対応するメソッドは幅 x 高さを渡します。


3. ビットレート: ビデオ分野では、一般的にビットレートはビットレートを指します。データ送信時の単位時間当たりに送信されるデータのビット数をkbps単位で表します。この値はビデオの品質に影響します。値が大きいほどビデオの品質は高くなりますが、同時にビデオ ファイルのサイズも大きくなります。したがって、ファイル サイズが制限を超えない範囲で品質をできるだけ高くするには、トランスコーディング時にコード レートを合理的に設定する必要があります。


4. フォーマット: 言うまでもなく、フォーマットは format メソッドを通じて設定できます。


関連する推奨事項:


php の質問 - PHP でアップロードされたビデオのトランスコーディングに対して返されたpersistentId 値を取得するにはどうすればよいですか?


Qiniu クラウドビデオのトランスコーディングは「avthumb/mp4」を使用します。ソースファイルも MP4 の場合、トランスコーディング操作は実行されますか?

文字コード変換について詳しく紹介します

以上がNodeJSビデオトランスコーディング実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。