6

これは私がしばらくの間やろうとしてきたことであり、よりオープンエンドな質問です。誰かがこれに光を当てるのに役立つ知識を持っているなら、それは大歓迎です.

私は、mp3 のオーディオ ストリームをデコードし、それを使用してアニメーションを駆動したいと考えています。すべて Python を使用しています。私が理解しているように、mp3 のオーディオ データは 32 の周波数サブバンド (または周波数ビン) のフレームに格納されます。これは私にとって理想的です。mp3 を取得して、各フレームの各サブバンドの振幅を抽出できれば、私がやりたいことに完璧であること。

ここで解決策を見つけましたhttps://bitbucket.org/portalfire/pymp3ここでは、すべての処理が Python で行われているようです。かなり遅いですが、それを使用して必要なものを抽出できたとしても、それは良いことです-そのコードで何が起こっているのかを理解するのに苦労しています. また、wavに変換してからfftを使用してwavから周波数を抽出するという解決策もありました。これは非常にノイズが多く、必要なデータが mp3 に直接保存されているため、愚かな方法のように思えます。音波に変換する必要はないようです。ただし、これは実際には最初のものよりも高速でした。これが私が最終的に得たものです:

http://www.youtube.com/watch?v=f_0FORxlK4A

誰かが何かアドバイスや共有したい経験、または私が見るべきライブラリのアイデアを持っているなら、私は本当に聞きたい.

ありがとう!

ヘンリー

4

1 に答える 1

2

を見てみましょう:

http://lightshowpi.org/

ソースコードを調べて、彼らがどのようにそれを行ったかを見てください.

彼らはまた、波形出力にFFTを使用しましたが、リアルタイムであり、Raspberry Piで正常に動作すると考えるほど遅くはありません.

MP3はコサイン変換でエンコードされているため、MP3フレームを直接チェックする場合は、代わりにコサイン変換に切り替える可能性があります。

したがって、まず、どのビンが現実世界のどの周波数に似ているかを知る必要があります。

pypi.python.orgには、フレームごとにデコードできるAVまたはffmpegの直接バインディングがありますが、フレームを表すオブジェクトから周波数を抽出できるかどうか、または最初に生に変換する必要があるかどうかはわかりません。

私があなたなら、あなたが見つけた純粋な Python MP3 コードを使用して、必要なものだけを抽出し、その過程で最適化します。必要に応じて cython を使用します。

しかし、そのアプローチでは MP3 のみに制限されます。Lightshow Pi は、ほぼすべての圧縮タイプで動作します。

于 2016-05-04T15:43:47.157 に答える