HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0924
GrapeColorAVIファイルに音声統合36解決


GrapeColor

リンク

2011/9/24(Sat) 06:54:56|NO.41634

AVIファイルに音声ファイル(WAVとか)を統合する方法ありませんか?
どんな方法でも構わないので教えてください!



この記事に返信する


Cookies

リンク

2011/9/24(Sat) 11:12:15|NO.41637

私はAVIファイルなんて扱ったことありませんし全然わかりませんが、一応情報を、ということで。

Video for Windowsというものがあるようですね。
http://www.ecoop.net/coop/vfw/aviapi.html
http://codezine.jp/article/detail/210

http://eternalwindows.jp/winmm/avi/avi00.html
も参考になるかもしれませんね。
AVIファイル作成についてもあるようです。
オーディオを編集するとはちょっと違うかもしれませんが、
ビデオストリームなるものを取得し、それにオーディオを足してAVIを作成すれば…とか。
想像ですけども。



Cookies

リンク

2011/9/24(Sat) 14:39:24|NO.41640

よく見たら、一番下のリンクの中に、ズバリなものがありました。
http://eternalwindows.jp/winmm/avi/avi07.htmlの中の一番下です。

「ストリームの混合」ということで。
ビデオストリームとオーディオストリームが両方あれば結構簡単にできるようです。



GrapeColor

リンク

2011/9/24(Sat) 15:23:09|NO.41641

>>Cookiesさん
これってHSPですか・・・?



who

リンク

2011/9/24(Sat) 16:46:35|NO.41644

>>GrapeColor
C言語をHSPに書き換えればいいですよ(^^)
僕はAPIの文献はHSPでは少ないのでいつもMSDNとか見てます。



GrapeColor

リンク

2011/9/24(Sat) 17:25:58|NO.41645

>>whoさん
じ、自分で書き換えるんですか!?



WHOS

リンク

2011/9/24(Sat) 17:59:03|NO.41646

whoさんじゃないけどお答えしましょう。
基本的には自分でそれをHSPに書き換えるしかないと思います。
もしかしたら優しい人がサンプルを作ってくれるかもしれません。



Cookies

リンク

2011/9/24(Sat) 18:00:29|NO.41647

全然HSPじゃないですよ。
C言語ですね。
どのPCにもvfw32.dllってものがあるらしいので、それを使ってですね。。。
あと、API名をC言語スクリプトから読んで、引数も文章からなんとなく理解して…とか。



GrapeColor

リンク

2011/9/24(Sat) 18:20:46|NO.41648

C++(評価版)持ってたのでソースからデバッグでEXEを生成しました
なんとかしてHSPと連係プレイさせてみたいと思います。
まだ成功していないので一応未解決にさせていただきます。



who

リンク

2011/9/24(Sat) 18:37:07|NO.41649

>>GrapeColorさん
なんかやってることが違う気が



晩御飯

リンク

2011/9/24(Sat) 18:40:41|NO.41650

C++(評価版)ってVC++EEのことなんだろうか



Cookies

リンク

2011/9/24(Sat) 21:04:43|NO.41654

あ、ごめんなさい。
vcf32.dllではなくて、avifil32.dllというものを使えばいいそうです?
http://hsp.tv/play/pforum.php?mode=pastwch&num=34626
なぜなのかはわからないのですがね。。
ってもCと連携しようとしてるならいらない情報だったかな。



who

リンク

2011/9/24(Sat) 21:14:49|NO.41655

C言語と連携するともっと難しくなる気がするのは気のせいですかね。



who

リンク

2011/9/24(Sat) 21:30:21|NO.41656

思ったことを言うと、質問者さんのやりたいのはどちらですか?
.廛蹈札江紊如AVIとWAVEを重ね合わせて流したいのか。
AVIファイルに任意のWAVEファイルを結合して新たなAVIファイルを作りたいのか。



ザーメン

リンク

2011/9/24(Sat) 21:43:01|NO.41657

DLL形式でよければ。
http://www.dotup.org/uploda/www.dotup.org2062550.zip.html
パスはhsp

手元にaviもwavもないため動作未確認
VC2010Uでコンパイルしたので動かない可能性も



ザーメン

リンク

2011/9/24(Sat) 21:45:57|NO.41658

追記
手元のaviとwavでテストした結果、結合に成功しました。



GrapeColor

リンク

2011/9/24(Sat) 22:32:42|NO.41660

C言語ソースから作ったEXEファイルと連係動作させようと思いましたが
思い通りの動作ができなかったため諦めて別の方法を試します。
ザーメンさんのプラグインを借用してテストしてみます。



GrapeColor

リンク

2011/9/24(Sat) 23:12:22|NO.41662

>>ザーメンさん
要望なのですが、圧縮オプションを表示せずにデフォルトの設定で出力することはできませんか?
それさえできれば解決します
わがままばかりで申し訳ありませんが、他にも要望に応えてくださる方コメントお願いします。



ザーメン

リンク

2011/9/24(Sat) 23:23:50|NO.41663




GrapeColor

リンク

2011/9/24(Sat) 23:39:13|NO.41664

>>ザーメン
申し訳ありません。
そのDLLのソースを貼っていただけないでしょうか><



ザーメン

リンク

2011/9/24(Sat) 23:52:23|NO.41665

NO.41640の書き込みのリンク先をそのまま使っただけです。



GrapeColor

リンク

2011/9/24(Sat) 23:53:15|NO.41666

そのプログラムの何処を変えたのか教えてください><



ザーメン

リンク

2011/9/24(Sat) 23:57:12|NO.41667

AVISaveVのオプションアドレスにヌルを渡しました。



GrapeColor

リンク

2011/9/25(Sun) 00:03:07|NO.41668

C言語を全く知らない身なので変更部分を含め全部のソースを載せていただけると助かります。
無茶なお願いであればいいですが・・・



ザーメン

リンク

2011/9/25(Sun) 00:07:53|NO.41669

その前にそのソースを知ってどうなさるのか教えてもらえますか?
HSPで運用するだけならDLLで十分ですし、
Cにそのまま組み込みたいのならHSPと関係なくなってくるので答えかねます。



GrapeColor

リンク

2011/9/25(Sun) 00:12:02|NO.41670

終了時の完了ダイアログの必要が無いので自分で消そうと思いました。



who

リンク

2011/9/25(Sun) 00:17:04|NO.41671

>>ザーメンさん
Cのソースを公開すれば良いのではないでしょうか?



ザーメン

リンク

2011/9/25(Sun) 00:25:50|NO.41673

こんな言い方するのもどうかと思いますが、
中途半端なCの知識でプログラムを組んでも危険です。
今回のAVIもリソースの開放を忘れたりしても警告ダイアログなんてでませんので、
メモリリークを間違って起こしたら大変です。

それにDLLを自分で作成できますか?

最後に投下
http://www.dotup.org/uploda/www.dotup.org2063514.dll.html
引数は
AVIとWAVを結合 
aviのファイル名,
wavのファイル名,
出力ファイル名,
オプションダイアログを表示するか(省略可),
完了ダイアログを表示するか(省略可)



ザーメン

リンク

2011/9/25(Sun) 00:29:07|NO.41674

リンクミスね
http://www.dotup.org/uploda/www.dotup.org2063532.dll.html
こっちよ

別にCのソース公開してもいいけどさぁ、エラー起きても読み込んだバッファ放置して強制終了させそうで怖いんだよねぇ



GrapeColor

リンク

2011/9/25(Sun) 00:31:03|NO.41675

開発環境は整っていますが所詮中学生なので知識が足りていません。
ググればいけるかもしれません(?)
ザーメンさんのお気に触って本当に申し訳ありませんでした。



ザーメン

リンク

2011/9/25(Sun) 00:36:17|NO.41676

まぁ、中学生なのにVCいじれるってだけですごいよ。
Cやるんなら本買って位置から勉強したほうがいいよ。
気づいていない所でエラーおきたりするのもいやだからね。



GrapeColor

リンク

2011/9/25(Sun) 00:36:33|NO.41677

あ、あれソースじゃなかった
自分のPCは自分で責任を取るので教えてください><
ちなみに使用できる言語は
Microsoft Visual Basic 2010 Express
Microsoft Visual C# 2010 Express
Microsoft Visual C++ 2010 Express
です。



ザーメン

リンク

2011/9/25(Sun) 00:44:25|NO.41678

ほい
一応いっとくけど、Cの質問はここではやっちゃいかんぞ?

#include <windows.h> #include "hsp3plugin.h" #include <vfw.h> #include <string> #define tstring string #pragma comment (lib, "vfw32.lib") int flag[2]; BOOL SaveAviFile(LPTSTR lpszFileName, PAVISTREAM paviVideo, PAVISTREAM paviAudio) { int i; PAVISTREAM pavis[2]; AVICOMPRESSOPTIONS options[2]; LPAVICOMPRESSOPTIONS lpOptions[2]; for (i = 0; i < 2; i++) { ZeroMemory(&options[i], sizeof(AVICOMPRESSOPTIONS)); lpOptions[i] = &options[i]; } pavis[0] = paviVideo; pavis[1] = paviAudio; void* x; if(flag[0]) { if (!AVISaveOptions(NULL, 0, 2, pavis, lpOptions)) return FALSE; x = lpOptions; }else{ x = NULL; } if (AVISaveV(lpszFileName, NULL, NULL, 2, pavis, (LPAVICOMPRESSOPTIONS*)x) != AVIERR_OK) { MessageBox(NULL, TEXT("AVIファイルの作成に失敗しました"), NULL, MB_ICONWARNING); AVISaveOptionsFree(2, lpOptions); return FALSE; } AVISaveOptionsFree(2, lpOptions); return TRUE; } static int cmdfunc( int cmd ) { // 実行処理 (命令実行時に呼ばれます) // code_next(); // 次のコードを取得(最初に必ず必要です) PAVISTREAM paviVideo; PAVISTREAM paviAudio; std::tstring inavi(code_gets()); std::tstring inwav(code_gets()); std::tstring newavi(code_gets()); flag[0] = code_getdi( FALSE ); flag[1] = code_getdi( FALSE ); AVIFileInit(); if (AVIStreamOpenFromFile(&paviVideo, inavi.c_str(), streamtypeVIDEO, 0, OF_READ, NULL) != 0) { MessageBox(NULL, TEXT("ファイルまたはビデオストリームが存在しません。"), TEXT("OK"), MB_OK); AVIFileExit(); return 0; } if (AVIStreamOpenFromFile(&paviAudio, inwav.c_str(), streamtypeAUDIO, 0, OF_READ, NULL) != 0) { MessageBox(NULL, TEXT("ファイルまたはオーディオストリームが存在しません。"), TEXT("OK"), MB_OK); AVIStreamRelease(paviVideo); AVIFileExit(); return 0; } if (SaveAviFile((TCHAR*)newavi.c_str(), paviVideo, paviAudio)) { if(flag[1]) MessageBox(NULL, TEXT("AVIファイルを作成しました。"), TEXT("OK"), MB_OK); } AVIStreamRelease(paviAudio); AVIStreamRelease(paviVideo); AVIFileExit(); return RUNMODE_RUN; } int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved) { return TRUE; } EXPORT void WINAPI hsp3cmdinit( HSP3TYPEINFO *info ) { hsp3sdk_init( info ); // SDKの初期化(最初に行なって下さい) info->cmdfunc = cmdfunc; // 実行関数(cmdfunc)の登録 }



GrapeColor

リンク

2011/9/25(Sun) 11:05:18|NO.41681

申し訳ありません。
やはり馬鹿なのでクラスにソースを組み込めませんでした。
最後にお願いがあります。
全てのダイアログが表示されないようにプラグインを変えていただけませんか?
本当にわがままばかりで申し訳ないです



GrapeColor

リンク

2011/9/25(Sun) 11:07:53|NO.41682

↑の追記
もう1つ要望があります。
もし、ファイルが見つからなかったり、AVIの作成に失敗した場合は
プラグインのプログラムを終了させるようなプログラムにしていただけると助かります。



GrapeColor

リンク

2011/9/25(Sun) 16:28:14|NO.41697

ザーメンさんのおかげで思い通りのソフトが作れました!
本当に感謝します。
プラグインを提供していただいたのでreadmeのところに
ザーメンさんを載せさせていただいてよろしいですか?



ザーメン

リンク

2011/9/25(Sun) 16:52:15|NO.41698

もちろんOKです!



ONION software Copyright 1997-2021(c) All rights reserved.