• ベストアンサー

BMP → AVI 作成について

みなさんはじめまして。 今回、AVIファイルを開き、ヘッダー及びBMPデータをバイナリ形式で書き込んでいくプログラムを作成しようと考えています。 AVIを開く時点での、AVIファイルのヘッダーのビット配列がわかりやすい表などで乗っているサイトをご存知の方おりましたら教えていただけないでしょうか。 よろしくお願いします。

  • gyabi
  • お礼率87% (21/24)

質問者が選んだベストアンサー

  • ベストアンサー
  • kirinoma
  • ベストアンサー率53% (288/542)
回答No.1

AVIファイルの構造ならば,このあたりが見やすいのではないでしょうか. ・「AVIファイルの内部構造」 http://www.usagi-goten.com/jp/AVI_structure.html 詳しくはこことか ・「AVIファイルフォーマット」 http://mksoft.hp.infoseek.co.jp/doc/avifileformat.html ここなど ・MSDN:「AVI RIFF ファイルのリファレンス」 http://msdn.microsoft.com/ja-jp/library/cc352264.aspx -- (以下,蛇足 AVIの各コーデックの読み込み方法を既に把握されている場合はお読み飛ばし下さい. ただ,一口にAVIファイルといっても,実体(データ部のコーデック)はファイルによって千差万別です. 読み込みプログラムを自作するならば,各コーデックの詳細を知り,個別対応しなければなりません. ・「CODEC in DreamCafe」 http://www4.airnet.ne.jp/snowy/codec.html たとえば,上記ページのコーデックはすべてAVIファイルです. お手持ちのファイルのコーデックを知りたい場合は,コーデック調査ツールを使用するのがよいでしょう. ・窓の杜:「真空波動研SuperLite」 http://www.forest.impress.co.jp/lib/pic/video/vdoenc/shinkuuslite.html -- 自作で各コーデックの読み込みに対応する以外には,以下の二つの方策が考えられます. 1.無圧縮AVIへの変換 コーデック変換ツールなどを使用して,動画データを無圧縮AVIに変換します.自作プログラムでは無圧縮形式だけに対応します. 無圧縮AVIならば,実体はビットマップの連続なので,ご質問文中の想定した仕様に対応するのも楽でしょう. ・コーデック変換ツール「TMPGEnc 無料版」 http://www.tmpgenc.net/ja/j_main.html 2.既存ライブラリの使用 OpenCVなどの画像処理ライブラリを使用すれば,ヘッダーの構造やデータ部のコーデックを意識することなく,動画の読み込み,画像の書き出しプログラムの作成が可能です(ただし,世の中すべてのコーデックに対応できるわけではありません.代表的な物のみです). ・「opencv.jp」 http://opencv.jp/ ・OpenCVチュートリアル「OpenCV@Chihara-Lab.」 http://chihara.naist.jp/opencv/ ・サンプルプログラム:AVIの読み込み http://chihara.naist.jp/opencv/?%C6%B0%B2%E8%A5%D5%A5%A1%A5%A4%A5%EB%A1%CAavi%A5%D5%A5%A1%A5%A4%A5%EB%A1%CB%A4%CE%C6%C9%A4%DF%B9%FE%A4%DF 他にも,「DirectX」や「Video for Windows」などのマルチメディアAPIを使用しても対応可能です. Web検索すれば,関連情報が出てくるでしょう. -- 以上,参考になりましたら幸いです.

gyabi
質問者

お礼

ご回答ありがとうございました。 お礼が遅くなってしまい、申し訳ありません。 AVIフォーマットのページ大変参考にさせていただきました、 都合上ライブラリが使用できなくなり、AVI自作を模索しておりました。 現在も作成中ですが、ヘッダーに関しては問題なくできそうです。 本当にありがとうございました。

関連するQ&A

  • ダンプツール作成… 行き詰まりました

    当方、C言語初心者です。チームでプログラム作成しているのですが、ダンプツールの作成で行き詰ってしまいました。 バイナリ形式で吐き出されたデータを書き直し、txt形式で吐き出すプログラムが作りたいです。 バイナリデータは64ビットで形成され、最初の2ビットで形式を、次の2ビットでデータサイズを表しています。 先頭2ビット:10(仮にAを表すとします)   2ビット:11(50サイズを表すとします) 上記バイナリを、Aや50と書き換えてtxtに書き出す。 (バイナリデータの数だけ繰り返すものです) 参考サイト等見ているのですが、どうにも理解できません。 Cを少し勉強しただけでは作れる代物ではありませんでした… 仲間内で作成している為、他のメンバーに迷惑を掛けたくありません。 そんな状況から、此方に書き込みさせていただきました。 ご教授、何卒よろしくお願い致します。

  • BMPファイルを作成し保存

    教えてください。 環境:VB6 sp5 winXP sp2 行いたいこと(アウトプット):BMPファイルを作成して、HDDなどに保存したいです。 入力情報(インプット):VBコード内で配列としてピクセル情報を持っています。1000*1000の画像で、変数ImageData(1000000)の中に256階調でデータが入っています。 配列内のデータを元に1枚の画像(bmp形式)を作成これを保存したいです。 わかるかた、教えてください。 サンプルコードなどの場所などを添付していただければ幸いです。 よろしくお願いします。 質問の意味がわからなければ、お知らせください、追記します。

  • bmpデータ作成に関して

    フォトショップでbmpのデータを作成したいのですが、RGBで設定して、bmpで書き出そうとすると、容量を落とす作業ができません。16ビットか24ビットか32ビットのいづれかしか選べないのですが、bmpの容量を調整して落とせるような書き出しの方法はありますでしょうか? ちなみにファイヤーワークスだとbmpを8ビットを選んで書きだしたりもできるようなのですが。。 誰か知識をわけてください! よろしくお願いします。

  • raw形式からbmp形式への書き込み (画像処理)

    今、raw形式のファイルを読み込んで、bmp形式への書き込みを 行うプログラムを作成しているのですがうまくいきません. 作成したプログラムの一部は以下のようになっています. ------------------rawファイルを読み込む関数の一部------------- //1次元配列の確保 tmp=us_Calloc2(width,height); //画像の読み込み fread(tmp,sizeof(unsigned short),width*height,fp); //2次元配列の確保 img->data=us_Calloc1(width,height); //1次元配列から2次元配列にデータを移動する for(i=0; i<height; i++){ for(j=0; j<width; j++){ img->data[i][j]=tmp[(width*i)+j]; } } ------------------------------------------------------------ --------------bmpファイルに書きこむ(一部)-------------- //bufのメモリ領域の確保 buf=us_Calloc2(width,height); for(i=0; i<height; i++){ for(j=0; j<width; j++){ buf[(width*i)+j]=img->data[i][j]; } } //BMPのファイルヘッダーの出力(省略) //BMPの情報ヘッダーの出力(省略) //画像データの出力 if(fwrite(buf,sizeof(unsigned short),size,fp)!=size){ printf("画像をBMPに書き込むことができませんでした.\n"); free(buf); fclose(fp); exit(-1); } } このように書いたのですが、うまくBMPファイルに出力できません. アドバイスよろしくお願いします.

  • csv形式からbmpを作成

    「bmp2csv」というソフトを使って、bmp形式の画像をモノクロで0,1 の2値データとしてcsv形式で保存しました。 この操作の逆で、csv形式のデータからbmp形式の画像を作成するにはどうしたらよいでしょうか。

  • wf→Aviへ変換、swf2aviについて

    WebEffectで作ったswf形式のアニメーションをAviに変換してウィンドウズムービーメーカーでさらに編集したいのですが、変換がうまく行かずに困っています。 ネットで調べて「swf2avi」というソフトをhttp://redhot.pepper.jp/swf2avi/#no5を見ながら使ってみたのですが、サイトでは変換後の画像の形式はbmpになっているようなのですが、何故かjpg形式で画像が出来上がってしまいます。(上記サイトの3番目の項目のところです。) なので「極窓」というフリーソフトでさらにjpg→bmpにしてから(上記サイトの5番目の項目のように)swf2aviでAvi形式にしようとすると、《File is not a supported bitmap format:》というエラー報告が出てbmpファイルを読み込めません。 何故swf2aviで変換する段階でbmp形式にならないのか、改善方法はないか・・・ご存知の方がいらっしゃいましたらアドバイスお願いします。 ※2分間くらいの結構動くアニメーションなので、画像枚数はかなり多いです・・・それが原因とかもありますか?

  • VBAでbmp画像をASCIIデータとして開く

    VBAでbmp画像ファイルをASCIIの配列データとして開き、 青色を全て赤色に変更して、jpegファイルとして保存するようなプログラムを書きたいのですが bmpファイルををASCIIの配列データとして開くためにはどのような記述を使えば良いでしょうか?

  • TIFファイルと同じBMPファイルが作成していないのに勝手に出てくる

    TIFファイルと同じBMPファイルが作成していないのに作成される スキャナで撮った書類をTIF形式にして保存していますが、 作ってもいないのに、TIFファイルと内容はほぼ同じで、形式がBMPのファイルが、 そのファイルと同じフォルダに勝手に作成されてしまいます。 BMPファイルは消しても、消してもしつこくまた現れます。 それも、Cドライブに入っているTIFファイルすべてに対してBMPコピーが作成されてしまうのです。 違った保存形式ですが中身は同じファイルが2つあるということになるので、 容量も増えてしまうしフォルダの中身も見づらいので、 BMPファイルが作成されないようにしたいのですがどうしたらよいでしょうか? 【状態】 TIFファイルに対して、BMPファイルが作成され、JPEGなどには反応しない 最初からBMPで保存されていたファイルは反応無(TIFがつくられるということはない) 勝手に出てきたBMPファイルをゴミ箱ではなくパソコン自体から削除してもまた出てくる 出てくるタイミングは、パソコンを使用していて、 立ち上げてもいないのにPhotoShopElemensが立ち上がることがあるがその直後に作成されるようである。 勝手に作成されるBMPファイルは1つのTIFファイルに対して一つである。

  • OpenCVで出力を24bitのbmpにするには?

    OpenCVを使って画像処理(ラべリングなど)をしたのですが、出力を24bitのbmp形式の画像で出力させたいです。 ビット深度?(8bitのbmp形式から24bitのbmp形式)を変更させることはできますか? 自分でいろいろ調べたのですが、いまいち分からなくて困っています。 もしわかる方がいらっしゃれば是非教えてください。 OpenCV2.4.6,VisualC++2010を用いています。 入力画像は白黒画像で、24bitのbmp形式の画像です。 ですが、OpenCVで画像処理させると8bitのbmp画像として出力されます。(ラべリングなどの処理をした後の画像) 他のプログラムで24bitのbmp形式で処理させているため8bitのbmp形式の画像を24bitのbmp画像に変更させたいのですが、変更する方法がわかる方がいればぜひ教えてください。 私自身、プログラムは大学の授業レベル、OpenCVは使い始めて数ヶ月なので詳しくないです。 よろしくお願いします。

  • フォトショップでbmpが開けない保存できない

    久しぶりにビットマップファイルを使う機会ができましたが フォトショップで開きません。保存もできません。 【環境】 windows7(64bit) フォトショップCS5(アップデート最新) 【状況】 bmpファイルが開けない、保存できるファイル形式にもない。 「要求された操作を完了できません。ドキュメントの種類が適切ではありません」 すべてのbmp、以前にCS2で編集したbmpファイルも開けなくなっています。 windowsのペイントで新規作成したbmp(24bit)も開けない。 フォトショップで新規作成したデータもbmpで保存不可。 カラーモードはRGB、8bit。 インデックスカラーでシステム(windows)でも× レイヤーも使用なし。 他に何か思い当たる原因がありましたら教えてください。 ※手間はかかりますが、とりあえずwindowsペイントと併用して作業はできてます。

専門家に質問してみよう