私の仕事は、mp3 ファイルをデコードし、そのヘッダー、サイド情報、およびオプションのチェックサムを除外することです。mp3 ファイルのすべてのフレームの実際のデータが必要です。私はたくさんグーグルで検索しましたが、方法が見つかりませんでした! 誰でもそれを行う直接的な方法を教えてもらえますか? ReadNextFrame() を使用してフレームにアクセスするために NAudio を使用しています。
3373 次
3 に答える
1
http://mark-dot-net.blogspot.de/2010/11/merging-mp3-files-with-naudio-in-c-and.htmlで述べたように、コードを次のように変更できます。
public static byte[] GetRawMp3Frames(string filename)
{
using(MemoryStream output = new MemoryStream()) {
Mp3FileReader reader = new Mp3FileReader(filename);
Mp3Frame frame;
while ((frame = reader.ReadNextFrame()) != null)
{
output.Write(frame.RawData, 0, frame.RawData.Length);
}
return output.ToArray();
}
}
次に、次のようにして、フレームのみのバイトを処理できます。
var btAllFrames = GetRawMp3Frames("MyMp3.mp3");
于 2013-09-17T07:44:28.353 に答える
0
編集:これは、ここでより適切に回答されただまされた質問のようです。
オリジナル: main_data チャンクをデコードする代わりに出力する完全な MP3 デコーダーが必要なようです。
2 つのオプション:
- 独自のリーダーを構築する (レイヤー III のビット リザーバー計算を完了する)、または
- 既存のデコーダーからオーディオ デコード ロジックを削除し、代わりに出力ロジックを挿入します。
ヘッダー/サイド情報の少なくとも一部のデコードを短縮するために適用できるトリックがおそらくいくつかありますが、それには仕様を完全に理解する必要があります。
オプション #2 を開始する場所が必要な場合は、NLayer、JLayer、libmad、または「dist10 ソース」を検索してみてください。
于 2013-09-18T19:40:39.787 に答える