インターネットの急速な発展に伴い、ビデオストリーミングがユーザーがビデオを視聴して共有する主な方法になりました。 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でいくつかの一般的なビデオストリーミングメディア処理方法を紹介します。これらの方法により、開発者はビデオデータをより柔軟に処理し、より豊かなビデオ再生エクスペリエンスを提供できます。