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

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

ただいまの
回答率

90.33%

  • C++

    3780questions

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

  • Ubuntu

    1560questions

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

  • OpenCV

    1236questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,211

physics303

score 51

このサイトにある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です。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

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

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

追記

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

$ cd opencv
$ mkdir build
$ cd build
$ cmake -DWITH_FFMPEG=ON ..


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

  Video I/O:
    Video for Windows:           YES
    DC1394 1.x:                  NO
    DC1394 2.x:                  NO
    FFMPEG:                      YES (prebuilt binaries)
      codec:                     YES (ver 57.48.101)
      format:                    YES (ver 57.41.100)
      util:                      YES (ver 55.28.100)
      swscale:                   YES (ver 4.1.100)
      resample:                  NO
      gentoo-style:              YES
    GStreamer:                   NO
    OpenNI:                      NO
    OpenNI PrimeSensor Modules:  NO
    OpenNI2:                     NO
    PvAPI:                       NO
    GigEVisionSDK:               NO
    DirectShow:                  YES
    Media Foundation:            NO
    XIMEA:                       NO
    Intel PerC:                  NO

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/11 16:38 編集

    ありがとうございます。以下のURLにあるように、コーデックはインストールしています。
    https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14165278824

    OpenCVとコーデックをリンクさせるにはどうしたらよいのでしょうか。
    OpenCVのバージョンは3.2.0です。

    キャンセル

  • 2018/07/11 16:43

    libav-tools、 ffmpeg はインストール済みでしょうか?

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

    キャンセル

  • 2018/07/11 16:47

    ffmpegはインストール済みです。OpenCVのインストールは下記URLの手続きを経てインストールしました。apt-getですね。
    https://github.com/atinfinity/lab/wiki/Linux%E7%92%B0%E5%A2%83%E3%81%A7%E3%81%AEOpenCV%E3%83%93%E3%83%AB%E3%83%89

    libac-toolsが何かわからないのですが、インストールされているか否かはどのように確認できますか

    キャンセル

  • 2018/07/11 16:51 編集

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

    キャンセル

  • 2018/07/11 17:01

    > OpenCVのインストールは下記URLの手続きを経てインストールしました。

    ご提示のURLの方法は、ソースからコンパイルしたことになります。apt-getとはまた別の方法になります。
    さて、そうなると、二番目のリンクされていない可能性が大きくなりました。

    cmake を実行したときのオプションはお分かりになりますでしょうか。

    キャンセル

  • 2018/07/11 21:55

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

    キャンセル

  • 2018/07/12 09:22

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

    キャンセル

  • 2018/07/12 09:30

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

    キャンセル

  • 2018/07/12 15:48 編集

    ありがとうございます。頂いたご指示通りに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できてないのかなという印象を受けます。

    キャンセル

  • 2018/07/12 16:34

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • C++

    3780questions

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

  • Ubuntu

    1560questions

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

  • OpenCV

    1236questions

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