Fehler in building opencv mit ffmpeg
Ich ffmpeg installiert haben nach dieser Artikel. ffmpeg-installation war ok.
Jetzt Baue ich opencv mit ffmpeg-Unterstützung, und ich habe einige Fehler.
Die Fehler sind
/home/coie/Softwares/Libraries/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:1484:21: error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope
c->flags |= CODEC_FLAG_GLOBAL_HEADER;
^
/home/coie/Softwares/Libraries/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp: In function ‘int icv_av_write_frame_FFMPEG(AVFormatContext*, AVStream*, uint8_t*, uint32_t, AVFrame*)’:
/home/coie/Softwares/Libraries/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:1512:30: error: ‘AVFMT_RAWPICTURE’ was not declared in this scope
if (oc->oformat->flags & AVFMT_RAWPICTURE) {
^
/home/coie/Softwares/Libraries/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘void CvVideoWriter_FFMPEG::close()’:
/home/coie/Softwares/Libraries/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:1686:35: error: ‘AVFMT_RAWPICTURE’ was not declared in this scope
if( (oc->oformat->flags & AVFMT_RAWPICTURE) == 0 )
^
/home/coie/Softwares/Libraries/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp: In member function ‘bool CvVideoWriter_FFMPEG::open(const char*, int, double, int, int, bool)’:
/home/coie/Softwares/Libraries/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:1920:32: error: ‘AVFMT_RAWPICTURE’ was not declared in this scope
if (!(oc->oformat->flags & AVFMT_RAWPICTURE)) {
^
In file included from /home/coie/Softwares/Libraries/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg.cpp:45:0:
/home/coie/Softwares/Libraries/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp: In static member function ‘static AVStream* OutputMediaStream_FFMPEG::addVideoStream(AVFormatContext*, AVCodecID, int, int, int, double, AVPixelFormat)’:
/home/coie/Softwares/Libraries/opencv-2.4.13.3/modules/highgui/src/cap_ffmpeg_impl.hpp:2214:25: error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope
c->flags |= CODEC_FLAG_GLOBAL_HEADER;
^
modules/highgui/CMakeFiles/opencv_highgui.dir/build.make:230: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.cpp.o' failed
make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.cpp.o] Error 1
CMakeFiles/Makefile2:2349: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/all' failed
Was falsch sein könnte?
- Gleichen Probleme mit Ubuntu 16.04, ffmpeg von github und opencv 3.3.0.
- ja mir Ubuntu 16.04 und opencv 2.4.13.4. Wie Problem lösen?
- Das ist die version in Konflikt. OpenCV noch nicht entsprechend aktualisiert ffmpeg neueste version. Ich zu früher verändert ffmpeg version von diesem link aus (ffmpeg.org/releases) und kompiliert mit --enable-shared-flag, nun ist ok.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine Lösung ist grep die fehlenden definiert (2 insgesamt) von FFmpeg durch die Verwendung grep -r das führt zu dem folgenden code, der sich in libavcodec/avcodec.h:
Kopieren und fügen Sie es auf die Spitze:
Kompilieren und alles funktioniert auch mit der neuesten Quellen
in opencv:0/2.4 es gibt keine Module/videoio Verzeichnis! zu bekommen, dass die alte version (2.4.13-r3) zu kompilieren mit den neuesten media-video/ffmpeg auf gentoo (4.1.3), die ich hatte, um über änderungen modules/highgui/src/cap_ffmpeg_api.hpp mit dieser
patch:
(d.h. ich erstellt den Pfad und die Datei /etc/portage/patches/media-libs/opencv-2.4.13-r3/alt-ffmpeg.patch mit Inhalt.)
in der Abwehr gentoo, sollte ich erwähnen, das neue media-libs/opencv:0/3.4.1 ist auch vorhanden, wie ist der alte media-video/ffmpeg-3.4.5, so könnte ich alternativ auch spielen, um mit masking-Versionen oder einen Fehlerbericht für die Entwickler zu tun für mich...