インターネットの急速な発展に伴い、ビデオストリーミングがユーザーがビデオを視聴して共有する主な方法になりました。 Webアプリケーションを開発する開発者には、PHPがビデオストリーム出力、トランスコード、ストリーミング機能を簡単に実装できる非常に実用的なビデオストリーミングメディア処理方法を提供します。この記事では、いくつかの一般的なPHPビデオストリーミング方法を詳細に紹介し、コードの例を添付して、開発者がこれらのテクノロジーをより適切に習得できるようにします。
PHPは、ローカルビデオファイルを読み取り、ビデオストリームに変換することにより、ブラウザに出力できます。簡単な例コードは次のとおりです。
$ filename = 'path/to/video.mp4'; ヘッダー( 'Content-Type:Video/MP4'); ヘッダー( 'Content-Length:'。Filesize($ filename)); readfile($ filename);
上記のコードでは、ビデオファイルを直接読み取り、MIMEタイプをビデオ/MP4に設定し、 ReadFile()関数を使用してブラウザに出力します。
FFMPEGは、ビデオトランスコーディング、トリミング、マージ、その他の操作をサポートする強力なオープンソースマルチメディア処理ツールです。 PHPでのexec()関数を通じて、FFMPEGはビデオストリーム処理のために直接呼び出すことができます。ビデオトランスコーディングの例は次のとおりです。
$ inputfile = 'path/to/input.mp4'; $ outputFile = 'path/to/output.mp4'; $ ffmpegcommand = "ffmpeg -i {$ inputfile} -c:v libx264 -c:aac -strict experimental {$ outputfile}"; exec($ ffmpegcommand);
この例では、ffmpegコマンドはexec()を使用して実行され、入力ビデオファイルをh.264ビデオエンコード形式( libx264 )およびAACオーディオエンコード形式にトランスコードします。
ビデオをストリーミングしたい場合は、PHPを介してチャンクで転送できます。このようにして、ファイル全体がロードされるのを待たずに、ブラウザは徐々にビデオをロードしてビデオを再生できます。ビデオストリーミングを実装する例は次のとおりです。
$ filename = 'path/to/video.mp4'; ヘッダー( 'Accept-ranges:bytes'); $ start = 0; $ end = filesize($ filename)-1; Header( "content-range:bytes {$ start} - {$ end}/"。filesize($ filename)); ヘッダー( "content-length:"。filesize($ filename)); $ fp = fopen($ filename、 'rb'); if($ fp){ fseek($ fp、$ start、seek_set); while(!feof($ fp)&&($ p = ftell($ fp))<= $ end){ $ length =($ p + 1024> $ end)? $ end -$ p + 1:1024; Echo Fread($ fp、$ length); ob_flush(); フラッシュ(); } } fclose($ fp);
このコードでは、受け入れ範囲とコンテンツレンジヘッダーを設定することにより、ファイルチャンク転送を実装します。 fseek()を使用してファイルポインター位置を制御し、 Fread()を介して指定された範囲内のビデオデータを読み取ります。
この記事では、ビデオストリームの直接出力、ビデオトランスコーディングにFFMPEGを使用し、PHPを使用してビデオストリーミングを実現するなど、PHPでいくつかの一般的なビデオストリーミングメディア処理方法を紹介します。これらの方法により、開発者はビデオデータをより柔軟に処理し、より豊かなビデオ再生エクスペリエンスを提供できます。