Recherche avancée

Médias (0)

Mot : - Tags -/acrobat

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (102)

  • Les vidéos

    21 avril 2011, par

    Comme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
    Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
    Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...)

  • Emballe médias : à quoi cela sert ?

    4 février 2011, par

    Ce plugin vise à gérer des sites de mise en ligne de documents de tous types.
    Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ;

  • Configuration spécifique pour PHP5

    4 février 2011, par

    PHP5 est obligatoire, vous pouvez l’installer en suivant ce tutoriel spécifique.
    Il est recommandé dans un premier temps de désactiver le safe_mode, cependant, s’il est correctement configuré et que les binaires nécessaires sont accessibles, MediaSPIP devrait fonctionner correctement avec le safe_mode activé.
    Modules spécifiques
    Il est nécessaire d’installer certains modules PHP spécifiques, via le gestionnaire de paquet de votre distribution ou manuellement : php5-mysql pour la connectivité avec la (...)

Sur d’autres sites (7862)

  • Android YouTube Live v3 rtmp streaming via ffmpeg won't show preview

    14 décembre 2017, par Ariel Yust

    Hi everyone I’m breaking my head over this issue here,
    I’m developing an Android App for streaming content from the user’s device camera (back/front) to a live streaming on YouTube.

    Problem :
    YouTube Live shows "The health is good." in (Live Streaming->Events) but there’s nothing showing in the preview... in fact when I press play it tells me "An error has occurred, please try again later".

    Why is this happening ? what could be the problem ?

    What I’m doing :
    using google’s Oauth 2.0 and google api for login.
    YouTube V3 data api’s for creating a new broadcast and stream or use an opened stream - I’m using RTMP.

    I’m opening Camera Api1 and capturing the video into a SurfaceTexture, then I encode images and audio (MIC) using Android’s MediaCodec, save a 3+- seconds *.mp4 file locally and then once the muxer is done I stream the file with ffpmeg.

    String[] cmd = {
               "-i", filePath, //local file path (video is playable with vlc)
               "-strict", "experimental",
               "-acodec", "aac",
               "-ac", "1",
               "-ar", "44100",
               "-vcodec", "libx264",
               "-pix_fmt", "yuv420p",
               "-r", "30",
               "-g", "60",
               "-vb", "512k",
               "-profile:v", "main",
               "-preset", "medium",
               "-f", "flv",
               "-s", "1280x720",
               CreateBroadcast.rtmpUrl
           };

    ffmpeg.execute(cmd, responseHandler); //responseHandler notify me to send next file

    //how I set a new rtmpUrl, in CreateBroadcast.java
    rtmpUrl =
       returnedStream.getCdn().getIngestionInfo().getIngestionAddress() +
       File.separator +
       returnedStream.getCdn().getIngestionInfo().getStreamName();

    next file

    Using this ffmpeg library.

    ffmpeg process log :

    10:40:08.967 7..8/c.k.r D/Send: ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers, built with gcc 4.8 (GCC)
    10:40:08.968 7..8/c.k.r D/Send: configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
    10:40:08.969 7..8/c.k.r D/Send: onProgress ->   libavutil      55. 17.103 / 55. 17.103
    10:40:08.969 7..8/c.k.r D/Send: onProgress ->   libavcodec     57. 24.102 / 57. 24.102
    10:40:08.969 7..8/c.k.r D/Send: onProgress ->   libavformat    57. 25.100 / 57. 25.100
    10:40:08.970 7..8/c.k.r D/Send: onProgress ->   libavdevice    57.  0.101 / 57.  0.101
    10:40:08.970 7..8/c.k.r D/Send: onProgress ->   libavfilter     6. 31.100 /  6. 31.100
    10:40:08.971 7..8/c.k.r D/Send: onProgress ->   libswscale      4.  0.100 /  4.  0.100
    10:40:08.971 7..8/c.k.r D/Send: onProgress ->   libswresample   2.  0.101 /  2.  0.101
    10:40:08.971 7..8/c.k.r D/Send: onProgress ->   libpostproc    54.  0.100 / 54.  0.100
    10:40:09.202 7..8/c.k.r D/Send: onProgress -> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/Movies/realPoll_0.mp4':
    10:40:09.203 7..8/c.k.r D/Send: onProgress ->   Metadata:
    10:40:09.203 7..8/c.k.r D/Send: onProgress ->     major_brand     : mp42
    10:40:09.204 7..8/c.k.r D/Send: onProgress ->     minor_version   : 0
    10:40:09.204 7..8/c.k.r D/Send: onProgress ->     compatible_brands: isommp42
    10:40:09.204 7..8/c.k.r D/Send: onProgress ->     creation_time   : 2017-08:40:08
    10:40:09.205 7..8/c.k.r D/Send: onProgress ->     com.android.version: 6.0.1
    10:40:09.205 7..8/c.k.r D/Send: onProgress ->   Duration: 00:00:02.79, start: 0.000000, bitrate: 4080 kb/s
    10:40:09.206 7..8/c.k.r D/Send: onProgress ->     Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1280x720, 4166 kb/s, SAR 1:1 DAR 16:9, 30.60 fps, 90k tbr, 90k tbn, 180k tbc (default)
    10:40:09.206 7..8/c.k.r D/Send: onProgress ->     Metadata:
    10:40:09.207 7..8/c.k.r D/Send: onProgress ->       creation_time   : 2017-08:40:08
    10:40:09.207 7..8/c.k.r D/Send: onProgress ->       handler_name    : VideoHandle
    10:40:09.208 7..8/c.k.r D/Send: onProgress ->     Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 59 kb/s (default)
    10:40:09.208 7..8/c.k.r D/Send: onProgress ->     Metadata:
    10:40:09.209 7..8/c.k.r D/Send: onProgress ->       creation_time   : 2017-08:40:08
    10:40:09.209 7..8/c.k.r D/Send: onProgress ->       handler_name    : SoundHandle
    10:40:10.312 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] using SAR=1/1
    10:40:10.324 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] using cpu capabilities: none!
    10:40:10.457 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] profile Main, level 3.1
    10:40:10.458 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] 264 - core 148 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 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=60 keyint_min=6 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=512 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    10:40:10.494 7..8/c.k.r D/Send: onProgress -> Output #0, flv, to 'rtmp://a.rtmp.youtube.com/live2/b2mb-vjew-2205-8w39':
    10:40:10.495 7..8/c.k.r D/Send: onProgress ->   Metadata:
    10:40:10.496 7..8/c.k.r D/Send: onProgress ->     major_brand     : mp42
    10:40:10.499 7..8/c.k.r D/Send: onProgress ->     minor_version   : 0
    10:40:10.500 7..8/c.k.r D/Send: onProgress ->     compatible_brands: isommp42
    10:40:10.502 7..8/c.k.r D/Send: onProgress ->     com.android.version: 6.0.1
    10:40:10.504 7..8/c.k.r D/Send: onProgress ->     encoder         : Lavf57.25.100
    10:40:10.505 7..8/c.k.r D/Send: onProgress ->     Stream #0:0(eng): Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 512 kb/s, 30 fps, 1k tbn, 30 tbc (default)
    10:40:10.507 7..8/c.k.r D/Send: onProgress ->     Metadata:
    10:40:10.509 7..8/c.k.r D/Send: onProgress ->       creation_time   : 2017-08:40:08
    10:40:10.510 7..8/c.k.r D/Send: onProgress ->       handler_name    : VideoHandle
    10:40:10.511 7..8/c.k.r D/Send: onProgress ->       encoder         : Lavc57.24.102 libx264
    10:40:10.512 7..8/c.k.r D/Send: onProgress ->     Side data:
    10:40:10.512 7..8/c.k.r D/Send: onProgress ->       unknown side data type 10 (24 bytes)
    10:40:10.514 7..8/c.k.r D/Send: onProgress ->     Stream #0:1(eng): Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, mono, fltp, 69 kb/s (default)
    10:40:10.521 7..8/c.k.r D/Send: onProgress ->     Metadata:
    10:40:10.522 7..8/c.k.r D/Send: onProgress ->       creation_time   : 2017-08:40:08
    10:40:10.522 7..8/c.k.r D/Send: onProgress ->       handler_name    : SoundHandle
    10:40:10.522 7..8/c.k.r D/Send: onProgress ->       encoder         : Lavc57.24.102 aac
    10:40:10.523 7..8/c.k.r D/Send: onProgress -> Stream mapping:
    10:40:10.523 7..8/c.k.r D/Send: onProgress ->   Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
    10:40:10.524 7..8/c.k.r D/Send: onProgress ->   Stream #0:1 -> #0:1 (aac (native) -> aac (native))
    10:40:10.524 7..8/c.k.r D/Send: onProgress -> Press [q] to stop, [?] for help
    10:40:11.017 7..8/c.k.r D/Send: onProgress -> frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.92 bitrate=   4.3kbits/s speed=1.82x    
    10:40:11.300 7..8/c.k.r D/Send: onProgress -> Past duration 0.912331 too large
    10:40:11.342 7..8/c.k.r D/Send: onProgress -> Past duration 0.874321 too large
    10:40:11.376 7..8/c.k.r D/Send: onProgress -> Past duration 0.903664 too large
    10:40:11.411 7..8/c.k.r D/Send: onProgress -> Past duration 0.884666 too large
    10:40:11.545 7..8/c.k.r D/Send: onProgress -> frame=   12 fps= 12 q=0.0 size=       0kB time=00:00:01.03 bitrate=   3.9kbits/s dup=0 drop=2 speed=   1x    
    10:40:12.105 7..8/c.k.r D/Send: onProgress -> frame=   25 fps= 16 q=0.0 size=       0kB time=00:00:01.03 bitrate=   3.9kbits/s dup=0 drop=2 speed=0.667x    
                                                                          [ 10:40:12.379   191:  191 E/         ]
                                                                          invalid crash request of size 4 (from pid=7244 uid=0)
    10:40:12.598 7..8/c.k.r D/Send: onProgress -> frame=   32 fps= 15 q=0.0 size=       0kB time=00:00:02.02 bitrate=   2.0kbits/s dup=0 drop=2 speed=0.98x    
    10:40:12.598 7..8/c.k.r D/Send: onProgress -> Past duration 0.792656 too large
    10:40:12.675 7..8/c.k.r D/Send: onProgress -> Past duration 0.710991 too large
    10:40:12.708 7..8/c.k.r D/Send: onProgress -> Past duration 0.688332 too large
    10:40:12.725 7..8/c.k.r D/Send: onProgress -> Past duration 0.710655 too large
    10:40:12.760 7..8/c.k.r D/Send: onProgress -> Past duration 0.716331 too large
    10:40:12.775 7..8/c.k.r D/Send: onProgress -> Past duration 0.713661 too large
    10:40:12.791 7..8/c.k.r D/Send: onProgress -> Past duration 0.688332 too large
    10:40:12.825 7..8/c.k.r D/Send: onProgress -> Past duration 0.633659 too large
    10:40:12.857 7..8/c.k.r D/Send: onProgress -> Past duration 0.661324 too large
    10:40:12.876 7..8/c.k.r D/Send: onProgress -> Past duration 0.670998 too large
    10:40:12.942 7..8/c.k.r D/Send: onProgress -> Past duration 0.640327 too large
    10:40:17.761 7..8/c.k.r D/Send: onProgress -> frame=   47 fps=6.7 q=0.0 size=       0kB time=00:00:02.02 bitrate=   2.0kbits/s dup=0 drop=2 speed=0.288x    
    10:40:17.929 7..8/c.k.r D/Send: onProgress -> Past duration 0.605324 too large
    10:40:17.997 7..8/c.k.r D/Send: onProgress -> Past duration 0.614998 too large
    10:40:18.520 7..8/c.k.r D/Send: onProgress -> frame=   51 fps=6.6 q=42.0 size=       4kB time=00:00:02.02 bitrate=  17.0kbits/s dup=0 drop=2 speed=0.263x    
    10:40:18.520 7..8/c.k.r D/Send: onProgress -> Past duration 0.605995 too large
    10:40:19.607 7..8/c.k.r D/Send: onProgress -> Past duration 0.608986 too large
    10:40:19.843 7..8/c.k.r D/Send: onProgress -> frame=   53 fps=5.8 q=42.0 size=       9kB time=00:00:02.02 bitrate=  34.8kbits/s dup=0 drop=2 speed=0.223x    
    10:40:20.365 7..8/c.k.r D/Send: onProgress -> Past duration 0.614326 too large
    10:40:20.710 7..8/c.k.r D/Send: onProgress -> frame=   56 fps=5.7 q=41.0 size=      16kB time=00:00:02.02 bitrate=  66.2kbits/s dup=0 drop=2 speed=0.206x    
    10:40:21.348 7..8/c.k.r D/Send: onProgress -> frame=   58 fps=5.5 q=41.0 size=      20kB time=00:00:02.02 bitrate=  82.1kbits/s dup=0 drop=2 speed=0.193x    
    10:40:22.419 7..8/c.k.r D/Send: onProgress -> frame=   61 fps=5.2 q=41.0 size=      27kB time=00:00:02.02 bitrate= 108.3kbits/s dup=0 drop=2 speed=0.173x    
    10:40:23.232 7..8/c.k.r D/Send: onProgress -> frame=   64 fps=5.1 q=41.0 size=      33kB time=00:00:02.02 bitrate= 133.1kbits/s dup=0 drop=2 speed=0.161x    
    10:40:24.659 7..8/c.k.r D/Send: onProgress -> frame=   67 fps=4.8 q=40.0 size=      38kB time=00:00:02.02 bitrate= 154.5kbits/s dup=0 drop=2 speed=0.145x    
    10:40:25.591 7..8/c.k.r D/Send: onProgress -> frame=   69 fps=4.7 q=40.0 size=      42kB time=00:00:02.02 bitrate= 169.5kbits/s dup=0 drop=2 speed=0.138x    
    10:40:26.137 7..8/c.k.r D/Send: onProgress -> frame=   71 fps=4.6 q=39.0 size=      45kB time=00:00:02.02 bitrate= 183.6kbits/s dup=0 drop=2 speed=0.132x    
    10:40:26.913 7..8/c.k.r D/Send: onProgress -> frame=   73 fps=4.5 q=39.0 size=      46kB time=00:00:02.02 bitrate= 187.6kbits/s dup=0 drop=2 speed=0.125x    
    10:40:27.234 7..8/c.k.r D/Send: onProgress -> frame=   76 fps=4.5 q=38.0 size=      49kB time=00:00:02.48 bitrate= 162.7kbits/s dup=0 drop=2 speed=0.149x    
    10:40:27.295 7..8/c.k.r D/Send: onProgress -> Past duration 0.686333 too large
    10:40:27.801 7..8/c.k.r D/Send: onProgress -> Past duration 0.840324 too large
    10:40:28.269 7..8/c.k.r D/Send: onProgress -> frame=   78 fps=4.5 q=37.0 size=      53kB time=00:00:02.54 bitrate= 171.5kbits/s dup=0 drop=2 speed=0.147x    
    10:40:28.269 7..8/c.k.r D/Send: onProgress -> Past duration 0.739662 too large
    10:40:28.336 7..8/c.k.r D/Send: onProgress -> Past duration 0.671333 too large
    10:40:28.373 7..8/c.k.r D/Send: onProgress -> frame=   80 fps=4.5 q=37.0 size=      59kB time=00:00:02.54 bitrate= 188.7kbits/s dup=0 drop=2 speed=0.143x    
    10:40:41.320 7..8/c.k.r D/Send: onProgress -> [flv @ 0xb5ba9600] Failed to update header with correct duration.
    10:40:41.321 7..8/c.k.r D/Send: onProgress -> [flv @ 0xb5ba9600] Failed to update header with correct filesize.
    10:40:41.321 7..8/c.k.r D/Send: onProgress -> frame=   80 fps=2.6 q=-1.0 Lsize=     155kB time=00:00:02.70 bitrate= 468.9kbits/s dup=0 drop=2 speed=0.0877x    
    10:40:41.322 7..8/c.k.r D/Send: onProgress -> video:128kB audio:23kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.617489%
    10:40:41.332 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] frame I:2     Avg QP:28.63  size:  3516
    10:40:41.333 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] frame P:62    Avg QP:28.45  size:  1878
    10:40:41.333 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] frame B:16    Avg QP:29.68  size:   400
    10:40:41.334 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] consecutive B-frames: 71.2%  5.0%  3.8% 20.0%
    10:40:41.334 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] mb I  I16..4: 98.8%  0.0%  1.2%
    10:40:41.334 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] mb P  I16..4: 17.8%  0.0%  0.1%  P16..4: 17.0%  0.2%  0.7%  0.0%  0.0%    skip:64.2%
    10:40:41.335 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] mb B  I16..4:  0.1%  0.0%  0.0%  B16..8: 11.9%  0.0%  0.0%  direct: 1.0%  skip:87.0%  L0:16.0% L1:84.0% BI: 0.0%
    10:40:41.335 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] final ratefactor: 30.20
    10:40:41.336 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] coded y,uvDC,uvAC intra: 1.4% 20.4% 0.0% inter: 0.4% 14.0% 0.0%
    10:40:41.338 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] i16 v,h,dc,p: 66% 22%  7%  4%
    10:40:41.339 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu:  7% 19% 53%  4%  4%  3%  5%  2%  2%
    10:40:41.339 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] i8c dc,h,v,p: 71% 16% 12%  0%
    10:40:41.340 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] Weighted P-Frames: Y:6.5% UV:6.5%
    10:40:41.340 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] ref P L0: 85.6%  4.5%  7.7%  2.2%  0.0%
    10:40:41.341 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] ref B L0: 99.3%  0.7%
    10:40:41.341 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] ref B L1: 97.0%  3.0%
    10:40:41.342 7..8/c.k.r D/Send: onProgress -> [libx264 @ 0xb5b84800] kb/s:384.88
    10:40:41.421 7..8/c.k.r D/Send: onProgress -> [aac @ 0xb5b85000] Qavg: 1561.786
    10:40:41.423 7..8/c.k.r D/Send: onSuccess -> configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
    10:40:41.423 7..8/c.k.r D/Send:   libavutil      55. 17.103 / 55. 17.103
    10:40:41.423 7..8/c.k.r D/Send:   libavcodec     57. 24.102 / 57. 24.102
    10:40:41.423 7..8/c.k.r D/Send:   libavformat    57. 25.100 / 57. 25.100
    10:40:41.423 7..8/c.k.r D/Send:   libavdevice    57.  0.101 / 57.  0.101
    10:40:41.424 7..8/c.k.r D/Send:   libavfilter     6. 31.100 /  6. 31.100
    10:40:41.424 7..8/c.k.r D/Send:   libswscale      4.  0.100 /  4.  0.100
    10:40:41.424 7..8/c.k.r D/Send:   libswresample   2.  0.101 /  2.  0.101
    10:40:41.424 7..8/c.k.r D/Send:   libpostproc    54.  0.100 / 54.  0.100
    10:40:41.424 7..8/c.k.r D/Send: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/Movies/realPoll_0.mp4':
    10:40:41.424 7..8/c.k.r D/Send:   Metadata:
    10:40:41.424 7..8/c.k.r D/Send:     major_brand     : mp42
    10:40:41.424 7..8/c.k.r D/Send:     minor_version   : 0
    10:40:41.424 7..8/c.k.r D/Send:     compatible_brands: isommp42
    10:40:41.424 7..8/c.k.r D/Send:     creation_time   : 2017-08:40:08
    10:40:41.424 7..8/c.k.r D/Send:     com.android.version: 6.0.1
    10:40:41.424 7..8/c.k.r D/Send:   Duration: 00:00:02.79, start: 0.000000, bitrate: 4080 kb/s
    10:40:41.424 7..8/c.k.r D/Send:     Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1280x720, 4166 kb/s, SAR 1:1 DAR 16:9, 30.60 fps, 90k tbr, 90k tbn, 180k tbc (default)
    10:40:41.424 7..8/c.k.r D/Send:     Metadata:
    10:40:41.424 7..8/c.k.r D/Send:       creation_time   : 2017-08:40:08
    10:40:41.424 7..8/c.k.r D/Send:       handler_name    : VideoHandle
    10:40:41.424 7..8/c.k.r D/Send:     Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 59 kb/s (default)
    10:40:41.424 7..8/c.k.r D/Send:     Metadata:
    10:40:41.424 7..8/c.k.r D/Send:       creation_time   : 2017-08:40:08
    10:40:41.424 7..8/c.k.r D/Send:       handler_name    : SoundHandle
    10:40:41.425 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] using SAR=1/1
    10:40:41.425 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] using cpu capabilities: none!
    10:40:41.425 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] profile Main, level 3.1
    10:40:41.425 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] 264 - core 148 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 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=60 keyint_min=6 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=512 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    10:40:41.425 7..8/c.k.r D/Send: Output #0, flv, to 'rtmp://a.rtmp.youtube.com/live2/b2mb-vjew-2205-8w39':
    10:40:41.425 7..8/c.k.r D/Send:   Metadata:
    10:40:41.425 7..8/c.k.r D/Send:     major_brand     : mp42
    10:40:41.425 7..8/c.k.r D/Send:     minor_version   : 0
    10:40:41.425 7..8/c.k.r D/Send:     compatible_brands: isommp42
    10:40:41.425 7..8/c.k.r D/Send:     com.android.version: 6.0.1
    10:40:41.425 7..8/c.k.r D/Send:     encoder         : Lavf57.25.100
    10:40:41.425 7..8/c.k.r D/Send:     Stream #0:0(eng): Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 512 kb/s, 30 fps, 1k tbn, 30 tbc (default)
    10:40:41.425 7..8/c.k.r D/Send:     Metadata:
    10:40:41.425 7..8/c.k.r D/Send:       creation_time   : 2017-08:40:08
    10:40:41.425 7..8/c.k.r D/Send:       handler_name    : VideoHandle
    10:40:41.425 7..8/c.k.r D/Send:       encoder         : Lavc57.24.102 libx264
    10:40:41.425 7..8/c.k.r D/Send:     Side data:
    10:40:41.425 7..8/c.k.r D/Send:       unknown side data type 10 (24 bytes)
    10:40:41.425 7..8/c.k.r D/Send:     Stream #0:1(eng): Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, mono, fltp, 69 kb/s (default)
    10:40:41.426 7..8/c.k.r D/Send:     Metadata:
    10:40:41.426 7..8/c.k.r D/Send:       creation_time   : 2017-08:40:08
    10:40:41.426 7..8/c.k.r D/Send:       handler_name    : SoundHandle
    10:40:41.426 7..8/c.k.r D/Send:       encoder         : Lavc57.24.102 aac
    10:40:41.426 7..8/c.k.r D/Send: Stream mapping:
    10:40:41.426 7..8/c.k.r D/Send:   Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
    10:40:41.427 7..8/c.k.r D/Send:   Stream #0:1 -> #0:1 (aac (native) -> aac (native))
    10:40:41.427 7..8/c.k.r D/Send: Press [q] to stop, [?] for help
    10:40:41.427 7..8/c.k.r D/Send: frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.92 bitrate=   4.3kbits/s speed=1.82x    
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.912331 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.874321 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.903664 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.884666 too large
    10:40:41.427 7..8/c.k.r D/Send: frame=   12 fps= 12 q=0.0 size=       0kB time=00:00:01.03 bitrate=   3.9kbits/s dup=0 drop=2 speed=   1x    
    10:40:41.427 7..8/c.k.r D/Send: frame=   25 fps= 16 q=0.0 size=       0kB time=00:00:01.03 bitrate=   3.9kbits/s dup=0 drop=2 speed=0.667x    
    10:40:41.427 7..8/c.k.r D/Send: frame=   32 fps= 15 q=0.0 size=       0kB time=00:00:02.02 bitrate=   2.0kbits/s dup=0 drop=2 speed=0.98x    
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.792656 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.710991 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.688332 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.710655 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.716331 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.713661 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.688332 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.633659 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.661324 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.670998 too large
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.640327 too large
    10:40:41.427 7..8/c.k.r D/Send: frame=   47 fps=6.7 q=0.0 size=       0kB time=00:00:02.02 bitrate=   2.0kbits/s dup=0 drop=2 speed=0.288x    
    10:40:41.427 7..8/c.k.r D/Send: Past duration 0.605324 too large
    10:40:41.428 7..8/c.k.r D/Send: Past duration 0.614998 too large
    10:40:41.428 7..8/c.k.r D/Send: frame=   51 fps=6.6 q=42.0 size=       4kB time=00:00:02.02 bitrate=  17.0kbits/s dup=0 drop=2 speed=0.263x    
    10:40:41.428 7..8/c.k.r D/Send: Past duration 0.605995 too large
    10:40:41.428 7..8/c.k.r D/Send: Past duration 0.608986 too large
    10:40:41.428 7..8/c.k.r D/Send: frame=   53 fps=5.8 q=42.0 size=       9kB time=00:00:02.02 bitrate=  34.8kbits/s dup=0 drop=2 speed=0.223x    
    10:40:41.428 7..8/c.k.r D/Send: Past duration 0.614326 too large
    10:40:41.428 7..8/c.k.r D/Send: frame=   56 fps=5.7 q=41.0 size=      16kB time=00:00:02.02 bitrate=  66.2kbits/s dup=0 drop=2 speed=0.206x    
    10:40:41.428 7..8/c.k.r D/Send: frame=   58 fps=5.5 q=41.0 size=      20kB time=00:00:02.02 bitrate=  82.1kbits/s dup=0 drop=2 speed=0.193x    
    10:40:41.428 7..8/c.k.r D/Send: frame=   61 fps=5.2 q=41.0 size=      27kB time=00:00:02.02 bitrate= 108.3kbits/s dup=0 drop=2 speed=0.173x    
    10:40:41.428 7..8/c.k.r D/Send: frame=   64 fps=5.1 q=41.0 size=      33kB time=00:00:02.02 bitrate= 133.1kbits/s dup=0 drop=2 speed=0.161x    
    10:40:41.428 7..8/c.k.r D/Send: frame=   67 fps=4.8 q=40.0 size=      38kB time=00:00:02.02 bitrate= 154.5kbits/s dup=0 drop=2 speed=0.145x    
    10:40:41.428 7..8/c.k.r D/Send: frame=   69 fps=4.7 q=40.0 size=      42kB time=00:00:02.02 bitrate= 169.5kbits/s dup=0 drop=2 speed=0.138x    
    10:40:41.428 7..8/c.k.r D/Send: frame=   71 fps=4.6 q=39.0 size=      45kB time=00:00:02.02 bitrate= 183.6kbits/s dup=0 drop=2 speed=0.132x    
    10:40:41.428 7..8/c.k.r D/Send: frame=   73 fps=4.5 q=39.0 size=      46kB time=00:00:02.02 bitrate= 187.6kbits/s dup=0 drop=2 speed=0.125x    
    10:40:41.428 7..8/c.k.r D/Send: frame=   76 fps=4.5 q=38.0 size=      49kB time=00:00:02.48 bitrate= 162.7kbits/s dup=0 drop=2 speed=0.149x    
    10:40:41.428 7..8/c.k.r D/Send: Past duration 0.686333 too large
    10:40:41.428 7..8/c.k.r D/Send: Past duration 0.840324 too large
    10:40:41.428 7..8/c.k.r D/Send: frame=   78 fps=4.5 q=37.0 size=      53kB time=00:00:02.54 bitrate= 171.5kbits/s dup=0 drop=2 speed=0.147x    
    10:40:41.428 7..8/c.k.r D/Send: Past duration 0.739662 too large
    10:40:41.429 7..8/c.k.r D/Send: Past duration 0.671333 too large
    10:40:41.429 7..8/c.k.r D/Send: frame=   80 fps=4.5 q=37.0 size=      59kB time=00:00:02.54 bitrate= 188.7kbits/s dup=0 drop=2 speed=0.143x    
    10:40:41.429 7..8/c.k.r D/Send: [flv @ 0xb5ba9600] Failed to update header with correct duration.
    10:40:41.429 7..8/c.k.r D/Send: [flv @ 0xb5ba9600] Failed to update header with correct filesize.
    10:40:41.429 7..8/c.k.r D/Send: frame=   80 fps=2.6 q=-1.0 Lsize=     155kB time=00:00:02.70 bitrate= 468.9kbits/s dup=0 drop=2 speed=0.0877x    
    10:40:41.429 7..8/c.k.r D/Send: video:128kB audio:23kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.617489%
    10:40:41.429 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] frame I:2     Avg QP:28.63  size:  3516
    10:40:41.429 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] frame P:62    Avg QP:28.45  size:  1878
    10:40:41.429 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] frame B:16    Avg QP:29.68  size:   400
    10:40:41.429 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] consecutive B-frames: 71.2%  5.0%  3.8% 20.0%
    10:40:41.429 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] mb I  I16..4: 98.8%  0.0%  1.2%
    10:40:41.429 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] mb P  I16..4: 17.8%  0.0%  0.1%  P16..4: 17.0%  0.2%  0.7%  0.0%  0.0%    skip:64.2%
    10:40:41.429 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] mb B  I16..4:  0.1%  0.0%  0.0%  B16..8: 11.9%  0.0%  0.0%  direct: 1.0%  skip:87.0%  L0:16.0% L1:84.0% BI: 0.0%
    10:40:41.429 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] final ratefactor: 30.20
    10:40:41.429 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] coded y,uvDC,uvAC intra: 1.4% 20.4% 0.0% inter: 0.4% 14.0% 0.0%
    10:40:41.429 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] i16 v,h,dc,p: 66% 22%  7%  4%
    10:40:41.429 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu:  7% 19% 53%  4%  4%  3%  5%  2%  2%
    10:40:41.429 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] i8c dc,h,v,p: 71% 16% 12%  0%
    10:40:41.430 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] Weighted P-Frames: Y:6.5% UV:6.5%
    10:40:41.430 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] ref P L0: 85.6%  4.5%  7.7%  2.2%  0.0%
    10:40:41.430 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] ref B L0: 99.3%  0.7%
    10:40:41.430 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] ref B L1: 97.0%  3.0%
    10:40:41.430 7..8/c.k.r D/Send: [libx264 @ 0xb5b84800] kb/s:384.88
    10:40:41.430 7..8/c.k.r D/Send: [aac @ 0xb5b85000] Qavg: 1561.786

    Thanks for your time and insights !

  • C++ OpenCV 3.4 / FFMPEG 3.4.1 VideoWriter and MP4 Output File Format

    11 janvier 2019, par PhilBot

    I’m running on an ARM BeagleBone X-15 Debian machine with Linux Kernel 4.9.35-ti-r44. In my C++ ( Qt 5 ) application, I want to save my cv::Mat frames to an MP4 format video. I have libx264 installed and compiled from scratch both ffmpeg and OpenCv. I can successfully record and view video with MJPEG with the AVI video container type but not MP4. Whenever I try to write an MP4 video, I get run time errors of the form :

    OpenCV: FFMPEG: tag 0x44495658/'XVID' is not supported with codec id 13 and format 'mp4 / MP4 (MPEG-4 Part 14)'
    OpenCV: FFMPEG: fallback to use tag 0x00000020/' ???'

    I’ve tried various Google answers but none have worked.

    Relevant code :

    cv::Size frameSize = frame.size();

    qDebug() << "Initializing Video Recording to save Video file here: " << destinationFileName;

    std::string filename = destinationFileName.toStdString();
    //int fcc =   CV_FOURCC('M','J','P','G');
    //int fcc =   CV_FOURCC('X','2','6','4');
    int fcc = CV_FOURCC('X','V','I','D');
    int fps =   1;
    videoRecorder = new cv::VideoWriter(filename,fcc,fps,frameSize);

    ...

    videoRecorder->write(frame);

    I’ve downloaded and built the latest OpenCV 3.4 but the problem persists.
    How can I write to an MP4 File with OpenCV’s video writer ?

    When I try the ’X’,’2’,’6’,’4’ format I get the error :

       Initializing Video Recording to save Video file here:  "/tmp/Garage.mp4"
    OpenCV: FFMPEG: tag 0x34363258/'X264' is not supported with codec id 28 and format 'mp4 / MP4 (MPEG-4 Part 14)'
    OpenCV: FFMPEG: fallback to use tag 0x31637661/'avc1'
    [h264_v4l2m2m @ 0x81042020] Could not find a valid device
    [h264_v4l2m2m @ 0x81042020] can't configure encoder
    Could not open codec 'h264_v4l2m2m': Unspecified error
    Starting

    When I try the ’X’,’V’,’I’,’D’ format I get the error :

    Initializing Video Recording to save Video file here:  "/tmp/Garage.mp4"
    OpenCV: FFMPEG: tag 0x44495658/'XVID' is not supported with codec id 13 and format 'mp4 / MP4 (MPEG-4 Part 14)'
    OpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'
    Starting

    When I try the ’M’,’P’,’E’,’G’ format I get the error :

    Initializing Video Recording to save Video file here:  "/tmp/Garage.mp4"
    OpenCV: FFMPEG: tag 0x4745504d/'MPEG' is not supported with codec id 2 and format 'mp4 / MP4 (MPEG-4 Part 14)'
    OpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'
    Starting

    When I try the ’H’,’2’,’6’,’4’ format I get the error :

    OpenCV: FFMPEG: tag 0x34363248/'H264' is not supported with codec id 28 and format 'mp4 / MP4 (MPEG-4 Part 14)'
    OpenCV: FFMPEG: fallback to use tag 0x31637661/'avc1'
    [h264_v4l2m2m @ 0x7fdde340] Could not find a valid device
    [h264_v4l2m2m @ 0x7fdde340] can't configure encoder
    Could not open codec 'h264_v4l2m2m': Unspecified error
    Starting

    When I try the ’M’,’P’,’4’,’V’ format I get the error :

    Initializing Video Recording to save Video file here:  "/tmp/Garage.mp4"
    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 0x7634706d/'mp4v'
    Starting

    When I try the ’A’,’V’,’C’,’1’ format I get the error :

    Initializing Video Recording to save Video file here:  "/tmp/Garage.mp4"
    OpenCV: FFMPEG: tag 0x31435641/'AVC1' is not supported with codec id 28 and format 'mp4 / MP4 (MPEG-4 Part 14)'
    OpenCV: FFMPEG: fallback to use tag 0x31637661/'avc1'
    [h264_v4l2m2m @ 0x810f5f50] Could not find a valid device
    [h264_v4l2m2m @ 0x810f5f50] can't configure encoder
    Could not open codec 'h264_v4l2m2m': Unspecified error
    Starting

    When I try the ’D’,’I’,’V’,’X’ format I get the error :

    Initializing Video Recording to save Video file here:  "/tmp/Garage.mp4"
    OpenCV: FFMPEG: tag 0x58564944/'DIVX' is not supported with codec id 13 and format 'mp4 / MP4 (MPEG-4 Part 14)'
    OpenCV: FFMPEG: fallback to use tag 0x7634706d/'mp4v'
    Starting

    When I try the 0x21 format I get the error :

    Initializing Video Recording to save Video file here:  "/tmp/Garage.mp4"
    OpenCV: FFMPEG: tag 0x00000021/'!???' is not found (format 'mp4 / MP4 (MPEG-4 Part 14)')'
    Starting

    Here is my complete class which shows all tried formats :

       #include "downloader.h"

    Downloader::Downloader(QString url, QString destinationFile) : downloadUrl(url) , destinationFileName(destinationFile)
    {

       didInitializeVideoWriter = false;

       qDebug() << "Initialized Downloader...";

    }

    Downloader::~Downloader() {

       videoRecorder->release();
       delete videoRecorder;

    }

    void Downloader::doDownload()
    {
       networkManager = new QNetworkAccessManager(this);

       connect(networkManager, SIGNAL(finished(QNetworkReply*)),
               this, SLOT(replyFinished(QNetworkReply*)));

       networkManager->get(QNetworkRequest(QUrl(downloadUrl)));
    }

    void Downloader::writeFrame(cv::Mat frame) {

       QMutexLocker locker(&videoFrameMutex);

       videoRecorder->write(frame);

    }

    void Downloader::replyFinished(QNetworkReply *reply)
    {

       if(reply->error())
       {
           qDebug() << "ERROR!";
           qDebug() << reply->errorString();
       }
       else
       {
           //qDebug() << reply->header(QNetworkRequest::ContentTypeHeader).toString();
           //qDebug() << reply->header(QNetworkRequest::LastModifiedHeader).toDateTime().toString();
           //qDebug() << reply->header(QNetworkRequest::ContentLengthHeader).toULongLong();
           qDebug() << reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
           qDebug() << reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toString();

           QString tempFileName = destinationFileName;
           QString jpegTempFilename = QString("%1").arg(tempFileName.replace("mp4","jpeg"));

           qDebug() << "Overwriting: " << jpegTempFilename;
           QFile *file = new QFile(jpegTempFilename);
           if(file->open(QFile::WriteOnly))
           {
               file->write(reply->readAll());
               file->flush();
               file->close();
           }
           delete file;

           cv::Mat frame = imread(jpegTempFilename.toStdString(), CV_LOAD_IMAGE_COLOR);   // CV_LOAD_IMAGE_COLOR (>0) loads the image in the BGR format
           cv::cvtColor(frame,frame,CV_BGR2RGB);

           // Now lazy load the recorder
           if ( !didInitializeVideoWriter ) {

               cv::Size frameSize = frame.size();

               qDebug() << "Initializing Video Recording to save Video file here: " << destinationFileName;

               std::string filename = destinationFileName.toStdString();
               //int fcc =   CV_FOURCC('M','J','P','G');
               int fcc =   CV_FOURCC('X','2','6','4');
               //int fcc = CV_FOURCC('X','V','I','D');
               //int fcc = CV_FOURCC('M','P','E','G');
               //int fcc = CV_FOURCC('H','2','6','4');
               //int fcc = CV_FOURCC('M','P','4','V');
               //int fcc = CV_FOURCC('A','V','C','1');
               //int fcc = CV_FOURCC('D','I','V','X');
               //int fcc = 0x21;
               //int fcc = 0x00000021;
               int fps =   1;
               videoRecorder = new cv::VideoWriter(filename,fcc,fps,frameSize);

               qDebug() << "Starting";
               frameCounter = 1;
               performanceTimer.start();

               didInitializeVideoWriter = true;

           }

           cv::putText(frame,"[REC]",cv::Point(50,50),5,1,cv::Scalar(0,0,225));

           QFuture<void> backgroundRun = QtConcurrent::run(this, &amp;Downloader::writeFrame, frame);
           //backgroundRun.waitForFinished();

       }

       reply->deleteLater();

       qDebug() &lt;&lt; "RequestTimer: " &lt;&lt; performanceTimer.elapsed() &lt;&lt; frameCounter;

       // Requests Again
       networkManager->get(QNetworkRequest(QUrl(downloadUrl)));

       frameCounter++;

       performanceTimer.restart();


    }
    </void>

    Update - I tried ’a’,’v’,’c’,’1’ and unfortunately that also does not work :

    Initializing Video Recording to save Video file here:  "/tmp/Garage.mp4"
    [h264_v4l2m2m @ 0x810f6aa0] Could not find a valid device
    [h264_v4l2m2m @ 0x810f6aa0] can't configure encoder
    Could not open codec 'h264_v4l2m2m': Unspecified error

    (qt-downloader:6234): GStreamer-CRITICAL **: gst_element_make_from_uri: assertion 'gst_uri_is_valid (uri)' failed
    OpenCV Error: Unspecified error (GStreamer: cannot link elements
    ) in CvVideoWriter_GStreamer::open, file /media/usb/opencv/modules/videoio/src/cap_gstreamer.cpp, line 1635
    VIDEOIO(cvCreateVideoWriter_GStreamer (filename, fourcc, fps, frameSize, is_color)): raised OpenCV exception:

    /media/usb/opencv/modules/videoio/src/cap_gstreamer.cpp:1635: error: (-2) GStreamer: cannot link elements
    in function CvVideoWriter_GStreamer::open

    When I try the X264 FOURCC, the mp4 file is 48 bytes and never grows :

    Initializing Video Recording to save Video file here:  "/tmp/Garage.mp4"
    OpenCV: FFMPEG: tag 0x34363258/'X264' is not supported with codec id 27 and format 'mp4 / MP4 (MPEG-4 Part 14)'
    OpenCV: FFMPEG: fallback to use tag 0x31637661/'avc1'

    Static Size :

    debian@BeagleBoard-X15:/tmp$ ls -lrt Garage.*
    -rw-r--r-- 1 debian debian     48 Dec 24 21:13 Garage.mp4
    -rw-r--r-- 1 debian debian 100424 Dec 24 21:14 Garage.jpeg
    debian@BeagleBoard-X15:/tmp$ hexdump Garage.mp4
    0000000 0000 2000 7466 7079 7369 6d6f 0000 0002
    0000010 7369 6d6f 7369 326f 7661 3163 706d 3134
    0000020 0000 0800 7266 6565 0000 0000 646d 7461
    0000030

    Here is my ffmpeg build conf :

    debian@BeagleBoard-X15:/tmp$ ffmpeg -buildconf
    ffmpeg version N-89524-g74f408cc8e Copyright (c) 2000-2017 the FFmpeg developers
     built with gcc 6.3.0 (Debian 6.3.0-18) 20170516
     configuration: --enable-gpl --enable-libx264 --enable-pthreads --enable-static --extra-cflags=-I./x264/include --extra-ldflags=-L./x264/lib --extra-libs=-ldl
     libavutil      56.  6.100 / 56.  6.100
     libavcodec     58.  8.100 / 58.  8.100
     libavformat    58.  3.100 / 58.  3.100
     libavdevice    58.  0.100 / 58.  0.100
     libavfilter     7.  7.100 /  7.  7.100
     libswscale      5.  0.101 /  5.  0.101
     libswresample   3.  0.101 /  3.  0.101
     libpostproc    55.  0.100 / 55.  0.100

     configuration:
       --enable-gpl
       --enable-libx264
       --enable-pthreads
       --enable-static
       --extra-cflags=-I./x264/include
       --extra-ldflags=-L./x264/lib
       --extra-libs=-ldl
  • How do I properly enable ffmpeg for matplotlib.animation ?

    7 mars 2017, par spanishgum

    I have covered a lot of ground on stack so far trying to get ffmpeg going so I can make a timelapse video.

    I am on a CentOS 7 machine, running python3.7.0a0.

    python3
    >>> import numpy as np
    >>> np.__version__
    '1.12.0'
    >>> import matplotlib as mpl
    >>> mpl.__version__
    '2.0.0'
    >>> import mpl_toolkits.basemap as base
    >>> base.__version__
    '1.0.7'

    I found this github gist on installing ffmpeg. I used the chromium source, and installed without a prefix option (using the default).

    I have confirmed that ffmpeg is installed, although I don’t know anything about testing whether it works.

    which ffmpeg
    /usr/local/bin/ffmpeg

    ffmpeg -version
    ffmpeg version N-83533-gada281d Copyright (c) 2000-2017 the FFmpeg dev elopers
    built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-11
    configuration:
    libavutil      55. 47.100 / 55. 47.100
    libavcodec     57. 80.100 / 57. 80.100
    libavformat    57. 66.102 / 57. 66.102
    libavdevice    57.  2.100 / 57.  2.100
    libavfilter     6. 73.100 /  6. 73.100
    libswscale      4.  3.101 /  4.  3.101
    libswresample   2.  4.100 /  2.  4.100

    I tried to run a few sample examples I found online :

    [1] http://matplotlib.org/examples/animation/basic_example_writer.html

    [2] http://stackoverflow.com/a/23098090/3454650

    Everything works fine up until I try to save the animation file.

    [1]

    anim.save('basic_animation.mp4', writer = FFwriter, fps=30, extra_args=['-vcodec', 'libx264'])

    [2]

    im_ani.save('im.mp4', writer=writer)

    I found here that explictly setting the path to ffmpeg might be necessary so I added this to the top of the test scripts :

    plt.rcParams['animation.ffmpeg_path'] = '/usr/local/bin/ffmpeg'

    I tried a few more tweaks in the code but always get the same response, which I do not know how to begin deciphering :

    Traceback (most recent call last):
     File "testanim.py", line 27, in <module>
       writer.grab_frame()
     File "/usr/local/lib/python3.7/contextlib.py", line 100, in __exit__
       self.gen.throw(type, value, traceback)
     File "/usr/local/lib/python3.7/site-packages/matplotlib/animation.py", line 256, in saving
       self.finish()
     File "/usr/local/lib/python3.7/site-packages/matplotlib/animation.py", line 276, in finish
       self.cleanup()
     File "/usr/local/lib/python3.7/site-packages/matplotlib/animation.py", line 311, in cleanup
       out, err = self._proc.communicate()
     File "/usr/local/lib/python3.7/subprocess.py", line 836, in communicate
       stdout, stderr = self._communicate(input, endtime, timeout)
     File "/usr/local/lib/python3.7/subprocess.py", line 1474, in _communicate
       selector.register(self.stdout, selectors.EVENT_READ)
     File "/usr/local/lib/python3.7/selectors.py", line 351, in register
       key = super().register(fileobj, events, data)
     File "/usr/local/lib/python3.7/selectors.py", line 237, in register
       key = SelectorKey(fileobj, self._fileobj_lookup(fileobj), events, data)
     File "/usr/local/lib/python3.7/selectors.py", line 224, in _fileobj_lookup
       return _fileobj_to_fd(fileobj)
     File "/usr/local/lib/python3.7/selectors.py", line 39, in _fileobj_to_fd
       "{!r}".format(fileobj)) from None
    ValueError: Invalid file object: &lt;_io.BufferedReader name=6>
    </module>

    Is there something with my configuration that is malformed ? I searched google for this error for some time but never found anything relevant to animations / ffmpeg. Any help would be greatly appreciated.


    UPDATE :

    @LordNeckBeard pointed me here : https://trac.ffmpeg.org/wiki/CompilationGuide/Centos

    I ran into problems with installing the x264 encoding dependency. Some files in libavcodec/*.c (in the make output) were reporting undefined references to several functions. After a wild goose chase found this : https://mailman.videolan.org/pipermail/x264-devel/2015-February/010971.html

    To fix the x264 installation, I simply added some configure flags :

    ./configure --enable-static --enable-shared --extra-ldflags="-lswresample -llzma"

    UPDATE :

    So everything installed fine after fixing the libx264 problems. I went ahead and copied the ffmpeg binary from the ffmpeg_build folder into /usr/local/bin/ffmpeg.

    After running the script I was getting problems where ffmpeg could not find the libx264 shared object. I think I will have to recompile everything using different prefixes. My intuition tells me there are old files laying around after I have messed with everything, using some configuration that is broken.

    So I decided maybe I should just try to use NUX : http://linoxide.com/linux-how-to/install-ffmpeg-centos-7/
    I installed ffmpeg using the new rpm, but to no avail. I still was not able to run ffmpeg because of a missing shared object.

    Finally, instead of usiong files copied into my /usr/local/bin folder, I ran ffmpeg directly from the build bin directory. Turns out that this does work properly !

    So in essence, if I want to install ffmpeg system wide, I need to manually compile from sources again but using a nonlocal prefix.