非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

C#:音声ファイルWMAの解析 part-1

      2015/12/29

どうしても音声ファイルを分割したいと思っているのですが、C#ライブラリにそんな都合の良いものがあるわけではないので、自分でバイトコードを解析してやろうと思った次第。

まずは下記のようなコードで1000KBで単純分割したところ、2つめ以降の分割ファイルをダブルクリックしてもエラー出て聞けませんでした。(まあそんなところでしょう)
1つ目はきちんと音声が聞けるので、ファイルの先頭にヘッダー情報があることがわかります。(まあこれも想定内)

調べてみると、WMAのヘッダー情報は可変長らしく、そうなるとヘッダーと波形データとを区別するキーを探さなければなりません。簡単ではなさそうですね。

今日はここまで。次回続く。

ソースコード(引用元からコピペしています)
引用元:http://www.atmarkit.co.jp/fdotnet/dotnettips/670readallbytes/readallbytes.html

using System;

using System.IO;
using System.Text;

class BinarySplit {
   static void Main() {
      byte[] src = File.ReadAllBytes(“001.wma”);

      int FILESIZE = 1024 * 1000; // 分割サイズ
      int num = 0;
      for (int remain = src.Length; remain > 0; remain -= FILESIZE) {
         int length = Math.Min(FILESIZE, remain);
         byte[] dest = new byte[length];
         Array.Copy(src, num * FILESIZE, dest, 0, length);
         string name = String.Format(“out{0:D4}.wma”, num + 1);
         File.WriteAllBytes(name, dest);

         num++;
      }
   }
}

スポンサーリンク

 - C#応用編