Recherche avancée

Médias (1)

Mot : - Tags -/3GS

Autres articles (24)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

Sur d’autres sites (6434)

  • ffmpeg could not find codec parameters for stream 0 on Ubuntu 22.04, works fine on Ubuntu 18.04

    22 février 2023, par ngm

    I'm new to ffmpeg but I've got an odd issue which seems to arise from using it on different Ubuntu versions.

    


    I have an NVIDIA Jetson Nano running Ubuntu 18.04.5 LTS (GNU/Linux 4.9.201-tegra aarch64). Plugged into the Nano's carrier board is an embedded camera that shows up as a Sunplus Innovation Technology Inc. USB2.0 Camera RGB when I run lsusb.

    


    When I run this ffmpeg command, I can successfully record video from the camera, which seems to be mjpeg codec with yuvj422p pixel format. The output is as follows :

    


    ffmpeg -f video4linux2 -i /dev/video0 -an -vcodec libx264 test_capture.mp4
ffmpeg version 3.4.8-0ubuntu0.2 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 7 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
  configuration: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, video4linux2,v4l2, from '/dev/video0':
  Duration: N/A, start: 166.142773, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 928x400, 100 fps, 100 tbr, 1000k tbn, 1000k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x558553df70] using cpu capabilities: ARMv8 NEON
[libx264 @ 0x558553df70] profile High 4:2:2, level 3.2, 4:2:2 8-bit
[libx264 @ 0x558553df70] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'test_capture.mp4':
  Metadata:
    encoder         : Lavf57.83.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuvj422p(pc), 928x400, q=-1--1, 100 fps, 12800 tbn, 100 tbc
    Metadata:
      encoder         : Lavc57.107.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame=  192 fps= 65 q=-1.0 Lsize=     151kB time=00:00:01.89 bitrate= 654.4kbits/s dup=150 drop=0 speed=0.642x    
video:148kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.072495%
[libx264 @ 0x558553df70] frame I:1     Avg QP:23.62  size: 36953
[libx264 @ 0x558553df70] frame P:49    Avg QP:25.25  size:  2121
[libx264 @ 0x558553df70] frame B:142   Avg QP:30.55  size:    70
[libx264 @ 0x558553df70] consecutive B-frames:  1.0%  1.0%  0.0% 97.9%
[libx264 @ 0x558553df70] mb I  I16..4: 10.1% 78.8% 11.1%
[libx264 @ 0x558553df70] mb P  I16..4:  1.1%  1.9%  0.0%  P16..4: 19.1%  3.0%  2.0%  0.0%  0.0%    skip:72.8%
[libx264 @ 0x558553df70] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  2.7%  0.0%  0.0%  direct: 0.1%  skip:97.2%  L0:36.8% L1:62.3% BI: 0.9%
[libx264 @ 0x558553df70] 8x8 transform intra:68.4% inter:77.4%
[libx264 @ 0x558553df70] coded y,uvDC,uvAC intra: 42.0% 80.2% 41.3% inter: 2.2% 5.4% 0.2%
[libx264 @ 0x558553df70] i16 v,h,dc,p: 50% 17% 10% 23%
[libx264 @ 0x558553df70] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 21%  9% 32%  5%  7%  7%  5%  8%  5%
[libx264 @ 0x558553df70] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 15% 12%  5% 14% 11%  8%  5%  7%
[libx264 @ 0x558553df70] i8c dc,h,v,p: 50% 12% 26% 12%
[libx264 @ 0x558553df70] Weighted P-Frames: Y:28.6% UV:28.6%
[libx264 @ 0x558553df70] ref P L0: 56.4% 28.2% 12.0%  2.5%  0.9%
[libx264 @ 0x558553df70] ref B L0: 93.4%  5.3%  1.3%
[libx264 @ 0x558553df70] ref B L1: 94.9%  5.1%
[libx264 @ 0x558553df70] kb/s:628.21
Exiting normally, received signal 2.


    


    However, I'd like to replace this Nano with another that I've upgraded to Ubuntu 22.04.1 LTS (GNU/Linux 4.9.299-tegra aarch64). The device still shows up as the same type when running lsusb. Running the exact same command results in the following :

    


    ffmpeg -f video4linux2 -i /dev/video0 -an -vcodec libx264 test_capture.mp4
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
  configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --arch=arm64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
[video4linux2,v4l2 @ 0x55cab86450] Could not find codec parameters for stream 0 (Video: mjpeg, none(bt470bg/unknown/unknown), 1856x800): unspecified pixel format
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, video4linux2,v4l2, from '/dev/video0':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: mjpeg, none(bt470bg/unknown/unknown), 1856x800, 60 fps, 60 tbr, 1000k tbn, 1000k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
Press [q] to stop, [?] for help
Cannot determine format of input stream 0:0 after EOF
Error marking filters as finished
Exiting normally, received signal 2.


    


    I'm not sure why I can't read this video stream when everything seems to be the same but the OS and the ffmpeg version.

    


    I've checked the available codecs and pixel formats using ffmpeg -codecs and ffmpeg -pix_fmts :

    


    Ubuntu 18.04.5, ffmpeg version 3.4.8-0ubuntu0.2 :

    


    DEVIL. mjpeg                Motion JPEG (encoders: mjpeg mjpeg_vaapi )

    


    IO... yuvj422p               3            16

    


    Ubuntu 22.04.1, ffmpeg version 4.4.2-0ubuntu0.22.04.1 :

    


    DEVIL. mjpeg                Motion JPEG (decoders: mjpeg mjpeg_cuvid ) (encoders: mjpeg mjpeg_vaapi )

    


    IO... yuvj422p               3            16

    


    So it seems like I should be able to record video on both with this codec/pixel format combination.

    


    I've also tried forcing ffmpeg to use this combination on the 22.04 Nano with the following command :

    


    ffmpeg -f v4l2 -input_format mjpeg -framerate 100 -video_size 928x400 -pix_fmt yuvj422p -i /dev/video0 -an -vcodec libx264 test_capture.mp4

    


    But I get the same error. I've also tried increasing the -analyzeduration and -probesize arguments to 100M, with no luck.

    


    Are there other commands or settings I should use ? Should I downgrade my ffmpeg version if possible ?

    


  • "undefined reference to av···@···"ffmpeg error,when i cross compile opencv4.5.3 which include ffmpeg lib

    11 mai 2024, par caiping Peng

    everyone,It is sorry to bother you,but i need some help.
I'm working on an embedded deployment project,doing object detection work to real-time video stream. So I have to port my c++ inference prog to RKNN1808 platform. I compile this program with CMake tool,but I cant finish my work because opencv lib cant be compiled rightly.
To FFmpeg,my configure commend is following :

    


    ./configure --enable-cross-compile --cross-prefix=/home/midsummer/Tool/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- --target-os=linux --arch=aarch64 --prefix=/usr/local/ffmpeg  --enable-shared


    


    then I am gonna show you the ffmpeg version :

    


    libavutil      56. 70.100
libavcodec     58.134.100
libavformat    58. 76.100
libavdevice    58. 13.100
libavfilter     7.110.100
libswscale      5.  9.100
libswresample   3.  9.100
libpostproc    55.  9.100


    


    next ,I use following commend to build cmake project :

    


    cmake -D CMAKE_BUILD_TYPE=RELEASE  -D CMAKE_C_COMPILER=/home/midsummer/Tool/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc -D CMAKE_CXX_COMPILER=/home/midsummer/Tool/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ -D BUILD_SHARED_LIBS=ON -D CMAKE_CXX_FLAGS=-fPIC -D CMAKE_C_FLAGS=-fPIC -D CMAKE_EXE_LINKER_FLAGS=-lpthread -ldl -D ENABLE_PIC=ON -D WITH_1394=OFF -D WITH_ARAVIS=OFF -D WITH_ARITH_DEC=ON -D WITH_ARITH_ENC=ON -D WITH_CLP=OFF -D WITH_CUBLAS=OFF -D WITH_CUDA=OFF -D WITH_CUFFT=OFF -D WITH_FFMPEG=ON -D WITH_GSTREAMER=ON -D WITH_GSTREAMER_0_10=OFF -D WITH_HALIDE=OFF -D WITH_HPX=OFF -D WITH_IMGCODEC_HDR=ON -D WITH_IMGCODEC_PXM=ON -D WITH_IMGCODEC_SUNRASTER=ON -D WITH_INF_ENGINE=OFF -D WITH_IPP=OFF -D WITH_ITT=OFF -D WITH_JASPER=ON -D WITH_JPEG=ON -D WITH_LAPACK=ON -D WITH_LIBREALSENSE=OFF -D WITH_NVCUVID=OFF -D WITH_OPENCL=OFF -D WITH_OPENCLAMDBLAS=OFF -D WITH_OPENCLAMDFFT=OFF -D WITH_OPENCL_SVM=OFF -D WITH_OPENEXR=OFF -D WITH_OPENGL=OFF -D WITH_OPENMP=OFF -D WITH_OPENNNI=OFF -D WITH_OPENNNI2=OFF -D WITH_OPENVX=OFF -D WITH_PNG=OFF -D WITH_PROTOBUF=OFF -D WITH_PTHREADS_PF=ON -D WITH_PVAPI=OFF -D WITH_QT=OFF -D WITH_QUIRC=OFF  -D WITH_TBB=OFF -D WITH_TIFF=ON -D WITH_VULKAN=OFF -D WITH_WEBP=ON -D WITH_XIMEA=OFF -D CMAKE_INSTALL_PREFIX=../CrossCompileResult  -D WITH_GTK=OFF  -D BUILD_opencv_dnn=OFF ..


    


    following is the outpt about FFmpeg :

    


    --   Video I/O:
--     FFMPEG:                      YES
--       avcodec:                   YES (58.134.100)
--       avformat:                  YES (58.76.100)
--       avutil:                    YES (56.70.100)
--       swscale:                   YES (5.9.100)
--       avresample:                NO
--     GStreamer:                   NO
--     v4l/v4l2:                    YES (linux/videodev2.h)



    


    After building the cmake project,I compiled this project with comment 【make -j16】.After not so long time,I got the Error :

    


    [ 49%] Linking CXX executable ../../bin/opencv_annotation
[ 49%] Building CXX object modules/ts/CMakeFiles/opencv_ts.dir/src/ts_tags.cpp.o
[ 49%] Built target opencv_annotation
[ 49%] Linking CXX executable ../../bin/opencv_visualisation
/home/midsummer/Tool/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libavcodec.so.58, needed by ../../lib/libopencv_videoio.so.4.5.3, not found (try using -rpath or -rpath-link)
/home/midsummer/Tool/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libavformat.so.58, needed by ../../lib/libopencv_videoio.so.4.5.3, not found (try using -rpath or -rpath-link)
/home/midsummer/Tool/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libavutil.so.56, needed by ../../lib/libopencv_videoio.so.4.5.3, not found (try using -rpath or -rpath-link)
/home/midsummer/Tool/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/bin/ld: warning: libswscale.so.5, needed by ../../lib/libopencv_videoio.so.4.5.3, not found (try using -rpath or -rpath-link)
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_init_packet@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avformat_get_riff_video_tags@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_send_packet@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_receive_packet@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avformat_get_mov_video_tags@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_find_decoder@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_find_decoder_by_name@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_frame_alloc@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_get_name@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_hwframe_transfer_data@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_malloc@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avio_open@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avformat_alloc_context@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_sub_q@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avformat_network_init@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_packet_free@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_flush_buffers@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_find_encoder@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `sws_getContext@LIBSWSCALE_5'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_receive_frame@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_write_frame@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avformat_close_input@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_seek_frame@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `sws_freeContext@LIBSWSCALE_5'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_dict_set@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_descriptor_get_by_name@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `sws_scale@LIBSWSCALE_5'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_packet_unref@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_dict_parse_string@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_frame_get_buffer@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_freep@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avformat_find_stream_info@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_read_frame@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avformat_free_context@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_default_get_format@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_hwframe_ctx_init@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_register_all@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_free@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_hwframe_get_buffer@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_guess_sample_aspect_ratio@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avformat_new_stream@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_hwframe_constraints_free@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_hwdevice_ctx_create_derived@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_frame_unref@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_buffer_unref@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_write_trailer@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_packet_rescale_ts@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_bsf_get_by_name@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_send_frame@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_get_hw_config@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_buffer_ref@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_dict_get@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_bsf_free@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_codec_is_decoder@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avformat_open_input@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_lockmgr_register@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_packet_alloc@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_hwframe_ctx_create_derived@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_bsf_send_packet@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_bsf_alloc@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_log_set_level@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_image_get_buffer_size@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_open2@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_codec_is_encoder@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_guess_format@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_image_fill_arrays@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_bsf_receive_packet@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `sws_getCachedContext@LIBSWSCALE_5'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_codec_get_tag@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_hwdevice_get_hwframe_constraints@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_hwdevice_ctx_create@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_codec_iterate@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_log_set_callback@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_opt_set@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_codec_get_id@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avformat_write_header@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_parameters_copy@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_pix_fmt_to_codec_tag@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_hwframe_ctx_alloc@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_mallocz@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_find_input_format@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_dict_free@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_get_hw_frames_parameters@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_hwdevice_get_type_name@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avio_close@LIBAVFORMAT_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_frame_free@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_bsf_init@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_close@LIBAVCODEC_58'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `av_hwdevice_find_type_by_name@LIBAVUTIL_56'
../../lib/libopencv_videoio.so.4.5.3: undefined reference to `avcodec_get_context_defaults3@LIBAVCODEC_58'
collect2: error: ld returned 1 exit status
make[2]: *** [apps/visualisation/CMakeFiles/opencv_visualisation.dir/build.make:89: bin/opencv_visualisation] Error 1
make[1]: *** [CMakeFiles/Makefile2:3357: apps/visualisation/CMakeFiles/opencv_visualisation.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 49%] Linking CXX shared library ../../lib/libopencv_calib3d.so
[ 49%] Built target opencv_calib3d
[ 50%] Linking CXX static library ../../lib/libopencv_ts.a
[ 50%] Built target opencv_ts
make: *** [Makefile:163: all] Error 2



    


    I dont know what's wrong with it,It has confused me for a few days,I real hope someone can help me solve the prob.
I promise the the ffmpeg version match the version of opencv strictly,promising the PKG_CONFIG_PATH is right.

    


    I have tried many method like changing opencv version or ffmpeg version,recompiling the ffmpeg,changing PKG_CONFIG_PATH,coping ffmpeg pc file from /usr/local/ffmpeg/lib/pkgconfig to /usr/local/lib/pkgconfig.
I hope somebody can give some idea about how to solve this problem.

    


  • Using FFmpeg encode and UDP with a Webcam ?

    14 mars, par Rendres

    I'm trying to get frames from a Webcam using OpenCV, encode them with FFmpeg and send them using UDP.

    


    I did before a similar project that instead of sending the packets with UDP, it saved them in a video file.

    


    My code is.

    


    #include &#xA;#include &#xA;#include &#xA;#include &#xA;&#xA;extern "C" {&#xA;#include <libavcodec></libavcodec>avcodec.h>&#xA;#include <libavformat></libavformat>avformat.h>&#xA;#include <libavutil></libavutil>opt.h>&#xA;#include <libavutil></libavutil>imgutils.h>&#xA;#include <libavutil></libavutil>mathematics.h>&#xA;#include <libswscale></libswscale>swscale.h>&#xA;#include <libswresample></libswresample>swresample.h>&#xA;}&#xA;&#xA;#include <opencv2></opencv2>opencv.hpp>&#xA;&#xA;using namespace std;&#xA;using namespace cv;&#xA;&#xA;#define WIDTH 640&#xA;#define HEIGHT 480&#xA;#define CODEC_ID AV_CODEC_ID_H264&#xA;#define STREAM_PIX_FMT AV_PIX_FMT_YUV420P&#xA;&#xA;static AVFrame *frame, *pFrameBGR;&#xA;&#xA;int main(int argc, char **argv)&#xA;{&#xA;VideoCapture cap(0);&#xA;const char *url = "udp://127.0.0.1:8080";&#xA;&#xA;AVFormatContext *formatContext;&#xA;AVStream *stream;&#xA;AVCodec *codec;&#xA;AVCodecContext *c;&#xA;AVDictionary *opts = NULL;&#xA;&#xA;int ret, got_packet;&#xA;&#xA;if (!cap.isOpened())&#xA;{&#xA;    return -1;&#xA;}&#xA;&#xA;av_log_set_level(AV_LOG_TRACE);&#xA;&#xA;av_register_all();&#xA;avformat_network_init();&#xA;&#xA;avformat_alloc_output_context2(&amp;formatContext, NULL, "h264", url);&#xA;if (!formatContext)&#xA;{&#xA;    av_log(NULL, AV_LOG_FATAL, "Could not allocate an output context for &#x27;%s&#x27;.\n", url);&#xA;}&#xA;&#xA;codec = avcodec_find_encoder(CODEC_ID);&#xA;if (!codec)&#xA;{&#xA;    av_log(NULL, AV_LOG_ERROR, "Could not find encoder.\n");&#xA;}&#xA;&#xA;stream = avformat_new_stream(formatContext, codec);&#xA;&#xA;c = avcodec_alloc_context3(codec);&#xA;&#xA;stream->id = formatContext->nb_streams - 1;&#xA;stream->time_base = (AVRational){1, 25};&#xA;&#xA;c->codec_id = CODEC_ID;&#xA;c->bit_rate = 400000;&#xA;c->width = WIDTH;&#xA;c->height = HEIGHT;&#xA;c->time_base = stream->time_base;&#xA;c->gop_size = 12;&#xA;c->pix_fmt = STREAM_PIX_FMT;&#xA;&#xA;if (formatContext->flags &amp; AVFMT_GLOBALHEADER)&#xA;    c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;&#xA;&#xA;av_dict_set(&amp;opts, "preset", "fast", 0);&#xA;&#xA;av_dict_set(&amp;opts, "tune", "zerolatency", 0);&#xA;&#xA;ret = avcodec_open2(c, codec, NULL);&#xA;if (ret &lt; 0)&#xA;{&#xA;    av_log(NULL, AV_LOG_ERROR, "Could not open video codec.\n");&#xA;}&#xA;&#xA;pFrameBGR = av_frame_alloc();&#xA;if (!pFrameBGR)&#xA;{&#xA;    av_log(NULL, AV_LOG_ERROR, "Could not allocate video frame.\n");&#xA;}&#xA;&#xA;frame = av_frame_alloc();&#xA;if (!frame)&#xA;{&#xA;    av_log(NULL, AV_LOG_ERROR, "Could not allocate video frame.\n");&#xA;}&#xA;&#xA;frame->format = c->pix_fmt;&#xA;frame->width = c->width;&#xA;frame->height = c->height;&#xA;&#xA;ret = avcodec_parameters_from_context(stream->codecpar, c);&#xA;if (ret &lt; 0)&#xA;{&#xA;    av_log(NULL, AV_LOG_ERROR, "Could not open video codec.\n");&#xA;}&#xA;&#xA;av_dump_format(formatContext, 0, url, 1);&#xA;&#xA;ret = avformat_write_header(formatContext, NULL);&#xA;if (ret != 0)&#xA;{&#xA;    av_log(NULL, AV_LOG_ERROR, "Failed to connect to &#x27;%s&#x27;.\n", url);&#xA;}&#xA;&#xA;Mat image(Size(HEIGHT, WIDTH), CV_8UC3);&#xA;SwsContext *swsctx = sws_getContext(WIDTH, HEIGHT, AV_PIX_FMT_BGR24, WIDTH, HEIGHT, AV_PIX_FMT_YUV420P, SWS_BILINEAR, NULL, NULL, NULL);&#xA;int frame_pts = 0;&#xA;&#xA;while (1)&#xA;{&#xA;    cap >> image;&#xA;&#xA;    int numBytesYUV = av_image_get_buffer_size(STREAM_PIX_FMT, WIDTH, HEIGHT, 1);&#xA;    uint8_t *bufferYUV = (uint8_t *)av_malloc(numBytesYUV * sizeof(uint8_t));&#xA;&#xA;    avpicture_fill((AVPicture *)pFrameBGR, image.data, AV_PIX_FMT_BGR24, WIDTH, HEIGHT);&#xA;    avpicture_fill((AVPicture *)frame, bufferYUV, STREAM_PIX_FMT, WIDTH, HEIGHT);&#xA;&#xA;    sws_scale(swsctx, (uint8_t const *const *)pFrameBGR->data, pFrameBGR->linesize, 0, HEIGHT, frame->data, frame->linesize);&#xA;&#xA;    AVPacket pkt = {0};&#xA;    av_init_packet(&amp;pkt);&#xA;&#xA;    frame->pts = frame_pts;&#xA;&#xA;    ret = avcodec_encode_video2(c, &amp;pkt, frame, &amp;got_packet);&#xA;    if (ret &lt; 0)&#xA;    {&#xA;        av_log(NULL, AV_LOG_ERROR, "Error encoding frame\n");&#xA;    }&#xA;&#xA;    if (got_packet)&#xA;    {&#xA;        pkt.pts = av_rescale_q_rnd(pkt.pts, c->time_base, stream->time_base, AVRounding(AV_ROUND_NEAR_INF | AV_ROUND_PASS_MINMAX));&#xA;        pkt.dts = av_rescale_q_rnd(pkt.dts, c->time_base, stream->time_base, AVRounding(AV_ROUND_NEAR_INF | AV_ROUND_PASS_MINMAX));&#xA;        pkt.duration = av_rescale_q(pkt.duration, c->time_base, stream->time_base);&#xA;        pkt.stream_index = stream->index;&#xA;&#xA;        return av_interleaved_write_frame(formatContext, &amp;pkt);&#xA;&#xA;        cout &lt;&lt; "Seguro que si" &lt;&lt; endl;&#xA;    }&#xA;    frame_pts&#x2B;&#x2B;;&#xA;}&#xA;&#xA;avcodec_free_context(&amp;c);&#xA;av_frame_free(&amp;frame);&#xA;avformat_free_context(formatContext);&#xA;&#xA;return 0;&#xA;}&#xA;

    &#xA;

    The code compiles but it returns Segmentation fault in the function av_interleaved_write_frame(). I've tried several implementations or several codecs (in this case I'm using libopenh264, but using mpeg2video returns the same segmentation fault). I tried also with av_write_frame() but it returns the same error.

    &#xA;

    As I told before, I only want to grab frames from a webcam connected via USB, encode them to H264 and send the packets through UDP to another PC.

    &#xA;

    My console log when I run the executable is.

    &#xA;

    [100%] Built target display&#xA;[OpenH264] this = 0x0x244b4f0, Info:CWelsH264SVCEncoder::SetOption():ENCODER_OPTION_TRACE_CALLBACK callback = 0x7f0c302a87c0.&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Info:CWelsH264SVCEncoder::InitEncoder(), openh264 codec version = 5a5c4f1&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Info:iUsageType = 0,iPicWidth= 640;iPicHeight= 480;iTargetBitrate= 400000;iMaxBitrate= 400000;iRCMode= 0;iPaddingFlag= 0;iTemporalLayerNum= 1;iSpatialLayerNum= 1;fFrameRate= 25.000000f;uiIntraPeriod= 12;eSpsPpsIdStrategy = 0;bPrefixNalAddingCtrl = 0;bSimulcastAVC=0;bEnableDenoise= 0;bEnableBackgroundDetection= 1;bEnableSceneChangeDetect = 1;bEnableAdaptiveQuant= 1;bEnableFrameSkip= 0;bEnableLongTermReference= 0;iLtrMarkPeriod= 30, bIsLosslessLink=0;iComplexityMode = 0;iNumRefFrame = 1;iEntropyCodingModeFlag = 0;uiMaxNalSize = 0;iLTRRefNum = 0;iMultipleThreadIdc = 1;iLoopFilterDisableIdc = 0 (offset(alpha/beta): 0,0;iComplexityMode = 0,iMaxQp = 51;iMinQp = 0)&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Info:sSpatialLayers[0]: .iVideoWidth= 640; .iVideoHeight= 480; .fFrameRate= 25.000000f; .iSpatialBitrate= 400000; .iMaxSpatialBitrate= 400000; .sSliceArgument.uiSliceMode= 1; .sSliceArgument.iSliceNum= 0; .sSliceArgument.uiSliceSizeConstraint= 1500;uiProfileIdc = 66;uiLevelIdc = 41&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Warning:SliceArgumentValidationFixedSliceMode(), unsupported setting with Resolution and uiSliceNum combination under RC on! So uiSliceNum is changed to 6!&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Info:Setting MaxSpatialBitrate (400000) the same at SpatialBitrate (400000) will make the    actual bit rate lower than SpatialBitrate&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Warning:bEnableFrameSkip = 0,bitrate can&#x27;t be controlled for RC_QUALITY_MODE,RC_BITRATE_MODE and RC_TIMESTAMP_MODE without enabling skip frame.&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Warning:Change QP Range from(0,51) to (12,42)&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Info:WELS CPU features/capacities (0x4007fe3f) detected:   HTT:      Y, MMX:      Y, MMXEX:    Y, SSE:      Y, SSE2:     Y, SSE3:     Y, SSSE3:    Y, SSE4.1:   Y, SSE4.2:   Y, AVX:      Y, FMA:      Y, X87-FPU:  Y, 3DNOW:    N, 3DNOWEX:  N, ALTIVEC:  N, CMOV:     Y, MOVBE:    Y, AES:      Y, NUMBER OF LOGIC PROCESSORS ON CHIP: 8, CPU CACHE LINE SIZE (BYTES):        64&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Info:WelsInitEncoderExt() exit, overall memory usage: 4542878 bytes&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Info:WelsInitEncoderExt(), pCtx= 0x0x245a400.&#xA;Output #0, h264, to &#x27;udp://192.168.100.39:8080&#x27;:&#xA;Stream #0:0, 0, 1/25: Video: h264 (libopenh264), 1 reference frame, yuv420p, 640x480 (0x0), 0/1, q=2-31, 400 kb/s, 25 tbn&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Debug:RcUpdateIntraComplexity iFrameDqBits = 385808,iQStep= 2016,iIntraCmplx = 777788928&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Debug:[Rc]Layer 0: Frame timestamp = 0, Frame type = 2, encoding_qp = 30, average qp = 30, max qp = 33, min qp = 27, index = 0, iTid = 0, used = 385808, bitsperframe = 16000, target = 64000, remainingbits = -257808, skipbuffersize = 200000&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Debug:WelsEncoderEncodeExt() OutputInfo iLayerNum = 2,iFrameSize = 48252&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Debug:WelsEncoderEncodeExt() OutputInfo iLayerId = 0,iNalType = 0,iNalCount = 2, first Nal Length=18,uiSpatialId = 0,uiTemporalId = 0,iSubSeqId = 0&#xA;[libopenh264 @ 0x244aa00] [OpenH264] this = 0x0x244b4f0, Debug:WelsEncoderEncodeExt() OutputInfo iLayerId = 1,iNalType = 1,iNalCount = 6, first Nal Length=6057,uiSpatialId = 0,uiTemporalId = 0,iSubSeqId = 0&#xA;[libopenh264 @ 0x244aa00] 6 slices&#xA;./scriptBuild.sh: line 20: 10625 Segmentation fault      (core dumped) ./display&#xA;

    &#xA;

    As you can see, FFmpeg uses libopenh264 and configures it correctly. However, no matter what. It always returns the same Segmentation fault error...

    &#xA;

    I've used commands like this.

    &#xA;

    ffmpeg -s 640x480 -f video4linux2 -i /dev/video0 -r 30 -vcodec libopenh264 -an -f h264 udp://127.0.0.1:8080&#xA;

    &#xA;

    And it works perfectly, but I need to process the frames before sending them. Thats why I'm trying to use the libs.

    &#xA;

    My FFmpeg version is.

    &#xA;

    ffmpeg version 3.3.6 Copyright (c) 2000-2017 the FFmpeg developers&#xA;built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)&#xA;configuration: --disable-yasm --enable-shared --enable-libopenh264 --cc=&#x27;gcc -fPIC&#x27;&#xA;libavutil      55. 58.100 / 55. 58.100&#xA;libavcodec     57. 89.100 / 57. 89.100&#xA;libavformat    57. 71.100 / 57. 71.100&#xA;libavdevice    57.  6.100 / 57.  6.100&#xA;libavfilter     6. 82.100 /  6. 82.100&#xA;libswscale      4.  6.100 /  4.  6.100&#xA;libswresample   2.  7.100 /  2.  7.100&#xA;

    &#xA;

    I tried to get more information of the error using gbd, but it didn't give me debugging info.

    &#xA;

    How can I solve this problem ?

    &#xA;