C#:音声ファイルWMAの解析 part-2 ~単純ではなさそう~
WMAファイルのヘッダーを探して、それを分割したファイルの頭に付ければ解決かと思って薦めているのですが、難航しています。
まず、WMAファイルのヘッダー情報は可変長なので、どこが切れ目なのか解析に難航しています。調べたところ、’d’, ‘a’, ‘t’, ‘a’のバイトコードが入っているらしいのですが、それらしきものが見当たりません。
あと、単純に先頭500kBと、中間500kBを抜き出して、結合させたもの(test.wma)を視聴したのですが、先頭500kBしか聴けず、中間500kB部分から終了してしまいました。
つまり、ヘッダー解析できたとしても、それを単純に結合させてもダメだということを意味しています。なかなか難しいですね。
using System;
using System.IO;
class WMATest {
static void Main() {
byte[] src = File.ReadAllBytes(“001.wma”);
int FILESIZE = 1024 * 500;
byte[] ary1 = new byte[FILESIZE];
byte[] ary2 = new byte[FILESIZE];
Array.Copy(src, 0, ary1, 0, FILESIZE);
Array.Copy(src, FILESIZE*2, ary2, 0, FILESIZE);
byte[] newArray = new byte[ary1.Length + ary2.Length];
Array.Copy(ary1, newArray, ary1.Length);
Array.Copy(ary2, 0, newArray, ary1.Length, ary2.Length);
File.WriteAllBytes(“test.wma”, newArray);
}
}
using System.IO;
class WMATest {
static void Main() {
byte[] src = File.ReadAllBytes(“001.wma”);
int FILESIZE = 1024 * 500;
byte[] ary1 = new byte[FILESIZE];
byte[] ary2 = new byte[FILESIZE];
Array.Copy(src, 0, ary1, 0, FILESIZE);
Array.Copy(src, FILESIZE*2, ary2, 0, FILESIZE);
byte[] newArray = new byte[ary1.Length + ary2.Length];
Array.Copy(ary1, newArray, ary1.Length);
Array.Copy(ary2, 0, newArray, ary1.Length, ary2.Length);
File.WriteAllBytes(“test.wma”, newArray);
}
}
スポンサーリンク