2つのオーディオ(.WAV PCM)ファイル(いくつかの計算が含まれる)を混合するPHP-CLIスクリプトを作成したので、PHPは、で数千(数百万ではないにしても)のサンプルを処理しunpack()
、それらで計算を行い、で保存する必要がありpack()
ます。
タイトルが示すように、スクリプトが10秒のオーディオ出力を生成するのに30秒の処理時間を必要とするため、ミキシングの方法などに関する実際の情報は必要ありません。このプロセスを高速化する可能性を探しています。
私が試したこと:
- オーディオファイルをメモリにキャッシュし、/
substr()
の代わりにを使用して処理します。パフォーマンスの向上:3秒。fseek()
fread()
- 出力ファイルを5000サンプルのチャンクで書き込みます。パフォーマンスの向上:10秒。
これらの最適化の後、10秒のオーディオ出力で約17秒の処理時間になりました。私を悩ませているのは、他のツールが2つのファイルをリアルタイムで、またはさらに高速にミキシングするなどの単純なオーディオ操作を実行できることです。
私が持っていたもう1つのアイデアは並列化でしたが、発生する追加の問題(フォーク/スレッドの正しいシーク位置の計算など)のためにそれを控えました。
それで、私は何かを見逃していますか、それともこれはPHP-CLIスクリプトにとって実際に良いパフォーマンスですか?