• 締切済み

AVIファイルがうまく表示できません

CCDカメラ「webcam」で用意したAVI形式のファイルを 再生できるような物をVC++で作ってみたのですが いざ実行してみると画面が4分割されて表示されてしまいます。しかも上下左右のコマの順番がめちゃくちゃで。 プログラムは本に載っていたものを丸写しで、 他のAVI形式のアニメーションは正常に表示されます。 webcamで撮ったものだけだめなんです。 VC++初心者のため原因がわからず困っています。 どなたか知恵をお貸しください! ↓ファイルを読み込むボタンの中身です。 // コモンファイルダイアログを呼び出すためのオプションを指定する   CFileDialog dlg(TRUE, _T("AVI"), _T("*.AVI"),   OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,         _T("Animation (*.AVI)|*.AVI|")); // [OK]ボタンがクリックされて復帰したときの処理   if( dlg.DoModal()==IDOK )   { // AVIファイルのパス名を取得する   m_strFilename = dlg.GetPathName(); // フォームビューの内容を更新する   UpdateData(FALSE); // ウィンドウの属性を変更する m_dwStyle = WS_CHILD|WS_VISIBLE;   SetWindowLong(m_Animate.GetSafeHwnd(),   GWL_STYLE, m_dwStyle); // AVIファイルを開く   m_Animate.Open(m_strFilename); }

みんなの回答

  • isobeman
  • ベストアンサー率41% (17/41)
回答No.1

そのAVIファイルは、他のソフトウェアでは正常に表示されますか? たとえば、Windows Media Playerとかで。

to-fu_oyako
質問者

補足

はい、Media PlayerやCCDカメラ付属のソフトウェアだと問題なく表示されます。 だから問題はプログラムにある気がするのですが、CCDカメラの保存の仕方が悪い可能性もあるような…。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CFileDialogで保存したい

    VC++でMFCのCEditViewを利用して作るテキストエディタ(プロジェクト名:Cell Compiler)に、最初からついているやつとは別にテキストの保存機能をつけたいのですが、どうすればよいですか? とりあえずCell Compilerdoc.cppファイルの中に、下記のような関数を作ってみたのですが(作る場所違う?)、その後が分かりません。 void CCellCompilerDoc::OnFileSaveProject() { CFileDialog dlg( FALSE, "*.*", "test.cell",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"cellファイル (*.cell)|*.cell|All Files (*.*)|*.*||", NULL); if( dlg.DoModal() == IDOK) { dlg.GetFileExt(); dlg.GetFileName(); dlg.GetFileTitle(); dlg.GetPathName(); } } 多分、if文の中に、保存する処理を加えるのかな?と思っているのですが、どうですか?ちなみに上記のソース追加以外は、何もいじってません。よろしくお願いします。

  • 画像の保存方法。

    VC++のMFC、ダイアログベースで画像処理のソフトを開発している者です。 ピクチャーコントロールに画像を表示させて、その画像を保存したいと思っています。 保存用のダイアログを開き、名前を付けて保存したいのですがうまくいきません。 下が今作っているプログラムです。 void Cstart2Dlg::OnBnClickedButton10() { CFileDialog myDLG(FALSE,"BMP","*.BMP", OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "画像(*.BMP)|*.BMP||"); if(myDLG.DoModal() == IDOK){ CStdioFile fout(myDLG.GetPathName(),CFile::modeCreate |CFile::modeWrite|CFile::typeBinary); UpdateData(TRUE); fout.WriteString(m_pict8); fout.WriteString("\xla"); filename = myDLG.GetPathName(); SetWindowText("start2"+filename); } ピクチャーコントロールの変数をm_pict8にしています。テキストファイルを保存するプログラムを参考にして作っているので間違っているのだと思います。 画像の保存方法が分かる方がいらっしゃいましたらよろしくお願いいたします。

  • メインダイアログを表示させずにファイル選択ダイアログを表示

    VC++2005のMFCダイアログベースでプログラムを作成しています。 自動生成されたプログラムを何も変更しないまま実行すると、 メインのダイアログが表示されますが、 そのダイアログを表示させずに、ファイル選択ダイアログを表示させたいのです。 自分で実装しビルド実行したところ、期待動作をしましたが、 ファイル選択ダイアログを閉じた後に、画像のようなエラーが発生してしまいます。 エラーを発生させず、期待動作をさせる良い実装方法をご存知の方おられましたら、 ご教示お願い致します。 【変更実装(エラー発生)】 BOOL CtestApp::InitInstance() { … CtestDlg dlg; m_pMainWnd = &dlg; // INT_PTR nResponse = dlg.DoModal(); //コメントアウト dlg.OnBnClickedButton1(); //ファイル選択ダイアログを表示する関数 //if (nResponse == IDOK) //コメントアウト //else if (nResponse == IDCANCEL) //コメントアウト … } void CtestDlg::OnBnClickedButton1() { CFileDialog ReadDlg( TRUE, NULL, "*.txt", OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, "txtファイル(*.txt)", this ); … }

  • ファイルを開きたいのですが、うまくいかなくて困っています。

    ファイルを開きたいのですが、うまくいかなくて困っています。 以下のソースですが、デバッグしながらやっているので謎な部分があるかもしれません。 やりたいこと: ・実行ボタンを押すと"data/test.txt"を開き、OK部の処理に入りたい。 現状: ・参照ボタンを押した後、ファイル選択ダイアログで[開く]を押した後、実行ボタンを押すとエラー ・参照ボタンを押した後、ファイル選択ダイアログで[キャンセル]を押した後、実行ボタンを押すとOK ・"data/test.txt"は存在します。"r"を"w"にして作成してみたりした為、間違いないと思います。 VC++(MFC)でプログラミングしています。 自力解決が難しい為、お力を貸してくださいm(__)m [環境] OS: Windows XP SP3 tools: VisualStudio2008 //**************************************************************** // 参照ボタン //**************************************************************** void CMergeFile::OnBnClickedButtonRef02() { static char BASED_CODE szFilter[] = "Text Files(*.txt)|*.txt|All Files(*.*)|*.*||"; // ファイルの指定を行う CFileDialog dlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_FILEMUSTEXIST, zFilter, NULL ); dlg.m_ofn.lpstrTitle = "取り込むファイルを選択"; // OKボタンが押されたかチェックする if( dlg.DoModal() == IDOK ){ // ファイル名称クリア処理 ※fileNameはメンバ変数として外に持っています。 memset( fileName, '\0', sizeof(fileName) ); // ファイル名を取得する strcpy( fileName,dlg.GetPathName()); } else { return; } // 選択ファイル名を表示する m_edit_filepath.SetWindowText(fileName); } //**************************************************************** // 実行ボタン //**************************************************************** void CMergeFile::OnBnClickedButtonExe02() { FILE *fpBase = 0; fpBase = fopen("data/test.txt", "r"); if ( fpBase == NULL ){ MessageBox("err"); // エラー } else { MessageBox("ok"); // OK fclose(fpBase); } }

  • VC++でファイルが開けないんです

    以下のようなプログラムを作っています。 実行内容としては、 MessageBoxでYesNo選択 ↓ Yesなら~~という処理、 Noなら、ファイルの選択画面を立ち上げて、ファイルを選択。ReStartという関数にそのファイル名を渡す ↓ そのあと、現在時間を取得して、filename4というファイルに追加書き込みをする。 という処理です。 ここで、私はfilename4=./time/AAA.timeと指定しているのですが、 Yes処理のあとはうまくfileが開けて書き込めるのですが、No処理のあとはfileが開けないんです。 おそらくは、No処理の中のファイル選択で、VC++のプロジェクトがあるディレクトリと違うディレクトリから選択しているせいだと思うんですが、これを解消する方法はありますでしょうか?? VC++短いんで、もし単純でしたら申し訳ないですが、どうぞよろしくお願いします。 ------------------------------------------- ・・・ if(MessageBox("はじめから?", "message", MB_YESNO)==IDYES){ ~~} else{ CFileDialog fd(TRUE,"","",OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_LONGNAMES, "位置ファイル (*.POSI)|*.POSI|" "全てのファイル(*.*)|*.*||", NULL); if(fd.DoModal()==IDOK){ posifilename = fd.GetPathName(); } ReStart(posifilename); } stream4 = fopen(filename4,"a"); if(stream4 == NULL ){ MessageBox("Cannot Open the File!!", "error", MB_OK); } strwork4.Format("%ld,",time(NULL)); fprintf(stream4,strwork4); fclose(stream4);

  • VC++6.0,MDI,子ウィンドウのタイトルが変わる!?

    VC++6.0でMDIプログラムを作成しているものです. 子ウィンドウをダブルクリックすると「ファイルを開く」のコモンダイアログを呼び出し,そこに選択した画像ファイルを表示させるプログラムを作ったのですが,ついでにタイトルバーに開いたファイル名を以下のようにして表示させました. // Viewクラスにて CFileDialog dlg(TRUE, "bmp", "*.bmp",               OFN_HIDEREADONLY|         OFN_OVERWRITEPROMPT,        "BITMAP(*.bmp)|         *.bmp|JPEG(*.jpg)|         *.jpg||"); if (dlg.DoModal() != IDOK) { return; } GetParent()->SetWindowText(dlg.GetFileName()); そして,画像を表示したウィンドウとは別のウィンドウをアクティブにすると,タイトルバーに表示したファイル名がウィンドウを生成したときのタイトルに戻ってしまいます. 子ウィンドウが何個あっても,表示している画像のファイル名をタイトルバーに表示したいのですが,どうすればいいのですか?

  • クリップボードからJpgファイルへの保存方法(画質について)

    クリップボードにコピーされたデスクトップの画面を Jpgファイルに落とすプログラムです。 クリップボードから情報を取得してjpgファイルを作成することはできるのですが、画質が悪く (白黒のように)なってしまうのですが、なぜなのかわかりません。 アドバイスお願いします。 if (IsClipboardFormatAvailable(CF_DIB )) { ::OpenClipboard(NULL); HGLOBAL hGlobal; hGlobal = (HGLOBAL)::GetClipboardData(CF_DIB ); if( hGlobal == NULL ){ AfxMessageBox( "クリップボードへコピーできませんでした" ); return; } //ファイルに保存 ///////////////////// const CString szPptFilter = _T("PowerPoint Files (*.ppt)|*.ppt|"); CString szFilter = szPptFilter + _T("|"); CFileDialog dlg(FALSE, _T("ppt"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szPptFilter); if( dlg.DoModal() == IDOK ) { double lfProp = 1.0; TCHAR szTemp[_MAX_PATH]; BOOL bTemp = (GetTempPath(_MAX_PATH, szTemp) == 0)? FALSE:TRUE; CString szTempPath = bTemp? szTemp:_T("c:\\"); CString szFileName = szTempPath + _T("_") + "JpegFile" + _T(".jpg"); void *pDIB = GlobalLock( hGlobal ); CDib dib((BYTE*)pDIB); CPicObject::EPicKind eKind = CPicObject::GetKind(szFileName); if(eKind == CPicObject::eJpg) { CPicJpg pic(dib); //tmpフォルダに一時的に作成 bStatus = pic.Write(szFileName); }

  • ファイルダイアログでのファイルの複数選択について

    VC++6.0でプログラムをしているのですが、CFileDialogクラスのコモンダイアログでファイルを開くときに、ファイルを複数選択できるようにしています。 しかし、試してみると14枚までしか開くことができません。プログラムは以下のとおりです。 CFileDialog dlg(TRUE, "bmp", "*.bmp", OFN_ALLOWMULTISELECT); if (dlg.DoModal() != IDOK) { return; } ファイルを15枚以上選択するとif文の中のreturnに入って関数を抜けてしまいます。原因が何なのか分かる方教えてください。

  • ファイルの保存ダイアログでデフォルト命名したい

    ファイルの保存ダイアログでデフォルト命名したい Win32API(C言語)編 第55章 ファイルを開く・保存のコモンダイアログ http://www.geocities.jp/ky_webid/win32c/055.html をみてファイルの保存ダイアログを出せるようになりました。 しかし、たまーにフリーソフトなどでもファイルを保存する際に、 デフォルトのファイル名が初期値として指定されているものもあります。 私のソフトでもそのようにしたいのですが、色々な部分に文字列を 入れてみて試してみても、思ったとおりの結果にはなりませんでした。 下記は上記サイトに記載されている ファイルを保存する際のダイアログの出し方から引用したものですが、 これをどのようにしたらダイアログが開いた際にファイル名部分に デフォルト命名された状態で開けるのでしょうか? static OPENFILENAME ofn; static TCHAR filename_full[MAX_PATH]; // ファイル名(フルパス)を受け取る領域 static TCHAR filename[MAX_PATH]; // ファイル名を受け取る領域 // 構造体に情報をセット ZeroMemory( &ofn, sizeof(ofn) ); // 最初にゼロクリアしておく ofn.lStructSize = sizeof(ofn); // 構造体のサイズ ofn.hwndOwner = hWnd; // コモンダイアログの親ウィンドウハンドル ofn.lpstrFilter = _T("text(*.txt)\0*.txt\0All files(*.*)\0*.*\0\0"); // ファイルの種類 ofn.lpstrFile = filename_full; // 選択されたファイル名(フルパス)を受け取る変数のアドレス ofn.lpstrFileTitle = filename; // 選択されたファイル名を受け取る変数のアドレス ofn.nMaxFile = sizeof(filename_full); // lpstrFileに指定した変数のサイズ ofn.nMaxFileTitle = sizeof(filename); // lpstrFileTitleに指定した変数のサイズ ofn.Flags = OFN_OVERWRITEPROMPT; // フラグ指定 ofn.lpstrTitle = _T("名前を付けて保存");// コモンダイアログのキャプション ofn.lpstrDefExt = _T("txt"); // デフォルトのファイルの種類 // 名前を付けて保存コモンダイアログを作成 if( !GetOpenFileName( &ofn ) ) { MessageBox( hWnd, _T("エラー"), _T("エラー"), MB_OK ); SendMessage( hWnd, WM_CLOSE, 0, 0 ); }

  • Win32API ファイルの書き込み、保存

    Win32APIを使って、ファイルの保存ダイアログを表示→ファイルを指定→保存ボタンを押す→指定されたファイルに書き込む→指定したファイルを保存 というプログラムを作りたいと考えています。しかし、ファイルに書き込んだ後どう保存すればいいかわからないので教えてください。s[256]をfilename_fullに書き込んで保存したいです。この場合プログラムは抜粋したものなので、s[256]に文字が格納してあると考えてください。 char s[256]; FILE *fp; static OPENFILENAME ofn; static TCHAR filename_full[MAX_PATH]; // ファイル名(フルパス)を受け取る領域 static TCHAR filename[MAX_PATH]; // ファイル名を受け取る領域 // 構造体に情報をセット ZeroMemory( &ofn, sizeof(ofn) ); // 最初にゼロクリアしておく ofn.lStructSize = sizeof(ofn); // 構造体のサイズ ofn.hwndOwner = hWnd; // コモンダイアログの親ウィンドウハンドル ofn.lpstrFilter = _T("text(*.txt)\0*.txt\0All files(*.*)\0*.*\0\0"); // ファイルの種類 ofn.lpstrFile = filename_full; // 選択されたファイル名(フルパス)を受け取る変数のアドレス ofn.lpstrFileTitle = filename; // 選択されたファイル名を受け取る変数のアドレス ofn.nMaxFile = sizeof(filename_full); // lpstrFileに指定した変数のサイズ ofn.nMaxFileTitle = sizeof(filename); // lpstrFileTitleに指定した変数のサイズ ofn.Flags = OFN_OVERWRITEPROMPT; // フラグ指定 ofn.lpstrTitle = _T("名前を付けて保存");// コモンダイアログのキャプション ofn.lpstrDefExt = _T("txt"); // デフォルトのファイルの種類 // 名前を付けて保存コモンダイアログを作成 if( !GetSaveFileName( &ofn ) ) { MessageBox( hWnd, _T("エラー"), _T("エラー"), MB_OK ); SendMessage( hWnd, WM_CLOSE, 0, 0 ); }else{ if((fp=fopen(filename_full,"w")) == NULL) { MessageBox( hWnd, _T("エラー"), _T("エラー"), MB_OK ); SendMessage( hWnd, WM_CLOSE, 0, 0 ); exit(0); /* (3)エラーの場合は通常、異常終了する */ } /*ここからがわかりません*/     /*s[256]をファイルに書き込んで、保存するプログラムを教えてください。

WiFiにつながらない
このQ&Aのポイント
  • iPhoneのテザリングでWi-Fiを接続したいのですが接続されない
  • iPhone8を使用している環境でテザリングをしている際に、Wi-Fiへの接続がうまくいかない問題に直面しています。
  • お使いのiPhone8でテザリングを行っているが、Wi-Fiへの接続がうまくできない問題が発生しています。
回答を見る

専門家に質問してみよう