
Recherche avancée
Autres articles (102)
-
Les vidéos
21 avril 2011, parComme 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, parCe 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, parPHP5 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 YustHi 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.786Thanks for your time and insights !
-
C++ OpenCV 3.4 / FFMPEG 3.4.1 VideoWriter and MP4 Output File Format
11 janvier 2019, par PhilBotI’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
StartingWhen 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'
StartingWhen 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'
StartingWhen 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
StartingWhen 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'
StartingWhen 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
StartingWhen 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'
StartingWhen 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)')'
StartingHere 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, &Downloader::writeFrame, frame);
//backgroundRun.waitForFinished();
}
reply->deleteLater();
qDebug() << "RequestTimer: " << performanceTimer.elapsed() << 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::openWhen 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
0000030Here 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 spanishgumI 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.100I 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: <_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.htmlTo 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.