5

可変ビットレートのmp3ファイルを一度に1つのチャンクで受け入れるTornado Pythonサーバーがあります(チャンクは固定数のフレームで構成されています)。

私がしているのは、そのバイナリを転送することだけですが、チャンクの期間を知りたいです。可変ビットレートなので簡単な計算はできません。私は pymedia を調べていましたが、私は mac OS で開発していて、そこに pymedia をインストールできないようです (また、2006 年以降更新されていません)。私もpymadを試しましたが、インストールできませんでした(2007年以降更新されていません)。とにかくファイル中心のようです。

理想的には、たとえばミュータジェンが行う方法で、各チャンクからビットレートを抽出したいと思います。ただし、mp3 フレームまたは一連のそのようなフレームを入力したい場合、mutagen は入力としてファイルを必要とします。

def _on_read_frames(self, data):
  logging.info('read from input:\n%s', data)
  binary_audio = base64.b64decode(data)
  # need to find out how many miliseconds went by here

更新: これはほぼリアルタイムのストリーミング アーキテクチャの一部であるため、mp3 は小さなチャンクでエンコードされるため、現在の解決策は、単純な計算を可能にする固定ビット レートを使用することです。可変ビット レートを使用する利点はほとんどないことに気付きました。ここ。

4

1 に答える 1

1

1 フレームあたり 1,152 個のサンプルがあるため、チャンクが固定数のNフレームである場合、チャンクは固定長のN*1152サンプルになります。これをミリ秒に変換するには、フレーム ヘッダーからサンプル レートを見つける必要があります。

MP3パーサーが必要です。本格的なデコーダーのソース コードは次のとおりです

フォーマットに関するその他のドキュメントは次のとおりです。 http://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header

于 2014-01-11T08:51:09.587 に答える