質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

8198閲覧

OpenCVのVideo Writerではきだした動画が再生できない。Ubuntu環境です。

physics303

総合スコア89

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/07/11 07:30

編集2018/07/11 23:52

このサイトにあるvideostab.cppのソースコードは入力動画のブレを補正した動画を出力してくれるものです。コンパイルして、

./a.out 動画名.avi

と実行すると、補正前の動画と補正後の動画が並んで表示されます。補正後の動画のみを保存したいので、適当な場所に

VideoWriter writer("x.avi", VideoWriter::fourcc('D', 'I', 'V', '3'), 24.0, Size(640,480));

writer << cur2;

を加えました。(詳しい経緯はこちらで)
すると、aviファイルに関しては、適切に変換後の動画x.aviが作成されるのですが、同様なことをmp4ファイルで行おうとしてもうまく行きません。というのも、

VideoWriter writer("x.mp4", VideoWriter::fourcc('M', 'P', '4', 'V'), 24, Size(640,480));

として、コンパイル後に

./a.out 動画名.mp4

を実行すると、プログラムが作動して、変換前と変換後の動画が並んで表示されるのですが、保存されたx.mp4を開くことができません。また、保存されたx.mp4動画ファイルをwindowsOSに転送してWindows環境で開こうとしても、開くことができませんでした。

解決するために、mp4ファイルをaviファイルに変換して同様のことをしてもダメでした。どうしたらよいでしょうか。アドバイスをいただけると幸いです。

**追記

コマンドラインをみると、

OpenCV: FFMPEG: tag 0x5334504d/'MP4V' is not supported with codec id 13 and format 'mp4 / MP4 (MPEG-4 Part 14)'

OpenCV: FFMPEG: fallback to use tag 0x00000020/' ???'

というエラーが生じされてました。OpenCVのバージョンは3.2.0, ffmpegのバージョンは0.11.1です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

考えられる可能性としては、以下でしょうか。

  • コーデックがインストールされていない
  • OpenCVがコーデックとリンクされていない

追記

CMake時にffmpegをリンクするよう指定していないことが原因と思われます。

Bash

1$ cd opencv 2$ mkdir build 3$ cd build 4$ cmake -DWITH_FFMPEG=ON ..

ずらーっとログが現れますが、最後の方で以下のような箇所があるはずです。
その中で、FFMPEGが有効になっていればOKです。

Plain

1 Video I/O: 2 Video for Windows: YES 3 DC1394 1.x: NO 4 DC1394 2.x: NO 5 FFMPEG: YES (prebuilt binaries) 6 codec: YES (ver 57.48.101) 7 format: YES (ver 57.41.100) 8 util: YES (ver 55.28.100) 9 swscale: YES (ver 4.1.100) 10 resample: NO 11 gentoo-style: YES 12 GStreamer: NO 13 OpenNI: NO 14 OpenNI PrimeSensor Modules: NO 15 OpenNI2: NO 16 PvAPI: NO 17 GigEVisionSDK: NO 18 DirectShow: YES 19 Media Foundation: NO 20 XIMEA: NO 21 Intel PerC: NO

投稿2018/07/11 07:35

編集2018/07/12 05:23
kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazto

2018/07/11 07:43

libav-tools、 ffmpeg はインストール済みでしょうか? また、OpenCVのインストールは apt-get で、でよろしいでしょうか?
physics303

2018/07/11 07:55 編集

sudo apt-get install libav-tools と入力したらインストールされましたので、どうやらインストールされていなかったようです。この状況でもう一度、プログラムを実行してみましたが、やはり、再生できません。
kazto

2018/07/11 08:01

> OpenCVのインストールは下記URLの手続きを経てインストールしました。 ご提示のURLの方法は、ソースからコンパイルしたことになります。apt-getとはまた別の方法になります。 さて、そうなると、二番目のリンクされていない可能性が大きくなりました。 cmake を実行したときのオプションはお分かりになりますでしょうか。
physics303

2018/07/11 12:55

なにもオプションはつけませんでした。ただ、cmake とコマンドしたと思います。
kazto

2018/07/12 00:22

なるほど、これでリンクがされていないことが確定しました。 オプションをつけてcmakeしなおす必要があります。 すみません、午前中は出先のため、午後に内容修正します。
physics303

2018/07/12 00:30

よろしくおねがいします。お待ちしております。
physics303

2018/07/12 06:53 編集

ありがとうございます。頂いたご指示通りにcmakeをし直しましたところ、 -- Video I/O: -- DC1394 1.x: NO -- DC1394 2.x: YES (ver 2.2.4) -- FFMPEG: YES -- avcodec: YES (ver 56.60.100) -- avformat: YES (ver 56.40.101) -- avutil: YES (ver 54.31.100) -- swscale: YES (ver 3.1.101) -- avresample: NO -- GStreamer: -- base: YES (ver 1.8.3) -- video: YES (ver 1.8.3) -- app: YES (ver 1.8.3) -- riff: YES (ver 1.8.3) -- pbutils: YES (ver 1.8.3) という応答がありました。しかし、やはりプログラム実行時に OpenCV: FFMPEG: tag 0x5634504d/'MP4V' is not supported with codec id 13 and format 'mp4 / MP4 (MPEG-4 Part 14)' OpenCV: FFMPEG: fallback to use tag 0x00000020/' ???' というエラーが生じ、生成されるx.mp4ファイルも開けません。 おかしいのは、 ./a.out 動画名.mp4 として、生成されるx.mp4の容量はわずか数バイトであるという点です。動画名.mp4は90MBの動画なのですが。。。 ただしくcur2からwirteできてないのかなという印象を受けます。
physics303

2018/07/12 07:34

すいません、解決しました。入力動画の縦横長にSize(640,480)をあわせていなかったのが原因のようです。Size(640,480)を入力動画の縦横長に変更したところ、なんの問題もなく出力されました。何度も何度もご回答いただいたのに、こんなにしょうもない原因ですいませんでした。
guest

0

入力動画の縦横長にSize(640,480)をあわせていなかったのが原因のようです。Size(640,480)を入力動画の縦横長に変更したところ、なんの問題もなく出力されました。

投稿2018/07/12 07:34

physics303

総合スコア89

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問