プロが教える店舗&オフィスのセキュリティ対策術

OpenCVが使えるaviファイルの種類はどういったものなのでしょう?
携帯の動画を取り込もうとffmpegというフリーソフトを使い3gpをaviに変換し、それを読み込もうとしたのですがcvCaptureFromAVI(filename)の値がNULLになるらしく、うまくいきません。
同一のプログラムで同じ場所に別のaviファイルを置いたらうまく動いたので、パスの指定ミスとかでは無いと思うのですが・・・

ちなみに、プログラム内からsystem関数を呼び出す形でffmpegを
使用し、system("\"C:~略~\\./ffmpeg\" -i \"test.3gp\" -vcodec mjpeg -acodec mp3 test.avi");という形で携帯の動画を変換しました。

携帯の動画(3gp)をOpencvで使えるようにする方法を教えてください。
よろしくお願いします。

A 回答 (11件中1~10件)

「MediaCoderというソフトを使って変換し」てうまくいったなら、


それをまねてみてはどうですか?そのアプリは内部で ffmpeg を使って
変換しているのでないんですかね?コマンド処理らしいのが、
MediaCoder のウィンドウの下の方に出てるじゃないですか^^

MediaCoder のインストールフォルダの下の codecs ってフォルダに
コマンドライン用のプログラムがあるようですけど?
オプションのつけ方とかまねれば、system() にそれらの文字列を
渡して実行してやればうまくいきませんかね?^^
    • good
    • 0
この回答へのお礼

codecsというフォルダをプログラムと同じフォルダにコピーし、MediaCoderのコマンド処理を真似たところ、avi変換・opencvでの
読み込み共にうまく実行することができました!!
ご助言ありがとうございます。

お礼日時:2007/08/25 01:04

あっ、すでにうまくいったのですね^^ よかったです。

では^^
    • good
    • 0

MediaCorder0.6.0 っていうのをインストールしてみました。


「変換」の「コンソールウィンドウ表示切替」を選択して、
コンソールウィンドウを出して、変換実行すれば、内部の処理が見れるようですよ。それをまねればできるんじゃないですか?
コマンドラインのプログラムを動かしているようですし。ffmpeg のほかの
プログラムも使っていれば、MediaCorder のインストールフォルダに
あるやつを呼んでしまえばいいのでは?^^;
    • good
    • 0

http://darusuna.sakura.ne.jp/archives/6/mpeg4itu …

というのもありました。ここでも AU は Debian ではどうのこうの言ってますね。他のLinuxOSやWindowsでもダメだとは書いてないですが。。
    • good
    • 0

「AU は普通の3gp形式ではないので他社携帯とは違います。

」とかありましたね。
http://q.hatena.ne.jp/1181637587

上のURLからリンクされてる、以下のURLに、
なんとか変換したとか書いてるHPがありましたよ。

http://www.deftrash.com/blog/archives/2005/05/li …
    • good
    • 0

-ar オプションでレートを変えればうまくいくかもどうこう書いてますね^^



-ar 44100
-ar 22050
-ar 11025

とか試してみればいかがでしょう?^^
    • good
    • 0
この回答へのお礼

迅速なご対応ありがとうございます。
おっしゃるとおりにしたところ、ffmpegでのエラー?は消えました。
ただ、ffmpegで変換したaviファイルはopencvが読み込んでくれません。
また、試しにMediaCoderというソフトを使って変換した所、opencv読込みがうまくいきました。ただ、できればプログラム上から呼び出したいので、ffmpeg等でうまくいくようにしたいです(もっとも私に動画拡張子変換プログラムをすんなり書く実力があれば別ですが(泣))
理由を調べるため、真空波動研Liteというソフトを使ってaviファイルの種類を調べてみました。
○:opencvで読み込めたケース
×:opencvで読み込めないケース

○[MediaCoderでの携帯動画を変換(形式XviD)]
176x144 12Bit XviD 1.1.2 Final 25.00fps 286f 168.83kb/s
INFOTAG [RIFF(AVI1.0)] 00:00:11.439 (11.439sec) / 250,112Bytes

×[ffmpegで変換したaviファイル]
176x144 24Bit Motion JPEG(MJPG) 15.00fps 172f 274.25kb/s
MPEG2.5-LayerIII 11.03kHz 64.00kb/s CBR Mono
[RIFF(AVI1.0)] 00:00:11.466 (11.466sec) / 500,008Bytes

×[QTConverterで変換したaviファイル]
176x144 16Bit 無圧縮 15.00fps 173f 6084.09kb/s
PCM 22.05kHz 16Bit 1ch 352.80kb/s
[RIFF(AVI1.0)] 00:00:11.533 (11.533sec) / 9,285,618Bytes

×[MediaCoderで変換したaviファイル(形式Motion JPEG)]
176x144 24Bit Motion JPEG(MJPG) 25.00fps 286f 518.00kb/s
INFOTAG
[RIFF(AVI1.0)] 00:00:11.439 (11.439sec) / 749,424Bytes

×[その他のaviファイル(一例)]
720x480 24Bit DV Codec(DVSD) / DV Codec(DVSD) 29.97fps 791f 28857.73kb/s
[RIFF(AVI2.0)] 00:00:26.393 (26.393sec) / 95,250,944Bytes
という結果になりました。

XVid形式で変換を行ったものがうまくいっているような気もしますが、
なんとも言えません。XVid形式の変換をサポートし、且つコマンドラインインターフェイスがあるものってないでしょうか?

お礼日時:2007/08/25 00:01

英語のHPですが、


http://www.maysville-linux-users-group.org/ftopi …
そのエラーメッセージはメジャーじゃない云々のあとに、
Hz の変換すればいいとか書いてました。

参考になりますか?
    • good
    • 0

ffmpeg が使用するバッファ領域が小さい(あるいは変換しようとしている


もとの 3gp ファイルが大きい)のが原因かもしれないってことですか^^

インストール時とかに、バッファサイズの指定のオプションなどあったんですか?

この回答への補足

ffmpeg.exeは元々「携帯動画変換君」というフリーソフトをダウンロードした際に一緒についてきたので、そこから持ってきました。
ですので、バッファサイズの指定のオプションなどに関してはよく分かりません。

元の3gpファイルが大きいということは無いと思います。
今回試したのはせいぜい100KB程度の物ですし・・・

補足日時:2007/08/24 22:26
    • good
    • 0

拡張子を .3gp じゃなく、.3g2 に変更するとうまくいくとかありませんか?

この回答への補足

ご返答ありがとうございます。
拡張子を.3g2にしてやってみましたが、これでもダメなようです。
ffmpegで変換しようとした際に、
lame:output buffer too smallというのが出るのが気になるんですが、
これはまったく関係ないですかね?
初心者なもので的外れな質問なかもしれませんが・・・(汗

補足日時:2007/08/24 16:58
    • good
    • 0

その失敗したという 3gp のファイルを、端末から、


コマンドラインで変換しようとしても失敗するのですか?

携帯は、ドコモ?それとも AU ですか?

この回答への補足

拡張子変換自体の失敗というよりは、
opencvを使ってファイルを読み込むときに、
そこに存在するはずのaviファイルが見つからないという
状況になっている感じです。
恐らく、aviファイルの圧縮方法とかの違いによってopencvが対応
していないとかではないかと勝手ながら推測しているのですが、
どうしてよいのかさっぱり分からず・・・

ちなみに携帯はAUです。

補足日時:2007/08/24 16:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!