ホーム

マルチメディアファイルフォーマット

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • コメント (Close): -
  • トラックバック (Close): -

MP4ファイル音声の書き込み 第2部

MP4ファイル音声の書き込み 第1部



faacエンコーダーを介してWAVE音源データAACストリームにエンコードして、MP4ファイルに書き込むプログラムについて解説します。

...続きを読む

MP4ファイル音声の再生 第2部

  • 著者名: ひろし
  • 2012-06-20 Wed 21:22:14
  • 未分類

MP4ファイル音声の再生 第1部



faad2ライブラリーを使用して、AACフォーマットで作成されたMP4ファイルの音声をデコード/再生するプログラムについて解説します。


...続きを読む

AACファイルの書き込み



faacエンコーダーを介してWAVE音源データAACストリームにエンコードしてAACファイルに書き込む手順は、以下の通りです。

  1. AACエンコードに必要なfaac 1.26をインストールします。
  2. faacエンコーダーを開いてfaacEncConfiguration構造体入力サンプル数最大出力バイト数等を取得し、faacEncConfiguration構造体の各値を、目的の使用を満たす値に再設定し直します。
  3. 取得した入力サンプル数から、WAVE音源データを一時格納するための入力バッファサイズを算出します。
  4. 取得した最大出力バイト数から、エンコード済みデータを格納する出力バッファサイズを算出します。
  5. 入力/出力バッファの領域を確保したら、WAVE音源データを読み込み、入力バッファの32ビットデータの上位ワードに書き込みます。
  6. 入力バッファの32ビットデータをAACストリームにエンコードして、AACファイルに書き込みます。
  7. WAVE音源データの読み込みが終了したら、エンコーダーに残ったすべてのデータを吐き出させてから、faacエンコーダーをクローズします。


...続きを読む

faac 1.26のインストール



WAVE音源データからAAC音源データを作成する際に、必要となるfaacライブラリーのインストールについて解説します。


...続きを読む

AACファイルの再生



faad2ライブラリーを使用してAACファイルのデコードを行い、同時に再生するプログラムについて解説します。

...続きを読む

faad2-2.7のインストール



AACファイルをデコードするためのfaad2ライブラリーのインストールについて解説します。


...続きを読む

ID3タグの書き込み(id3lib) 第2部



「ID3タグの書き込み(id3lib) 第2部」では、MFCを使った用例とサンプルプログラムを紹介します。

...続きを読む

ID3タグの書き込み(id3lib) 第1部



ID3タグ編集用ライブラリ「id3lib-3.8.3」を使用して、ID3タグMP3ファイルに書き込む方法を解説します。尚ID3タグ編集用ライブラリ「id3lib-3.8.3」のインストールについては、id3libのインストールをご参照ください。


...続きを読む

ID3タグの読み込み(id3lib) 第3部



「ID3タグの読み込み(id3lib) 第3部」では、MFCを使った用例とサンプルプログラムを紹介します。


...続きを読む

ID3タグの読み込み(id3lib) 第2部



ID3タグを含んだ音楽ファイルからCID3Tagクラスを使って、ID3タグを読み込む手順は以下の通りです。

  1. CID3TagクラスのインスタンスをID3タグを含んだ音楽ファイルのファイル名を指定して作成するか、或いはファイル内のID3タグをバージョン毎に読み込む場合は、ファイル名を指定せずに作成します。

  2. ファイル名を指定せずにCID3Tagクラスのインスタンスを作成した場合は、ファイルから直接読み込んだID3タグの生データを、CID3Tag::Parse関数に入力してID3タグの内容を解析します。

  3. CID3Tag::Parse関数の戻り値や、CID3Tag::GetFrameCount関数で取得したフレーム数を元に、CID3Tag::GetFrame関数を使ってフレームの内容を順に読み出し、リストビュー等のコントロールを用いて結果を表示します。




...続きを読む

ID3タグの読み込み(id3lib) 第1部



今回は、MP3ファイルID3タグを読み込むために、id3lib-3.8.3というフリーライブラリを使用してみました。尚id3lib-3.8.3の扱いについては、前回のid3libのインストールをご参照ください。


...続きを読む

id3libのインストール



MP3ファイルフォーマットカテゴリーではlibid3tagライブラリを使用してID3タグの読み書きを解説してきた訳ですが、「AACファイルフォーマットの読み込み」を書く段になって、このlibid3tagライブラリの限界が目立ってきたので、思い切って今一度id3libライブラリについても解説していきたいと思います。

今になって見えてきたlibid3tagライブラリの限界

  1. ID3v1タグの読み書きにおいては、ISO8859-1規格に厳密に従うので、シフトJISでの書き込みや読み込みができません。
  2. 書き込んだID3v2タグのバージョンはすべてID3v2.4タグになってしまう。つまりID3v2.2タグID3v2.3タグの書き込みが不可能なため、せっかく書き込んだ内容も、ウィンドウズのエクスプローラーや、ウィンドウズメディアプレーヤーSONYのMP3プレーヤーからはまったく読み込めません。
  3. バージョンID3v2.4で画像を書き込んだファイルを、ウィンドウズメディアプレーヤーで再生すると動作が不安定になり、場合によってはデッドロックを起こす場合があります。

以上の点からもバージョンID3v2.4以外は、id3libライブラリを使用したほうが無難のようです。

...続きを読む

ゴミ箱に捨てたファイルの復元



シェルインターフェースを使用してゴミ箱に捨てたファイルに対して、コンテキストメニューのコマンド内容(以下の4つ)を実現する方法を解説します。


  1. ”undelete”(ファイルの復元)
  2. ”cut”(ファイルの切り取り)
  3. ”delete”(ファイルの削除)
  4. ”properties”(ファイルプロパティの表示)



...続きを読む

MP3ファイルの書き込み 第2部

MP3ファイルの書き込み 第1部



ACM(Audio Compression Manager)を介してWAVE音源データMP3ストリームにエンコードしてMP3ファイルに書き込む手順は、以下の通りです。

  1. MP3エンコードに必要なLAME ACMをインストールします。
  2. プログラムから、目的のACMドライバーを探し出します。
  3. ACMドライバーを開いて使用可能なエンコードフォーマットの中から、目的の仕様を満たすMPEGLAYER3WAVEFORMAT構造体を一つ選択します。
  4. エンコードに特別な仕様を要求しない場合は、システムが推奨するACMドライバーMPEGLAYER3WAVEFORMAT構造体を取得します。
  5. WAVE音源データ読み込み用のバッファサイズから、MP3ストリームを一時格納するための作業用バッファサイズを取得します。
  6. 作業用バッファを確保して、ACMストリームヘッダーを作成します。
  7. 読み込んだWAVE音源データMP3ストリームにエンコードして、MP3ファイルに書き込みます。
  8. WAVE音源データの読み込みが終了したら、ACMストリームヘッダーを削除してから、ACMストリームをクローズします。
  9. 独自にACMドライバーを選択してオープンしている場合は、ACMドライバーをクローズします。



...続きを読む

LAME ACMのインストール



ウィンドウズXPで標準で入っているMP3エンコード/デコードのためのACMコーデックは、Fraunhofer Institut Integrierte Schaltungen IIS社Fraunhofer IIS MPEG Layer-3 Codecですが、エンコードする場合のビットレートが最高でも56kbps、サンプルレートが24000Hzと低品質で音楽メディアとして、ハイレベルな鑑賞に堪え得るものではありません。
そこで今回はlame-3.98.4.tar.gzをネットからダウンロードして、ACMドライバを作成するまでの過程を解説します。

...続きを読む

ID3タグの書き込み 第3部



「ID3タグの書き込み 第3部」では、MFCを使った用例とサンプルプログラムを紹介します。

...続きを読む

ID3タグの書き込み 第2部



CIDFileクラスを使って、ID3タグへの編集/書き込みする手順は以下の通りです。

新たにフレームを作成して、ID3タグに追加/挿入する場合。
  1. ID3タグが存在しない場合は、CID3File::TagNew関数を呼び出して、ID3タグを新たに作成します。
  2. 追加するフレームIDを引数に入れてCID3File::InsertFrameNew関数を呼び出し、新規フレームの作成とID3タグにフレームへの追加/挿入をします。
  3. メンバー変数のCStringクラス文字列に必要なデータを設定した後、CID3File::SetFrame関数を呼び出してID3タグの内容を変更します。
  4. CID3File::Update関数を呼び出して、ID3タグの内容をメモリ或いはファイルに書き込みます。
ID3タグの読み込み 第2部」の手順に従って読み込んだ、ID3タグの内容を修正する場合。
  1. 修正するフレームの内容をCID3File::GetFrame関数で、メンバー変数のCStringクラス文字列に読み出します。
  2. メンバー変数のCStringAクラス文字列を編集後、CID3File::SetFrame関数を呼び出してID3タグの内容を変更します。
  3. CID3File::Update関数を呼び出して、ID3タグの内容をメモリ或いはファイルに書き込みます。
ID3タグの読み込み 第2部」の手順に従って読み込んだ、ID3タグのフレームを削除する場合。
  1. 削除するフレーム番号を引数に入れてCID3File::DeleteFrame関数を呼び出し、フレーム番号のフレームを削除します。
  2. CID3File::Update関数を呼び出して、ID3タグの内容をメモリ或いはファイルに書き込みます。


...続きを読む

ID3タグの書き込み 第1部



今回は、ID3タグ編集用ライブラリ「libid3tag-0.15.1b」を使用して、ID3タグMP3ファイルに書き込む方法を解説します。尚ID3タグ編集用ライブラリ「libid3tag-0.15.1b」のインストールについては、libid3tagのインストールをご参照ください。


...続きを読む

ID3タグの読み込み 第3部



「ID3タグの読み込み 第3部」では、MFCを使った用例とサンプルプログラムを紹介します。


...続きを読む

ID3タグの読み込み 第2部



ID3タグを含んだ音楽ファイルからID3Fileクラスを使って、ID3タグを読み込む手順は以下の通りです。

  1. ID3FileクラスのインスタンスをID3タグを含んだ音楽ファイルのファイル名を指定して作成するか、或いはファイル内の音楽データを演奏しながら同時にID3タグを読み込む場合は、ファイル名を指定せずに作成します。
    libid3tag-0.15.1bにおいて、ファイル内の音楽データを演奏しながら、同時にファイル内のID3タグを読むというようなことは出来ないようです。)

  2. ファイル名を指定せずにID3Fileクラスのインスタンスを作成した場合は、ファイルから直接読み込んだID3タグの生データを、CID3File::Parse関数に入力してID3タグの内容を解析します。

  3. CID3File::Parse関数の戻り値や、CID3File::GetFrameCount関数で取得したフレーム数を元に、CID3File::GetFrame関数を使ってフレームの内容を順に読み出し、リストビュー等のコントロールを用いて結果を表示します。




...続きを読む

ID3タグの読み込み 第1部



今回は、MP3ファイルID3タグを読み込むために、libid3tag-0.15.1bというフリーライブラリを使用してみました。尚libid3tag-0.15.1bの扱いについては、前回のlibid3tagのインストールをご参照ください。


...続きを読む

libid3tagのインストール



MP3ファイルのid3タグを読み込むライブラリーですが、現在ウェブ上で入手できるものに、以下の二つのフリーライブラリーがあるようです。

  1. 「id3lib」.....id3v2.3.0対応、UNICODEはUTF16のみ対応。
  2. 「libid3tag」.id3v2.4.0対応、UNICODEはUTF16/UTF16BE/UTF8に対応。


上記二つのライブラリーを比較検討した結果、今回はid3v2.4.0にも対応した「libid3tag」を選びました。

...続きを読む

肥田先生の講演内容

以下、肥田 舜太郎(ひだ・しゅんたろう)先生という広島原爆の際に被爆者救援にあたっていたお医者さんの講演内容です。やはり秋口から下痢が始まるだろう、被曝症状が明らかになっていくだろうとおっしゃっていますね。

長いのですが重要と思われるところを赤で書きますたので読んで見て下さい。

せっかくこのような生き証人がいるのに。

歴史に学ばない人間は歴史を繰り返すということだと思います。







肥田 舜太郎(ひだ・しゅんたろう)

1917
年広島生まれ。1944年陸軍軍医学校を卒業、軍医少尉として広島陸軍病院に赴任。1945年広島にて被爆。被爆者救援にあたる。全日本民医連理事、埼玉民医連会長などを歴任。現在、全日本民医連顧問、日本被団協原爆被害者中央相談所理事長。自身の被爆体験を原点に、被爆者治療と核廃絶運動に関わり続け、今もなお各地での精力的な講演活動は続いている。著書
『広島の消えた日―被爆軍医の証言』、『内部被曝の脅威 ちくま新書(541)』など。




...続きを読む

MP3ファイルの再生 第2部



MP3ファイルの読み込み手順は以下の通りです。

  1. MP3ファイルを開いて、ID3v2ヘッダー/ID3v1フッターの有無を調べます。
  2. フレームヘッダーを探し出し、そのデータからMPEGLAYER3WAVEFORMAT構造体を作成します。同時に一番最初のフレームヘッダーの先頭位置をMP3データの先頭位置として保存し、ファイルサイズからこの先頭位置とフッターがあればフッターサイズを差し引いて、MP3データサイズを算出します。
  3. 作成したMPEGLAYER3WAVEFORMAT構造体から、デコード後のWAVEFORMATEX構造体を取得します。
  4. ACMストリームをオープンします。
  5. MP3データのブロックサイズから変換後のWAVE音源データのブロックサイズを取得します。
  6. MP3の総データサイズから変換後のWAVE音源の総データサイズを取得し、WAVE音源データのブロックサイズの平均値を算出します。(再生中における再生位置変更時に、ファイル上での相対位置を算出するために必要になります。)
  7. 作業用バッファを確保して、ACMストリームヘッダーを作成します。
  8. 先に取得したWAVEFORMATEX構造体を元にWAVE出力デバイスを開きます。
  9. WAVE出力デバイスからのコールバックイベントから呼び出されるオーバーライド関数(StreamIn関数)において、MP3ファイルからMP3データを読み込み、WAVE変換して得られた音源データをダブルバッファに書き込みながら演奏していきます。
  10. ファイル末尾まで読み込むか、演奏停止イベントがあればWAVE出力デバイスを停止してから閉じます。
  11. 次のファイルが読み込まれるか、デストラクタが呼び出されれば、ACMストリームヘッダーを削除してから、ACMストリームをクローズします。



...続きを読む

MP3ファイルの再生 第1部



ウィンドウズのオーディオコーデックは、ACM(Audio Compression Manager)によって管理されており、標準でデコードのみ可能なMPEGLAYER3コーデックが装備されています。本章ではこのACMを介してMP3ファイルのデコードを行い、同時に再生するプログラムについて解説します。


...続きを読む

CDDBの読み込み



CDDB(Compact Disc DataBase)とは、音楽CDの演奏者やアルバム名、曲名などの情報が格納されたデータベースのことで、本章では数あるCDDBサイトのなかでもフリーCDDBであるfreeDBに接続して、その情報を取得する方法を解説します。

読み込み手順は以下の通りです。

  1. CDDAの各トラックの開始位置時間(秒)と総演奏時間、総トラック数からdiscidを算出します。

  2. 算出したdiscidと各トラックの開始セクタ位置、CDDAの終了時間(秒)をパラメータにして「QueryコマンドURL」を作成し、freeDBに問い合わせて目的のCDに該当するジャンルとdiscidを取得します。

  3. 取得したdiscidとジャンルを元に「ReadコマンドURL」を作成し、freeDBに接続して目的のCDの演奏者やアルバム名、曲名などの情報を取得します。




...続きを読む

CD-DAの再生 第2部



CD-DAの読み込み/再生手順は以下の通りです。

  1. CreateFile関数を使ってCDROMのドライブを開いて、CDROMのデバイスハンドルを取得します。
  2. CDROMのトラック数や各トラックの情報を格納したCDROM_TOC構造体を取得し、目的の曲の開始セクタ終了セクタを算出します。
  3. WAVE出力デバイスを開きます。
  4. WAVE出力デバイスからのコールバックイベントトリガにして、CD-DAの各セクタから音源データDeviceIoControl関数を使って読み出します。
  5. 終了セクタまで読み込むか、演奏停止イベントがあればWAVE出力デバイスを停止してから閉じます。



...続きを読む

すべての記事一覧

ホーム

タグクラウド
ブロとも申請フォーム

この人とブロともになる

ブロとも一覧

このページの先頭へ戻る

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。