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

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

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

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

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

Q&A

0回答

3956閲覧

OpenCVとFFmpegの連携について

kokawa2003

総合スコア217

OpenCV

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

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

0グッド

0クリップ

投稿2018/03/21 01:21

OpenCVの編集結果をFFserverにのせたいのです。
それ自体は
https://teratail.com/questions/117162
に書いている方法でできたのですが、今回はそのcaptuteの元ネタが音付きのネットワークストリームなので音付きで載せたいのです。
そこでまず
前回の手法

lang

1#include <iostream> 2#include "opencv2/opencv.hpp" 3 4typedef unsigned char byte; 5 6int main(){ 7 cv::VideoCapture cam(http://????????); // 8 cv::Mat m; // 画像用の変数 9 while((char)cv::waitKey(1)!='q'){ 10 cam >> m; // 画像の撮影 11 12 for (auto i = m.datastart; i != m.dataend; ++i) 13 std::cout << *i ; 14 15 16 cv::imshow("show",m); // 画像の表示 17 } 18}

をコンパイルしてcppopencvを作り
cppopencv|ffmpeg -f rawvideo -pixel_format bgr24 -video_size 640x480 -framerate 30 -i - http://AAA.com:8090/webcam.ffm
で流すやり方をやめ
まず
ffmpeg -f rawvideo -pixel_format bgr24 -video_size 640x480 -framerate 30 -i - http://AAA.com:8090/webcam.ffm
の部分をコーデイングにしたいのですが
avcodec_find_encoderとか使ったプログラムを上記コードに入れたいのですがさっぱりやり方が分かりません。
いいページを知っている人はいませんか?
私が手にいれたのは下のものですがどう利用すればいいかもさっぱり不明です。

lang

1extern "C" { 2#include <libavcodec/avcodec.h> 3#include <libavformat/avformat.h> 4#include <libavutil/avutil.h> 5} 6 7#include <iostream> 8using namespace std; 9 10int main() { 11 AVCodec* m_codec; 12 AVFormatContext* m_formatContext; 13 AVStream* m_stream; 14 15 unsigned m_outWidth = 768; 16 unsigned m_outHeight = 608; 17 18 av_register_all(); 19 avcodec_register_all(); 20 avformat_network_init(); 21 22 int errorStatus = 0; 23 char errorLog[128] = { 0 }; 24 av_log_set_level(AV_LOG_TRACE); 25 26 string m_output("http://novius-morisawa.com:8090/webcam.ffm"); 27 28 if (avformat_alloc_output_context2(&m_formatContext, NULL, "h264", m_output.c_str()) < 0) { 29 cerr << "Cannot allocate output context: " 30 << av_make_error_string(errorLog, 128, errorStatus) << endl; 31 return -1; 32 } 33 34 AVOutputFormat *m_outputFormat = m_formatContext->oformat; 35 36 m_codec = avcodec_find_encoder(AV_CODEC_ID_H264); 37 if (!m_codec) { 38 cerr << "Cannot find an encoder: " 39 << av_make_error_string(errorLog, 128, errorStatus) << endl; 40 return -1; 41 } 42 43 m_stream = avformat_new_stream(m_formatContext, m_codec); 44 if (!m_stream) { 45 cerr << "Cannot create a new stream: " 46 << av_make_error_string(errorLog, 128, errorStatus) << endl; 47 return -1; 48 } 49 50 51 av_dump_format(m_formatContext, 0, m_output.c_str(), 1); 52 53 m_stream->codec->pix_fmt = AV_PIX_FMT_YUV420P; 54 m_stream->codec->width = m_outWidth; 55 m_stream->codec->height = m_outHeight; 56 57 if (avcodec_open2(m_stream->codec, m_codec, NULL) < 0) { 58 cerr << "Cannot open codec: " 59 << av_make_error_string(errorLog, 128, errorStatus) << endl; 60 return -1; 61 } 62 63 64 if ((errorStatus = avio_open(&m_formatContext->pb, m_output.c_str(), AVIO_FLAG_WRITE)) < 0) { 65 cerr << "Cannot open output: " 66 << av_make_error_string(errorLog, 128, errorStatus) << endl; 67 return -1; 68 } 69 70 if (avformat_write_header(m_formatContext, NULL) < 0) { 71 cerr << "Cannot write header to stream: " 72 << av_make_error_string(errorLog, 128, errorStatus) << endl; 73 return -1; 74 } 75 76 cout << "All done." << endl; 77 78 return 0; 79} 80 81

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問