0

昨年、wifi対応のSonyCMT700Niオーディオステーションというギフトを受け取りました。また、「PartyStreaming」と呼ばれるAirplayのような機能も可能です。私は現在内部を掘り下げて調べているので、自分の「PartyStreaming」対応デバイスを終わらせて、AirPlayのような機能を無料で利用できるようになるかもしれません(チャレンジも非常に興味深いです)

PartyStreamingは、非常に理解しやすいSOAPベースのサービスです。サーバー側とクライアント側の2つのグループに分けられた4つの主要な機能があります。各グループの2つの機能は、反対側との接続の開始または終了を表します(サーバーの場合は開始/停止、クライアントの場合は参加/離脱)

サーバー(オーディオステーション)がネットワーク上に拡散しているオーディオデータにアクセスできるようになってから、実際には遠くまで行きました。せっけん方式でサーバーに参加した後、クライアントはポート3975でサーバーにUDPパケットを送信する必要があるようです。受信すると、サーバーは同じポートでクライアントに30秒間パケットを送信して応答します。

それらの約100を調べた後、私は典型的なパケットが1024バイトの長さであり、64バイトのヘッダー、64バイトの0の塗りつぶし、そして896バイトのサウンドデータがあることを理解しました。

これでデータができましたが、ランダムに書き込まれたバイトの束のように見えます。コーデック情報、構造、「チャンク形式」(waveファイルのような)はありません。プロトコルや「PartyStreaming」関連の技術に関する優れたドキュメントが見つかりません。

私の質問は次のとおりです。「StackOverflowさん、アドバイスはありますか?手がかりはありますか?あきらめるべきですか、それともテストできるアイデアがありますか?」


役に立つと思われるもの:


私が今テストしようとしていること:

  • UDPパケットをクライアントとしてキャプチャし、サーバーを起動してそのデータをオーディオステーションに送信し、データを読み取れるかどうかを確認します。サーバー側の暗号化があるかもしれません、もしそうなら、私は立ち往生しています

  • 1kHzファイルを作成し、オーディオステーションで再生します。パケットをキャプチャしてそのバイトを監視し、多くのコーデックでエンコードされた同じファイルと比較してパターンを見つけます...

4

2 に答える 2

2

ビットレートが非常に高いため、データが圧縮されていない可能性があります。その場合、データバイトは実際にはランダムではありません。少なくとも、データバイトは均一に分散されていません。

さまざまな解像度(8ビット、16ビット、おそらくその間にエキゾチックなもの)でサンプルを再構築してみてください(つまり、署名されたintを読み取ってください)。多くのパケットでそれを行い、ヒストグラムを計算して表示します(8ビットの場合:-128の数、-126の数... 127の数を数えます)。

良好な統計を得るには、可能な値ごとに少なくとも100サンプル(たとえば、8ビットの場合:12,800サンプル)を収集する必要があります。次に、ヒストグラムを見てください。フラットで、すべての値の出現回数がほぼ同じである場合は、圧縮/暗号化されているか、サンプルごとに間違ったビットを選択しています。一部の値が他の値よりも著しく多かれ少なかれ発生している場合:ビンゴは非圧縮のサウンドサンプルです!

サンプルごとにすべてのビットのフラットなヒストグラムを取得すると、難しくなります。たとえば100kbのデータをファイルにダンプし、linux / unixfileコマンドで実行して、フォーマットが識別されるかどうかを確認してみてください。圧縮を認識する場合があります。次に、圧縮を解除して、圧縮されていないストリームを使用してプロセス全体を繰り返す必要があります。ヒストグラムを分析して、を実行しfileます。

また、ffmpegなどの豊富なライブラリを利用してストリームを認識したりデバッグ出力に役立つメッセージを表示したりするvlc、mplayer、ffplayを実行してみてください。

とにかく、それが暗号化されているなら、あなたは困惑しています...または少なくとも私は努力がそれだけの価値があるとは思えません;)

于 2012-11-26T17:11:00.383 に答える
1

おそらくフォーマットを推測する必要があります。まず、ビットレートを見てみましょう。1秒あたり何バイトを取得しますか?これは、PCMであるかどうか、または圧縮形式であるかどうかを計算するのに役立ちます。

PCMを非常に簡単に除外できるはずです。オーディオパケットの束をさまざまなヘッダー(44.1kHz / 32kHz、16kHz、16ビット/ 8ビット、モノラル/ステレオなど)のWAVファイルに入れて、音楽に似たものが聞こえるかどうかを確認します。

それがうまくいかない場合は、圧縮された形式を推測する必要があります。MP3は一見の価値があるかもしれません(各パケットの最初の4バイトがフレームヘッダーであるかどうかを確認することで認識できます)。

ドキュメントでは、Windows Media Playerから再生できることが示唆されているようであるため、さまざまな形式をサポートしていることがわかります。したがって、64バイトのヘッダーを見て、さまざまな形式でエンコードされたファイルをヘッダーに送信すると何が変わるかを確認できます。

于 2012-11-26T07:36:02.710 に答える