Recherche avancée

Médias (0)

Mot : - Tags -/metadatas

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

Autres articles (75)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • Librairies et binaires spécifiques au traitement vidéo et sonore

    31 janvier 2010, par

    Les logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
    Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
    Binaires complémentaires et facultatifs flvtool2 : (...)

  • Personnaliser les catégories

    21 juin 2013, par

    Formulaire de création d’une catégorie
    Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
    Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
    On peut modifier ce formulaire dans la partie :
    Administration > Configuration des masques de formulaire.
    Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
    Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)

Sur d’autres sites (3530)

  • ffmpeg - How to determine if -movflags faststart is enabled ? PHP

    6 juillet 2017, par IIIOXIII

    While I am able to encode an mp4 file which I can play on my local windows machine, I am having trouble encoding files to mp4 which are readable when streaming by safari, etc.

    After a bit of reading, I believe my issue is that I must move the metadata from the end of the file to the beginning in order for the converted mp4 files to be streamable.

    To that end, I am trying to find out if the build of ffmpeg that I am currently using is able to use the -movflags faststart option through php - as my current outputted mp4 files are not working when streamed online.

    This is the way I am now echoing the -help, -formats, -codecs, but I am not seeing anything about -movflags faststart in any of the lists :

    exec($ffmpegPath." -help", $codecArr);
    for($ii=0;$iibr>';
    }

    Is there a similar method of determining if -movflags fastart is available to my ffmpeg build ? Any other way ? Should it be listed with any of the previously suggested commands ? -help/-formats ?

    Can someone that knows it is enabled in their version of ffmpeg check to see if it is listed under -help or -formats, etc.?

    TIA.

    EDIT : COMPLETE CONSOLE OUTPUT FOR BOTH THE CONVERSION COMMAND AND -MOVFLAGS COMMAND BELOW :

    COMMAND :

    ffmpeg -i C:\vidtests\Wildlife.wmv -s 640x480 C:\vidtests\Wildlife.mp4

    OUTPUT :

    ffmpeg version N-54207-ge59fb3f Copyright (c) 2000-2013 the FFmpeg developers
     built on Jun 25 2013 21:55:00 with gcc 4.7.3 (GCC)
     configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
    isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
    le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
    e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
    ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
    ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
    eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-
    amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
    enable-libxvid --enable-zlib
     libavutil      52. 37.101 / 52. 37.101
     libavcodec     55. 17.100 / 55. 17.100
     libavformat    55. 10.100 / 55. 10.100
     libavdevice    55.  2.100 / 55.  2.100
     libavfilter     3. 77.101 /  3. 77.101
     libswscale      2.  3.100 /  2.  3.100
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  3.100 / 52.  3.100
    [asf @ 00000000002ed760] Stream #0: not enough frames to estimate rate; consider
    increasing probesize
    Guessed Channel Layout for  Input Stream #0.0 : stereo
    Input #0, asf, from 'C:\vidtests\Wildlife.wmv'
    :
     Metadata:
       SfOriginalFPS   : 299700
       WMFSDKVersion   : 11.0.6001.7000
       WMFSDKNeeded    : 0.0.0.0000
       comment         : Footage: Small World Productions, Inc; Tourism New Zealand
    | Producer: Gary F. Spradling | Music: Steve Ball
       title           : Wildlife in HD
       copyright       : ┬⌐ 2008 Microsoft Corporation
       IsVBR           : 0
       DeviceConformanceTemplate: AP@L3
     Duration: 00:00:30.09, start: 0.000000, bitrate: 6977 kb/s
       Stream #0:0(eng): Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, stereo, fltp
    , 192 kb/s
       Stream #0:1(eng): Video: vc1 (Advanced) (WVC1 / 0x31435657), yuv420p, 1280x7
    20, 5942 kb/s, 29.97 tbr, 1k tbn, 1k tbc
    [libx264 @ 00000000002e6980] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64

    [libx264 @ 00000000002e6980] profile High, level 3.0
    [libx264 @ 00000000002e6980] 264 - core 133 r2334 a3ac64b - H.264/MPEG-4 AVC cod
    ec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 r
    ef=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_pski
    p=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 deci
    mate=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=2
    5 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.6
    0 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to 'C:\vidtests\Wildlife.mp4':

     Metadata:
       SfOriginalFPS   : 299700
       WMFSDKVersion   : 11.0.6001.7000
       WMFSDKNeeded    : 0.0.0.0000
       comment         : Footage: Small World Productions, Inc; Tourism New Zealand
    | Producer: Gary F. Spradling | Music: Steve Ball
       title           : Wildlife in HD
       copyright       : ┬⌐ 2008 Microsoft Corporation
       IsVBR           : 0
       DeviceConformanceTemplate: AP@L3
       encoder         : Lavf55.10.100
       Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 6
    40x480, q=-1--1, 30k tbn, 29.97 tbc
       Stream #0:1(eng): Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 44100
    Hz, stereo, s16, 128 kb/s
    Stream mapping:
     Stream #0:1 -> #0:0 (vc1 -> libx264)
     Stream #0:0 -> #0:1 (wmav2 -> libvo_aacenc)
    Press [q] to stop, [?] for help
    frame=   53 fps= 49 q=29.0 size=       0kB time=00:00:00.13 bitrate=   2.9kbits/
    frame=   63 fps= 40 q=29.0 size=       0kB time=00:00:00.46 bitrate=   0.8kbits/
    frame=   74 fps= 35 q=29.0 size=       0kB time=00:00:00.83 bitrate=   0.5kbits/
    frame=   85 fps= 32 q=29.0 size=       0kB time=00:00:01.20 bitrate=   0.3kbits/
    frame=   95 fps= 30 q=29.0 size=       0kB time=00:00:01.53 bitrate=   0.3kbits/
    frame=  107 fps= 28 q=29.0 size=       0kB time=00:00:01.93 bitrate=   0.2kbits/
    Queue input is backward in time
    [mp4 @ 00000000003ef800] Non-monotonous DTS in output stream 0:1; previous: 7616
    , current: 7063; changing to 7617. This may result in incorrect timestamps in th
    e output file.
    frame=  118 fps= 28 q=29.0 size=     113kB time=00:00:02.30 bitrate= 402.6kbits/
    frame=  129 fps= 26 q=29.0 size=     219kB time=00:00:02.66 bitrate= 670.7kbits/
    frame=  141 fps= 26 q=29.0 size=     264kB time=00:00:03.06 bitrate= 704.2kbits/
    frame=  152 fps= 25 q=29.0 size=     328kB time=00:00:03.43 bitrate= 782.2kbits/
    frame=  163 fps= 25 q=29.0 size=     431kB time=00:00:03.80 bitrate= 928.1kbits/
    frame=  174 fps= 24 q=29.0 size=     568kB time=00:00:04.17 bitrate=1116.3kbits/
    frame=  190 fps= 25 q=29.0 size=     781kB time=00:00:04.70 bitrate=1359.9kbits/
    frame=  204 fps= 25 q=29.0 size=    1006kB time=00:00:05.17 bitrate=1593.1kbits/
    frame=  218 fps= 25 q=29.0 size=    1058kB time=00:00:05.63 bitrate=1536.8kbits/
    frame=  229 fps= 25 q=29.0 size=    1093kB time=00:00:06.00 bitrate=1490.9kbits/
    frame=  239 fps= 24 q=29.0 size=    1118kB time=00:00:06.33 bitrate=1444.4kbits/
    frame=  251 fps= 24 q=29.0 size=    1150kB time=00:00:06.74 bitrate=1397.9kbits/
    frame=  265 fps= 24 q=29.0 size=    1234kB time=00:00:07.20 bitrate=1402.3kbits/
    frame=  278 fps= 25 q=29.0 size=    1332kB time=00:00:07.64 bitrate=1428.3kbits/
    frame=  294 fps= 25 q=29.0 size=    1403kB time=00:00:08.17 bitrate=1405.7kbits/
    frame=  308 fps= 25 q=29.0 size=    1547kB time=00:00:08.64 bitrate=1466.4kbits/
    frame=  323 fps= 25 q=29.0 size=    1595kB time=00:00:09.14 bitrate=1429.5kbits/
    frame=  337 fps= 25 q=29.0 size=    1702kB time=00:00:09.60 bitrate=1450.7kbits/
    frame=  351 fps= 25 q=29.0 size=    1755kB time=00:00:10.07 bitrate=1427.1kbits/
    frame=  365 fps= 25 q=29.0 size=    1820kB time=00:00:10.54 bitrate=1414.1kbits/
    frame=  381 fps= 25 q=29.0 size=    1852kB time=00:00:11.07 bitrate=1369.6kbits/
    frame=  396 fps= 26 q=29.0 size=    1893kB time=00:00:11.57 bitrate=1339.5kbits/
    frame=  409 fps= 26 q=29.0 size=    1923kB time=00:00:12.01 bitrate=1311.8kbits/
    frame=  421 fps= 25 q=29.0 size=    1967kB time=00:00:12.41 bitrate=1298.3kbits/
    frame=  434 fps= 25 q=29.0 size=    1998kB time=00:00:12.84 bitrate=1274.0kbits/
    frame=  445 fps= 25 q=29.0 size=    2018kB time=00:00:13.21 bitrate=1251.3kbits/
    frame=  458 fps= 25 q=29.0 size=    2048kB time=00:00:13.64 bitrate=1229.5kbits/
    frame=  471 fps= 25 q=29.0 size=    2067kB time=00:00:14.08 bitrate=1202.3kbits/
    frame=  484 fps= 25 q=29.0 size=    2189kB time=00:00:14.51 bitrate=1235.5kbits/
    frame=  497 fps= 25 q=29.0 size=    2260kB time=00:00:14.94 bitrate=1238.3kbits/
    frame=  509 fps= 25 q=29.0 size=    2311kB time=00:00:15.34 bitrate=1233.3kbits/
    frame=  523 fps= 25 q=29.0 size=    2429kB time=00:00:15.81 bitrate=1258.1kbits/
    frame=  535 fps= 25 q=29.0 size=    2541kB time=00:00:16.21 bitrate=1283.5kbits/
    frame=  548 fps= 25 q=29.0 size=    2718kB time=00:00:16.64 bitrate=1337.5kbits/
    frame=  560 fps= 25 q=29.0 size=    2845kB time=00:00:17.05 bitrate=1367.1kbits/
    frame=  571 fps= 25 q=29.0 size=    2965kB time=00:00:17.41 bitrate=1394.6kbits/
    frame=  580 fps= 25 q=29.0 size=    3025kB time=00:00:17.71 bitrate=1398.7kbits/
    frame=  588 fps= 25 q=29.0 size=    3098kB time=00:00:17.98 bitrate=1411.1kbits/
    frame=  597 fps= 25 q=29.0 size=    3183kB time=00:00:18.28 bitrate=1426.1kbits/
    frame=  606 fps= 24 q=29.0 size=    3279kB time=00:00:18.58 bitrate=1445.2kbits/
    frame=  616 fps= 24 q=29.0 size=    3441kB time=00:00:18.91 bitrate=1489.9kbits/
    frame=  626 fps= 24 q=29.0 size=    3650kB time=00:00:19.25 bitrate=1553.0kbits/
    frame=  638 fps= 24 q=29.0 size=    3826kB time=00:00:19.65 bitrate=1594.7kbits/
    frame=  649 fps= 24 q=29.0 size=    3950kB time=00:00:20.02 bitrate=1616.3kbits/
    frame=  660 fps= 24 q=29.0 size=    4067kB time=00:00:20.38 bitrate=1634.1kbits/
    frame=  669 fps= 24 q=29.0 size=    4121kB time=00:00:20.68 bitrate=1631.8kbits/
    frame=  682 fps= 24 q=29.0 size=    4274kB time=00:00:21.12 bitrate=1657.9kbits/
    frame=  696 fps= 24 q=29.0 size=    4446kB time=00:00:21.58 bitrate=1687.1kbits/
    frame=  709 fps= 24 q=29.0 size=    4590kB time=00:00:22.02 bitrate=1707.3kbits/
    frame=  719 fps= 24 q=29.0 size=    4772kB time=00:00:22.35 bitrate=1748.5kbits/
    frame=  732 fps= 24 q=29.0 size=    4852kB time=00:00:22.78 bitrate=1744.3kbits/
    frame=  744 fps= 24 q=29.0 size=    4973kB time=00:00:23.18 bitrate=1756.9kbits/
    frame=  756 fps= 24 q=29.0 size=    5099kB time=00:00:23.59 bitrate=1770.8kbits/
    frame=  768 fps= 24 q=29.0 size=    5149kB time=00:00:23.99 bitrate=1758.4kbits/
    frame=  780 fps= 24 q=29.0 size=    5227kB time=00:00:24.39 bitrate=1755.7kbits/
    frame=  797 fps= 24 q=29.0 size=    5377kB time=00:00:24.95 bitrate=1765.0kbits/
    frame=  813 fps= 24 q=29.0 size=    5507kB time=00:00:25.49 bitrate=1769.5kbits/
    frame=  828 fps= 24 q=29.0 size=    5634kB time=00:00:25.99 bitrate=1775.5kbits/
    frame=  843 fps= 24 q=29.0 size=    5701kB time=00:00:26.49 bitrate=1762.9kbits/
    frame=  859 fps= 24 q=29.0 size=    5830kB time=00:00:27.02 bitrate=1767.0kbits/
    frame=  872 fps= 24 q=29.0 size=    5926kB time=00:00:27.46 bitrate=1767.7kbits/
    frame=  888 fps= 24 q=29.0 size=    6014kB time=00:00:27.99 bitrate=1759.7kbits/
    frame=  900 fps= 24 q=29.0 size=    6332kB time=00:00:28.39 bitrate=1826.9kbits/
    frame=  901 fps= 24 q=-1.0 Lsize=    6717kB time=00:00:30.10 bitrate=1828.0kbits
    /s
    video:6211kB audio:472kB subtitle:0 global headers:0kB muxing overhead 0.513217%

    [libx264 @ 00000000002e6980] frame I:8     Avg QP:21.77  size: 39744
    [libx264 @ 00000000002e6980] frame P:433   Avg QP:25.69  size: 11490
    [libx264 @ 00000000002e6980] frame B:460   Avg QP:29.25  size:  2319
    [libx264 @ 00000000002e6980] consecutive B-frames:  5.4% 78.6%  2.7% 13.3%
    [libx264 @ 00000000002e6980] mb I  I16..4: 21.8% 48.8% 29.5%
    [libx264 @ 00000000002e6980] mb P  I16..4:  0.7%  4.0%  1.3%  P16..4: 37.1% 22.2
    % 15.5%  0.0%  0.0%    skip:19.2%
    [libx264 @ 00000000002e6980] mb B  I16..4:  0.1%  0.5%  0.2%  B16..8: 43.5%  7.0
    %  2.1%  direct: 2.2%  skip:44.5%  L0:36.4% L1:52.7% BI:10.9%
    [libx264 @ 00000000002e6980] 8x8 transform intra:62.8% inter:56.2%
    [libx264 @ 00000000002e6980] coded y,uvDC,uvAC intra: 74.2% 78.8% 44.0% inter: 2
    3.6% 14.5% 1.0%
    [libx264 @ 00000000002e6980] i16 v,h,dc,p: 48% 24%  9% 20%
    [libx264 @ 00000000002e6980] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 17% 15%  7%  8%
    11%  8% 10%  8%
    [libx264 @ 00000000002e6980] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 17% 15%  7% 10%
    11%  8%  7%  7%
    [libx264 @ 00000000002e6980] i8c dc,h,v,p: 53% 21% 18%  7%
    [libx264 @ 00000000002e6980] Weighted P-Frames: Y:0.7% UV:0.0%
    [libx264 @ 00000000002e6980] ref P L0: 62.4% 19.0% 12.0%  6.6%  0.0%
    [libx264 @ 00000000002e6980] ref B L0: 90.5%  8.9%  0.7%
    [libx264 @ 00000000002e6980] ref B L1: 97.9%  2.1%
    [libx264 @ 00000000002e6980] kb/s:1692.37

    AND THE –MOVFLAGS COMMAND :

    ffmpeg -i C:\vidtests\Wildlife.mp4 -movflags faststart C:\vidtests\Wildlife_fs.mp4

    AND THE –MOVFLAGS OUTPUT

    ffmpeg version N-54207-ge59fb3f Copyright (c) 2000-2013 the FFmpeg developers
     built on Jun 25 2013 21:55:00 with gcc 4.7.3 (GCC)
     configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
    isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
    le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp
    e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena
    ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l
    ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp
    eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-
    amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --
    enable-libxvid --enable-zlib
     libavutil      52. 37.101 / 52. 37.101
     libavcodec     55. 17.100 / 55. 17.100
     libavformat    55. 10.100 / 55. 10.100
     libavdevice    55.  2.100 / 55.  2.100
     libavfilter     3. 77.101 /  3. 77.101
     libswscale      2.  3.100 /  2.  3.100
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  3.100 / 52.  3.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\vidtests\Wildlife.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       title           : Wildlife in HD
       encoder         : Lavf55.10.100
       comment         : Footage: Small World Productions, Inc; Tourism New Zealand
    | Producer: Gary F. Spradling | Music: Steve Ball
       copyright       : ┬⌐ 2008 Microsoft Corporation
     Duration: 00:00:30.13, start: 0.036281, bitrate: 1826 kb/s
       Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x480,
    1692 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 12
    8 kb/s
       Metadata:
         handler_name    : SoundHandler
    [libx264 @ 0000000004360620] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64

    [libx264 @ 0000000004360620] profile High, level 3.0
    [libx264 @ 0000000004360620] 264 - core 133 r2334 a3ac64b - H.264/MPEG-4 AVC cod
    ec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=1 r
    ef=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_pski
    p=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 deci
    mate=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=2
    5 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.6
    0 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to 'C:\vidtests\Wildlife_fs.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       title           : Wildlife in HD
       copyright       : ┬⌐ 2008 Microsoft Corporation
       comment         : Footage: Small World Productions, Inc; Tourism New Zealand
    | Producer: Gary F. Spradling | Music: Steve Ball
       encoder         : Lavf55.10.100
       Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 6
    40x480, q=-1--1, 30k tbn, 29.97 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(eng): Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 44100
    Hz, stereo, s16, 128 kb/s
       Metadata:
         handler_name    : SoundHandler
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 -> libx264)
     Stream #0:1 -> #0:1 (aac -> libvo_aacenc)
    Press [q] to stop, [?] for help
    frame=   52 fps=0.0 q=29.0 size=      29kB time=00:00:01.76 bitrate= 133.9kbits/
    frame=   63 fps= 60 q=29.0 size=     104kB time=00:00:02.14 bitrate= 397.2kbits/
    frame=   74 fps= 47 q=29.0 size=     176kB time=00:00:02.51 bitrate= 573.2kbits/
    frame=   87 fps= 41 q=29.0 size=     265kB time=00:00:02.93 bitrate= 741.2kbits/
    frame=  101 fps= 37 q=29.0 size=     358kB time=00:00:03.39 bitrate= 862.8kbits/
    frame=  113 fps= 34 q=29.0 size=     437kB time=00:00:03.79 bitrate= 943.7kbits/
    frame=  125 fps= 33 q=29.0 size=     520kB time=00:00:04.20 bitrate=1012.2kbits/
    frame=  138 fps= 32 q=29.0 size=     606kB time=00:00:04.64 bitrate=1069.8kbits/
    frame=  151 fps= 31 q=29.0 size=     696kB time=00:00:05.06 bitrate=1124.3kbits/
    frame=  163 fps= 30 q=29.0 size=     780kB time=00:00:05.47 bitrate=1166.4kbits/
    frame=  176 fps= 30 q=29.0 size=     919kB time=00:00:05.90 bitrate=1273.9kbits/
    frame=  196 fps= 31 q=29.0 size=     994kB time=00:00:06.57 bitrate=1237.4kbits/
    frame=  213 fps= 31 q=29.0 size=    1097kB time=00:00:07.13 bitrate=1258.8kbits/
    frame=  225 fps= 30 q=29.0 size=    1204kB time=00:00:07.53 bitrate=1309.8kbits/
    frame=  236 fps= 30 q=29.0 size=    1323kB time=00:00:07.91 bitrate=1369.4kbits/
    frame=  249 fps= 29 q=29.0 size=    1451kB time=00:00:08.34 bitrate=1424.6kbits/
    frame=  263 fps= 29 q=29.0 size=    1574kB time=00:00:08.82 bitrate=1461.3kbits/
    frame=  278 fps= 29 q=29.0 size=    1610kB time=00:00:09.30 bitrate=1416.9kbits/
    frame=  296 fps= 30 q=29.0 size=    1655kB time=00:00:09.91 bitrate=1368.0kbits/
    frame=  313 fps= 30 q=29.0 size=    1697kB time=00:00:10.48 bitrate=1326.4kbits/
    frame=  330 fps= 30 q=29.0 size=    1737kB time=00:00:11.05 bitrate=1286.5kbits/
    frame=  345 fps= 30 q=29.0 size=    1776kB time=00:00:11.54 bitrate=1260.4kbits/
    frame=  361 fps= 30 q=29.0 size=    1813kB time=00:00:12.07 bitrate=1230.3kbits/
    frame=  377 fps= 30 q=29.0 size=    1847kB time=00:00:12.59 bitrate=1201.4kbits/
    frame=  395 fps= 30 q=29.0 size=    1880kB time=00:00:13.22 bitrate=1165.0kbits/
    frame=  410 fps= 30 q=29.0 size=    1993kB time=00:00:13.72 bitrate=1190.2kbits/
    frame=  424 fps= 30 q=29.0 size=    2080kB time=00:00:14.18 bitrate=1201.4kbits/
    frame=  439 fps= 30 q=29.0 size=    2166kB time=00:00:14.67 bitrate=1209.4kbits/
    frame=  455 fps= 30 q=29.0 size=    2262kB time=00:00:15.21 bitrate=1217.5kbits/
    frame=  469 fps= 30 q=29.0 size=    2341kB time=00:00:15.68 bitrate=1223.0kbits/
    frame=  484 fps= 30 q=29.0 size=    2430kB time=00:00:16.19 bitrate=1229.1kbits/
    frame=  500 fps= 30 q=29.0 size=    2523kB time=00:00:16.71 bitrate=1236.3kbits/
    frame=  515 fps= 30 q=29.0 size=    2607kB time=00:00:17.21 bitrate=1240.4kbits/
    frame=  531 fps= 30 q=29.0 size=    2681kB time=00:00:17.73 bitrate=1238.2kbits/
    frame=  546 fps= 30 q=29.0 size=    2758kB time=00:00:18.24 bitrate=1238.2kbits/
    frame=  561 fps= 30 q=29.0 size=    2824kB time=00:00:18.75 bitrate=1233.4kbits/
    frame=  576 fps= 30 q=29.0 size=    2955kB time=00:00:19.25 bitrate=1256.8kbits/
    frame=  586 fps= 29 q=29.0 size=    3061kB time=00:00:19.59 bitrate=1279.6kbits/
    frame=  598 fps= 29 q=29.0 size=    3217kB time=00:00:19.99 bitrate=1318.4kbits/
    frame=  610 fps= 29 q=29.0 size=    3354kB time=00:00:20.39 bitrate=1347.2kbits/
    frame=  622 fps= 29 q=29.0 size=    3483kB time=00:00:20.78 bitrate=1372.6kbits/
    frame=  634 fps= 29 q=29.0 size=    3593kB time=00:00:21.19 bitrate=1388.6kbits/
    frame=  648 fps= 29 q=29.0 size=    3708kB time=00:00:21.66 bitrate=1402.3kbits/
    frame=  661 fps= 29 q=29.0 size=    3811kB time=00:00:22.08 bitrate=1413.5kbits/
    frame=  674 fps= 29 q=29.0 size=    3978kB time=00:00:22.53 bitrate=1446.3kbits/
    frame=  690 fps= 29 q=29.0 size=    4133kB time=00:00:23.05 bitrate=1468.4kbits/
    frame=  706 fps= 29 q=29.0 size=    4263kB time=00:00:23.58 bitrate=1480.4kbits/
    frame=  721 fps= 29 q=29.0 size=    4391kB time=00:00:24.08 bitrate=1493.8kbits/
    frame=  735 fps= 29 q=29.0 size=    4524kB time=00:00:24.55 bitrate=1509.4kbits/
    frame=  748 fps= 29 q=29.0 size=    4661kB time=00:00:24.98 bitrate=1528.2kbits/
    frame=  763 fps= 29 q=29.0 size=    4835kB time=00:00:25.50 bitrate=1553.1kbits/
    frame=  778 fps= 29 q=29.0 size=    4993kB time=00:00:25.99 bitrate=1573.6kbits/
    frame=  795 fps= 29 q=29.0 size=    5149kB time=00:00:26.56 bitrate=1588.1kbits/
    frame=  814 fps= 29 q=29.0 size=    5258kB time=00:00:27.18 bitrate=1584.4kbits/
    frame=  833 fps= 29 q=29.0 size=    5368kB time=00:00:27.82 bitrate=1580.2kbits/
    frame=  851 fps= 29 q=29.0 size=    5469kB time=00:00:28.43 bitrate=1575.9kbits/
    frame=  870 fps= 29 q=29.0 size=    5567kB time=00:00:29.05 bitrate=1569.5kbits/
    frame=  889 fps= 29 q=29.0 size=    5688kB time=00:00:29.70 bitrate=1568.4kbits/
    Starting second pass: moving header on top of the file
    frame=  902 fps= 28 q=-1.0 Lsize=    6109kB time=00:00:30.14 bitrate=1659.8kbits
    /s dup=1 drop=0
    video:5602kB audio:472kB subtitle:0 global headers:0kB muxing overhead 0.566600%

    [libx264 @ 0000000004360620] frame I:8     Avg QP:20.52  size: 39667
    [libx264 @ 0000000004360620] frame P:419   Avg QP:25.06  size: 10524
    [libx264 @ 0000000004360620] frame B:475   Avg QP:29.03  size:  2123
    [libx264 @ 0000000004360620] consecutive B-frames:  3.2% 79.6%  0.3% 16.9%
    [libx264 @ 0000000004360620] mb I  I16..4: 20.7% 52.3% 26.9%
    [libx264 @ 0000000004360620] mb P  I16..4:  0.7%  4.2%  1.1%  P16..4: 39.4% 21.4
    % 13.8%  0.0%  0.0%    skip:19.3%
    [libx264 @ 0000000004360620] mb B  I16..4:  0.1%  0.9%  0.3%  B16..8: 41.8%  6.4
    %  1.7%  direct: 1.7%  skip:47.1%  L0:36.4% L1:53.3% BI:10.3%
    [libx264 @ 0000000004360620] 8x8 transform intra:65.7% inter:58.8%
    [libx264 @ 0000000004360620] coded y,uvDC,uvAC intra: 71.2% 76.6% 35.7% inter: 2
    0.7% 13.0% 0.5%
    [libx264 @ 0000000004360620] i16 v,h,dc,p: 48% 24%  8% 20%
    [libx264 @ 0000000004360620] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 18% 15%  6%  8%
    11%  8% 10%  8%
    [libx264 @ 0000000004360620] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 16% 15%  7% 10%
    11%  8%  8%  7%
    [libx264 @ 0000000004360620] i8c dc,h,v,p: 51% 22% 19%  9%
    [libx264 @ 0000000004360620] Weighted P-Frames: Y:0.7% UV:0.0%
    [libx264 @ 0000000004360620] ref P L0: 63.4% 19.7% 11.0%  5.9%  0.0%
    [libx264 @ 0000000004360620] ref B L0: 90.7%  8.7%  0.7%
    [libx264 @ 0000000004360620] ref B L1: 98.4%  1.6%
    [libx264 @ 0000000004360620] kb/s:1524.54
  • ffmpeg doesn't generate video from images

    6 juillet 2017, par mans

    I am trying to create a video from jpeg images using ffmpeg. The generated video should be in x264 or x265 format.

    I have a directory with 36 images . Each image size is around 60Mpixel. They are names as follow :

    • frame00000.jpg
    • frame00001.jps
    • frame00002.jpg
    • ....
    • frame00035.jpg

    I read documentation and several posts in SO and I came to write a batch file to call ffmpeg as follow :

    ffmpeg.exe -r 1/5 -start_number 0 -i %1\frame%%05d.jpg -c:v libx264 -vf "fps=1,format=yuv420p" out1.mp4

    when I run this command, I am getting this output from the ffmpeg, which is strange :

    C:\Users\m\Desktop\ffmpeg-20170702-c885356-win64-static\bin>ffmpeg.exe -r 1/5 -start_number 0 -i "C:\Resized"\frame%05d.jpg -c:v libx264 -vf "fps=1,format=yuv420p" out1.mp4
    ffmpeg version N-86691-gc885356 Copyright (c) 2000-2017 the FFmpeg developers
     built with gcc 7.1.0 (GCC)
     configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib
     libavutil      55. 67.100 / 55. 67.100
     libavcodec     57.100.103 / 57.100.103
     libavformat    57. 75.100 / 57. 75.100
     libavdevice    57.  7.100 / 57.  7.100
     libavfilter     6. 94.100 /  6. 94.100
     libswscale      4.  7.101 /  4.  7.101
     libswresample   2.  8.100 /  2.  8.100
     libpostproc    54.  6.100 / 54.  6.100
    Input #0, image2, from 'C:\Resized\frame%05d.jpg':
     Duration: 00:00:01.44, start: 0.000000, bitrate: N/A
       Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 11000x5500 [SAR 1:1 DAR 2:1], 25 tbr, 25 tbn, 25 tbc
    File 'out1.mp4' already exists. Overwrite ? [y/N] y
    Stream mapping:
     Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    [swscaler @ 00000000006662e0] deprecated pixel format used, make sure you did set range correctly
    [libx264 @ 000000000017b220] using SAR=1/1
    [libx264 @ 000000000017b220] frame MB size (688x344) > level limit (139264)
    [libx264 @ 000000000017b220] DPB size (4 frames, 946688 mbs) > level limit (2 frames, 696320 mbs)
    [libx264 @ 000000000017b220] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
    [libx264 @ 000000000017b220] profile High, level 6.2
    [libx264 @ 000000000017b220] 264 - core 152 r2851 ba24899 - 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=1 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 'out1.mp4':
     Metadata:
       encoder         : Lavf57.75.100
       Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 11000x5500 [SAR 1:1 DAR 2:1], q=-1--1, 1 fps, 16384 tbn, 1 tbc
       Metadata:
         encoder         : Lavc57.100.103 libx264
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=    1 fps=0.9 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=    2 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=    3 fps=1.2 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=    4 fps=1.3 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=    5 fps=1.4 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=    5 fps=1.2 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=    6 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=    7 fps=1.2 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=    8 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=    9 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   10 fps=1.2 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   10 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   11 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   13 fps=1.2 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   14 fps=1.2 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   15 fps=1.2 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   15 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   16 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   17 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   18 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   19 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   20 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   20 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   21 fps=1.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   22 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   23 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   24 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   25 fps=1.1 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   frame=   25 fps=0.5 q=0.0 size=   55040kB time=00:00:00.00 bitrate=N/A speed=   frame=   26 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   27 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   28 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   29 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   30 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   31 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   32 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   34 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   35 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   35 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   36 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   37 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   39 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   40 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   40 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   41 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   43 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   44 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   45 fps=0.1 q=0.0 size=   55296kB time=00:00:00.00 bitrate=N/A speed=   frame=   46 fps=0.1 q=0.0 size=   77568kB time=00:00:00.00 bitrate=N/A speed=   frame=   47 fps=0.0 q=0.0 size=   77824kB time=00:00:00.00 bitrate=N/A speed=   frame=   48 fps=0.0 q=0.0 size=   77824kB time=00:00:00.00 bitrate=N/A speed=   frame=   49 fps=0.0 q=0.0 size=   77824kB time=00:00:00.00 bitrate=N/A speed=   frame=   50 fps=0.0 q=0.0 size=   77824kB time=00:00:00.00 bitrate=N/A speed=   frame=   50 fps=0.0 q=0.0 size=   77824kB time=00:00:00.00 bitrate=N/A speed=   frame=   51 fps=0.0 q=17.0 size=    8448kB time=-00:00:01.99 bitrate=N/A speed=Nframe=   52 fps=0.0 q=17.0 size=    8448kB time=-00:00:00.99 bitrate=N/A speed=Nframe=   53 fps=0.0 q=17.0 size=    8448kB time=00:00:00.00 bitrate=1134531147.5frame=   54 fps=0.0 q=17.0 size=    8448kB time=00:00:01.00 bitrate=69202.2kbitsframe=   55 fps=0.0 q=17.0 size=    8448kB time=00:00:02.00 bitrate=34602.1kbitsframe=   55 fps=0.0 q=17.0 size=    8448kB time=00:00:02.00 bitrate=34602.1kbitsframe=   56 fps=0.0 q=17.0 size=   14848kB time=00:00:03.00 bitrate=40544.2kbitsframe=   57 fps=0.0 q=17.0 size=   14848kB time=00:00:04.00 bitrate=30408.3kbitsframe=   58 fps=0.0 q=17.0 size=   14848kB time=00:00:05.00 bitrate=24326.7kbitsframe=   59 fps=0.0 q=17.0 size=   14848kB time=00:00:06.00 bitrate=20272.3kbitsframe=   60 fps=0.0 q=17.0 size=   22016kB time=00:00:07.00 bitrate=25764.8kbitsframe=   60 fps=0.0 q=17.0 size=   22016kB time=00:00:07.00 bitrate=25764.8kbitsframe=   61 fps=0.0 q=17.0 size=   22016kB time=00:00:08.00 bitrate=22544.3kbitsframe=   62 fps=0.0 q=17.0 size=   22016kB time=00:00:09.00 bitrate=20039.4kbitsframe=   63 fps=0.0 q=17.0 size=   22016kB time=00:00:10.00 bitrate=18035.4kbitsframe=   64 fps=0.0 q=17.0 size=   29696kB time=00:00:11.00 bitrate=22115.3kbitsframe=   65 fps=0.0 q=17.0 size=   29696kB time=00:00:12.00 bitrate=20272.4kbitsframe=   65 fps=0.0 q=17.0 size=   29696kB time=00:00:12.00 bitrate=20272.4kbitsframe=   66 fps=0.0 q=17.0 size=   29696kB time=00:00:13.00 bitrate=18713.0kbitsframe=   67 fps=0.0 q=17.0 size=   29696kB time=00:00:14.00 bitrate=17376.4kbitsframe=   68 fps=0.0 q=17.0 size=   37376kB time=00:00:15.00 bitrate=20412.2kbitsframe=   69 fps=0.0 q=17.0 size=   37376kB time=00:00:16.00 bitrate=19136.5kbitsframe=   70 fps=0.0 q=17.0 size=   37376kB time=00:00:17.00 bitrate=18010.8kbitsframe=   70 fps=0.0 q=17.0 size=   37376kB time=00:00:17.00 bitrate=18010.8kbitsframe=   71 fps=0.0 q=17.0 size=   37376kB time=00:00:18.00 bitrate=17010.2kbitsframe=   72 fps=0.0 q=17.0 size=   37376kB time=00:00:19.00 bitrate=16114.9kbitsframe=   73 fps=0.0 q=17.0 size=   37376kB time=00:00:20.00 bitrate=15309.2kbitsframe=   74 fps=0.0 q=17.0 size=   37376kB time=00:00:21.00 bitrate=14580.2kbitsframe=   75 fps=0.0 q=17.0 size=   37376kB time=00:00:22.00 bitrate=13917.4kbitsframe=   75 fps=0.0 q=17.0 size=   37376kB time=00:00:22.00 bitrate=13917.4kbitsframe=   76 fps=0.0 q=17.0 size=   44032kB time=00:00:23.00 bitrate=15683.0kbitsframe=   77 fps=0.0 q=17.0 size=   44032kB time=00:00:24.00 bitrate=15029.6kbitsframe=   78 fps=0.0 q=17.0 size=   44032kB time=00:00:25.00 bitrate=14428.4kbitsframe=   79 fps=0.0 q=17.0 size=   44032kB time=00:00:26.00 bitrate=13873.4kbitsframe=   80 fps=0.0 q=17.0 size=   50944kB time=00:00:27.00 bitrate=15456.8kbitsframe=   80 fps=0.0 q=17.0 size=   50944kB time=00:00:27.00 bitrate=15456.8kbitsframe=   81 fps=0.0 q=17.0 size=   50944kB time=00:00:28.00 bitrate=14904.7kbitsframe=   82 fps=0.0 q=17.0 size=   50944kB time=00:00:29.00 bitrate=14390.8kbitsframe=   83 fps=0.0 q=17.0 size=   50944kB time=00:00:30.00 bitrate=13911.1kbitsframe=   84 fps=0.0 q=17.0 size=   58368kB time=00:00:31.00 bitrate=15424.2kbitsframe=   85 fps=0.0 q=17.0 size=   58368kB time=00:00:32.00 bitrate=14942.2kbitsframe=   85 fps=0.0 q=17.0 size=   58368kB time=00:00:32.00 bitrate=14942.2kbitsframe=   86 fps=0.0 q=17.0 size=   58368kB time=00:00:33.00 bitrate=14489.4kbitsframe=   87 fps=0.0 q=17.0 size=   58368kB time=00:00:34.00 bitrate=14063.2kbitsframe=   88 fps=0.0 q=17.0 size=   66048kB time=00:00:35.00 bitrate=15459.0kbitsframe=   89 fps=0.0 q=17.0 size=   66048kB time=00:00:36.00 bitrate=15029.6kbitsframe=   90 fps=0.0 q=17.0 size=   66048kB time=00:00:37.00 bitrate=14623.4kbitsframe=   90 fps=0.0 q=17.0 size=   66048kB time=00:00:37.00 bitrate=14623.4kbitsframe=   91 fps=0.0 q=17.0 size=   66048kB time=00:00:38.00 bitrate=14238.5kbitsframe=   92 fps=0.0 q=17.0 size=   66048kB time=00:00:39.00 bitrate=13873.5kbitsframe=   93 fps=0.0 q=17.0 size=   66048kB time=00:00:40.00 bitrate=13526.6kbitsframe=   94 fps=0.0 q=17.0 size=   66048kB time=00:00:41.00 bitrate=13196.7kbitsframe=   95 fps=0.0 q=17.0 size=   66048kB time=00:00:42.00 bitrate=12882.5kbitsframe=   95 fps=0.0 q=17.0 size=   66048kB time=00:00:42.00 bitrate=12882.5kbitsframe=   96 fps=0.0 q=17.0 size=   72448kB time=00:00:43.00 bitrate=13802.2kbitsframe=   97 fps=0.0 q=17.0 size=   72448kB time=00:00:44.00 bitrate=13488.5kbitsframe=   99 fps=0.0 q=17.0 size=   72448kB time=00:00:46.00 bitrate=12902.0kbitsframe=  100 fps=0.0 q=17.0 size=   79360kB time=00:00:47.00 bitrate=13832.3kbitsframe=  100 fps=0.0 q=17.0 size=   79360kB time=00:00:47.00 bitrate=13832.3kbitsframe=  101 fps=0.0 q=17.0 size=   79360kB time=00:00:48.00 bitrate=13544.1kbitsframe=  103 fps=0.0 q=17.0 size=   79360kB time=00:00:50.00 bitrate=13002.3kbitsframe=  104 fps=0.0 q=17.0 size=   86528kB time=00:00:51.00 bitrate=13898.8kbitsframe=  105 fps=0.0 q=17.0 size=   86528kB time=00:00:52.00 bitrate=13631.5kbitsframe=  105 fps=0.0 q=17.0 size=   86528kB time=00:00:52.00 bitrate=13631.5kbitsframe=  106 fps=0.0 q=17.0 size=   86528kB time=00:00:53.00 bitrate=13374.3kbitsframe=  107 fps=0.0 q=17.0 size=   86528kB time=00:00:54.00 bitrate=13126.6kbitsframe=  108 fps=0.0 q=17.0 size=   94208kB time=00:00:55.00 bitrate=14031.8kbitsframe=  109 fps=0.0 q=17.0 size=   94208kB time=00:00:56.00 bitrate=13781.3kbitsframe=  110 fps=0.0 q=17.0 size=   94208kB time=00:00:57.00 bitrate=13539.5kbitsframe=  111 fps=0.0 q=17.0 size=   94208kB time=00:00:58.00 bitrate=13306.1kbitsframe=  112 fps=0.0 q=17.0 size=   94464kB time=00:00:59.00 bitrate=13116.1kbitsframe=  113 fps=0.0 q=17.0 size=   94464kB time=00:01:00.00 bitrate=12897.5kbitsframe=  115 fps=0.0 q=17.0 size=   94464kB time=00:01:02.00 bitrate=12481.4kbitsframe=  115 fps=0.0 q=17.0 size=   94464kB time=00:01:02.00 bitrate=12481.4kbitsframe=  116 fps=0.0 q=17.0 size=  100608kB time=00:01:03.00 bitrate=13082.2kbitsframe=  117 fps=0.0 q=17.0 size=  100608kB time=00:01:04.00 bitrate=12877.8kbitsframe=  119 fps=0.0 q=17.0 size=  100608kB time=00:01:06.00 bitrate=12487.6kbitsframe=  120 fps=0.0 q=17.0 size=  107520kB time=00:01:07.00 bitrate=13146.3kbitsframe=  121 fps=0.0 q=17.0 size=  107520kB time=00:01:08.00 bitrate=12953.0kbitsframe=  123 fps=0.0 q=17.0 size=  107520kB time=00:01:10.00 bitrate=12582.9kbitsframe=  125 fps=0.0 q=17.0 size=  114944kB time=00:01:12.00 bitrate=13078.1kbitsframe=  126 fps=0.0 q=17.0 size=  114944kB time=00:01:13.00 bitrate=12898.9kbitsframe=  128 fps=0.0 q=17.0 size=  122880kB time=00:01:15.00 bitrate=13421.8kbitsframe=  129 fps=0.0 q=17.0 size=  122880kB time=00:01:16.00 bitrate=13245.2kbitsframe=  130 fps=0.0 q=17.0 size=  122880kB time=00:01:17.00 bitrate=13073.1kbitsframe=  130 fps=0.0 q=17.0 size=  122880kB time=00:01:17.00 bitrate=13073.1kbitsframe=  131 fps=0.0 q=17.0 size=  122880kB time=00:01:18.00 bitrate=12905.5kbitsframe=  133 fps=0.0 q=17.0 size=  122880kB time=00:01:20.00 bitrate=12582.9kbitsframe=  135 fps=0.0 q=17.0 size=  122880kB time=00:01:22.00 bitrate=12276.0kbitsframe=  135 fps=0.0 q=17.0 size=  122880kB time=00:01:22.00 bitrate=12276.0kbitsframe=  136 fps=0.0 q=17.0 size=  129280kB time=00:01:23.00 bitrate=12759.8kbitsframe=  137 fps=0.0 q=17.0 size=  129280kB time=00:01:24.00 bitrate=12607.9kbitsframe=  138 fps=0.0 q=17.0 size=  129280kB time=00:01:25.00 bitrate=12459.5kbitsframe=  140 fps=0.0 q=17.0 size=  136448kB time=00:01:27.00 bitrate=12848.1kbitsframe=  140 fps=0.0 q=17.0 size=  136448kB time=00:01:27.00 bitrate=12848.1kbitsframe=  141 fps=0.0 q=17.0 size=  136448kB time=00:01:28.00 bitrate=12702.1kbitsframe=  143 fps=0.0 q=17.0 size=  136448kB time=00:01:30.00 bitrate=12419.8kbitsframe=  145 fps=0.0 q=17.0 size=  143872kB time=00:01:32.00 bitrate=12810.9kbitsframe=  146 fps=0.0 q=17.0 size=  143872kB time=00:01:33.00 bitrate=12673.1kbitsframe=  148 fps=0.0 q=17.0 size=  151552kB time=00:01:35.00 bitrate=13068.6kbitsframe=  149 fps=0.0 q=17.0 size=  151552kB time=00:01:36.00 bitrate=12932.4kbitsframe=  150 fps=0.0 q=17.0 size=  151552kB time=00:01:37.00 bitrate=12799.1kbitsframe=  150 fps=0.0 q=17.0 size=  151552kB time=00:01:37.00 bitrate=12799.1kbitsframe=  151 fps=0.0 q=17.0 size=  151552kB time=00:01:38.00 bitrate=12668.5kbitsframe=  153 fps=0.0 q=17.0 size=  151552kB time=00:01:40.00 bitrate=12415.1kbitsframe=  155 fps=0.0 q=17.0 size=  151552kB time=00:01:42.00 bitrate=12171.7kbitsframe=  156 fps=0.0 q=17.0 size=  157952kB time=00:01:43.00 bitrate=12562.5kbitsframe=  157 fps=0.0 q=17.0 size=  157952kB time=00:01:44.00 bitrate=12441.8kbitsframe=  159 fps=0.0 q=17.0 size=  157952kB time=00:01:46.00 bitrate=12207.0kbitsframe=  160 fps=0.0 q=17.0 size=  164864kB time=00:01:47.00 bitrate=12622.1kbitsframe=  161 fps=0.0 q=17.0 size=  164864kB time=00:01:48.00 bitrate=12505.2kbitsframe=  163 fps=0.0 q=17.0 size=  164864kB time=00:01:50.00 bitrate=12277.9kbitsframe=  165 fps=0.0 q=17.0 size=  172288kB time=00:01:52.00 bitrate=12601.6kbitsframe=  166 fps=0.0 q=17.0 size=  172288kB time=00:01:53.00 bitrate=12490.1kbitsframe=  168 fps=0.0 q=17.0 size=  179968kB time=00:01:55.00 bitrate=12820.0kbitsframe=  169 fps=0.0 q=17.0 size=  179968kB time=00:01:56.00 bitrate=12709.5kbitsframe=  170 fps=0.0 q=17.0 size=  179968kB time=00:01:57.00 bitrate=12600.8kbitsframe=  171 fps=0.0 q=17.0 size=  179968kB time=00:01:58.00 bitrate=12494.0kbitsframe=  173 fps=0.0 q=17.0 size=  179968kB time=00:02:00.00 bitrate=12285.8kbitsframe=  175 fps=0.0 q=17.0 size=  179968kB time=00:02:02.00 bitrate=12084.4kbitsframe=  176 fps=0.0 q=17.0 size=  186368kB time=00:02:03.00 bitrate=12412.4kbitsframe=  176 fps=0.0 q=-1.0 Lsize=  254547kB time=00:02:53.00 bitrate=12053.5kbits/s speed=0.0344x
    video:254543kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.001571%
    [libx264 @ 000000000017b220] frame I:1     Avg QP: 7.13  size:8716365
    [libx264 @ 000000000017b220] frame P:44    Avg QP:10.34  size:5710783
    [libx264 @ 000000000017b220] frame B:131   Avg QP:13.29  size:  5046
    [libx264 @ 000000000017b220] consecutive B-frames:  0.6%  0.0%  1.7% 97.7%
    [libx264 @ 000000000017b220] mb I  I16..4: 22.8% 68.7%  8.5%
    [libx264 @ 000000000017b220] mb P  I16..4:  0.8% 44.9%  3.6%  P16..4:  4.9%  5.5%  3.1%  0.0%  0.0%    skip:37.1%
    [libx264 @ 000000000017b220] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.6%  0.0%  0.0%  direct: 0.1%  skip:99.2%  L0:42.7% L1:55.9% BI: 1.5%
    [libx264 @ 000000000017b220] 8x8 transform intra:90.1% inter:72.0%
    [libx264 @ 000000000017b220] coded y,uvDC,uvAC intra: 96.9% 93.0% 90.5% inter: 3.6% 3.7% 3.6%
    [libx264 @ 000000000017b220] i16 v,h,dc,p: 50% 15% 14% 21%
    [libx264 @ 000000000017b220] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 29% 21%  4%  5%  4%  7%  5%  9%
    [libx264 @ 000000000017b220] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 33% 11%  6%  9%  6%  9%  5%  8%
    [libx264 @ 000000000017b220] i8c dc,h,v,p: 50% 29% 16%  5%
    [libx264 @ 000000000017b220] Weighted P-Frames: Y:0.0% UV:0.0%
    [libx264 @ 000000000017b220] ref P L0: 44.8% 21.7% 12.8% 20.8%
    [libx264 @ 000000000017b220] ref B L0: 85.0% 14.0%  1.0%
    [libx264 @ 000000000017b220] ref B L1: 98.0%  2.0%
    [libx264 @ 000000000017b220] kb/s:11847.81

    As can be seen :

    • it reported :

    deprecated pixel format used, make sure you did set range correctly

    what that means ?

    • It is trying to process more than 36 frames, when we only have 36 frames.
    • Until frame 25, size is zero and bitrate is N/A and after frame 25, size became none zero.
    • It runs for several hundred images and then stops, but I can not play video.
    • After frame 47, FPS became zero.
    • I can not play back the output video.

    How can I fix these problems and create a video from these frames ?

    Edit1

    After getting some reply, I noted that h264 can not support the final resolution so I converted to use VP9 and I am using this command :

    ffmpeg -i %1\frame%%05d.jpg -c:v libvpx-vp9 -b:v 2M -c:a libvorbis output.webm

    I am getting the right number of frames, but I can not play the output using VLC.

    • Is there any player that can play this resolution ?
    • Is there any way that I can check that the data in video is correct other than playing it ? For example by extracting them into several images and view the images.
  • ADD Image overlay to ffmpeg video stream

    1er juillet 2017, par Chris

    I am new to ffmpeg and want to add an HUD to the video stream, so a few questions.

    1. What file do I need to edit.
    2. What do I need to do to achieve this.

    Thanks in advance. Also I am VERY new to all of this, I will need instructions step by step

    I saw other questions saying to add this : ffmpeg -n -i video.mp4 -i logo.png -filter_complex "[0:v]setsar=sar=1[v];[v][1]blend=all_mode='overlay':all_opacity=0.7" -movflags +faststart tmb/video.mp4

    But I dont know where to put it, i entered it in the terminal and got this :

    pi@raspberrypi:~ $ ffmpeg -n -i video.mp4 -i logo.png -filter_complex "[0:v]setsar=sar=1[v];[v][1]blend=all_mode='overlay':all_opacity=0.7" -movflags +faststart tmb/video.mp4
    ffmpeg version N-86215-gb5228e4 Copyright (c) 2000-2017 the FFmpeg developers
     built with gcc 4.9.2 (Raspbian 4.9.2-10)
     configuration: --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree --extra-libs=-ldl
     libavutil      55. 63.100 / 55. 63.100
     libavcodec     57. 96.101 / 57. 96.101
     libavformat    57. 72.101 / 57. 72.101
     libavdevice    57.  7.100 / 57.  7.100
     libavfilter     6. 90.100 /  6. 90.100
     libswscale      4.  7.101 /  4.  7.101
     libswresample   2.  8.100 /  2.  8.100
     libpostproc    54.  6.100 / 54.  6.100
    video.mp4: No such file or directory

    I dont understand what i am supposed to do with the video.mp4 ?

    HERE IS THE SCRIPT THAT SENDS THE VIDEO.

    import subprocess
    import shlex
    import re
    import os
    import time
    import urllib2
    import platform
    import json
    import sys
    import base64
    import random


    import argparse

    parser = argparse.ArgumentParser(description='robot control')
    parser.add_argument('camera_id')
    parser.add_argument('video_device_number', default=0, type=int)
    parser.add_argument('--kbps', default=450, type=int)
    parser.add_argument('--brightness', default=75, type=int, help='camera brightness')
    parser.add_argument('--contrast', default=75, type=int, help='camera contrast')
    parser.add_argument('--saturation', default=15, type=int, help='camera saturation')
    parser.add_argument('--rotate180', default=False, type=bool, help='rotate image 180 degrees')
    parser.add_argument('--env', default="prod")



    args = parser.parse_args()



    server = "runmyrobot.com"
    #server = "52.52.213.92"


    from socketIO_client import SocketIO, LoggingNamespace

    # enable raspicam driver in case a raspicam is being used
    os.system("sudo modprobe bcm2835-v4l2")


    if args.env == "dev":
       print "using dev port 8122"
       port = 8122
    elif args.env == "prod":
       print "using prod port 8022"
       port = 8022
    else:
       print "invalid environment"
       sys.exit(0)


    print "initializing socket io"
    print "server:", server
    print "port:", port
    socketIO = SocketIO(server, port, LoggingNamespace)
    print "finished initializing socket io"

    #ffmpeg -f qtkit -i 0 -f mpeg1video -b 400k -r 30 -s 320x240 http://52.8.81.124:8082/hello/320/240/


    def onHandleCameraCommand(*args):
       #thread.start_new_thread(handle_command, args)
       print args


    socketIO.on('command_to_camera', onHandleCameraCommand)


    def onHandleTakeSnapshotCommand(*args):
       print "taking snapshot"
       inputDeviceID = streamProcessDict['device_answer']
       snapShot(platform.system(), inputDeviceID)
       with open ("snapshot.jpg", 'rb') as f:
           data = f.read()
       print "emit"

       socketIO.emit('snapshot', {'image':base64.b64encode(data)})

    socketIO.on('take_snapshot_command', onHandleTakeSnapshotCommand)


    def randomSleep():
       """A short wait is good for quick recovery, but sometimes a longer delay is needed or it will just keep trying and failing short intervals, like because the system thinks the port is still in use and every retry makes the system think it's still in use. So, this has a high likelihood of picking a short interval, but will pick a long one sometimes."""

       timeToWait = random.choice((0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 5))
       print "sleeping", timeToWait
       time.sleep(timeToWait)



    def getVideoPort():


       url = 'http://%s/get_video_port/%s' % (server, cameraIDAnswer)


       for retryNumber in range(2000):
           try:
               print "GET", url
               response = urllib2.urlopen(url).read()
               break
           except:
               print "could not open url ", url
               time.sleep(2)

       return json.loads(response)['mpeg_stream_port']

    def getAudioPort():


       url = 'http://%s/get_audio_port/%s' % (server, cameraIDAnswer)


       for retryNumber in range(2000):
           try:
               print "GET", url
               response = urllib2.urlopen(url).read()
               break
           except:
               print "could not open url ", url
               time.sleep(2)

       return json.loads(response)['audio_stream_port']



    def runFfmpeg(commandLine):

       print commandLine
       ffmpegProcess = subprocess.Popen(shlex.split(commandLine))
       print "command started"

       return ffmpegProcess



    def handleDarwin(deviceNumber, videoPort, audioPort):


       p = subprocess.Popen(["ffmpeg", "-list_devices", "true", "-f", "qtkit", "-i", "dummy"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

       out, err = p.communicate()

       print err

       deviceAnswer = raw_input("Enter the number of the camera device for your robot from the list above: ")
       commandLine = 'ffmpeg -f qtkit -i %s -f mpeg1video -b 400k -r 30 -s 320x240 http://%s:%s/hello/320/240/' % (deviceAnswer, server, videoPort)

       process = runFfmpeg(commandLine)

       return {'process': process, 'device_answer': deviceAnswer}


    def handleLinux(deviceNumber, videoPort, audioPort):

       print "sleeping to give the camera time to start working"
       randomSleep()
       print "finished sleeping"


       #p = subprocess.Popen(["ffmpeg", "-list_devices", "true", "-f", "qtkit", "-i", "dummy"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
       #out, err = p.communicate()
       #print err


       os.system("v4l2-ctl -c brightness={brightness} -c contrast={contrast} -c saturation={saturation}".format(brightness=args.brightness,
                                                                                                                contrast=args.contrast,
                                                                                                                saturation=args.saturation))


       if deviceNumber is None:
           deviceAnswer = raw_input("Enter the number of the camera device for your robot: ")
       else:
           deviceAnswer = str(deviceNumber)


       #commandLine = '/usr/local/bin/ffmpeg -s 320x240 -f video4linux2 -i /dev/video%s -f mpeg1video -b 1k -r 20 http://runmyrobot.com:%s/hello/320/240/' % (deviceAnswer, videoPort)
       #commandLine = '/usr/local/bin/ffmpeg -s 640x480 -f video4linux2 -i /dev/video%s -f mpeg1video -b 150k -r 20 http://%s:%s/hello/640/480/' % (deviceAnswer, server, videoPort)
       # For new JSMpeg
       #commandLine = '/usr/local/bin/ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video%s -f mpegts -codec:v mpeg1video -s 640x480 -b:v 250k -bf 0 http://%s:%s/hello/640/480/' % (deviceAnswer, server, videoPort) # ClawDaddy
       #commandLine = '/usr/local/bin/ffmpeg -s 1280x720 -f video4linux2 -i /dev/video%s -f mpeg1video -b 1k -r 20 http://runmyrobot.com:%s/hello/1280/720/' % (deviceAnswer, videoPort)


       if args.rotate180:
           rotationOption = "-vf transpose=2,transpose=2"
       else:
           rotationOption = ""

       # video with audio
       videoCommandLine = '/usr/local/bin/ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video%s %s -f mpegts -codec:v mpeg1video -s 640x480 -b:v %dk -bf 0 -muxdelay 0.001 http://%s:%s/hello/640/480/' % (deviceAnswer, rotationOption, args.kbps, server, videoPort)
       audioCommandLine = '/usr/local/bin/ffmpeg -f alsa -ar 44100 -ac 1 -i hw:1 -f mpegts -codec:a mp2 -b:a 32k -muxdelay 0.001 http://%s:%s/hello/640/480/' % (server, audioPort)


       print videoCommandLine
       print audioCommandLine

       videoProcess = runFfmpeg(videoCommandLine)
       audioProcess = runFfmpeg(audioCommandLine)

       return {'video_process': videoProcess, 'audioProcess': audioProcess, 'device_answer': deviceAnswer}



    def handleWindows(deviceNumber, videoPort):

       p = subprocess.Popen(["ffmpeg", "-list_devices", "true", "-f", "dshow", "-i", "dummy"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)


       out, err = p.communicate()
       lines = err.split('\n')

       count = 0

       devices = []

       for line in lines:

           #if "]  \"" in line:
           #    print "line:", line

           m = re.search('.*\\"(.*)\\"', line)
           if m != None:
               #print line
               if m.group(1)[0:1] != '@':
                   print count, m.group(1)
                   devices.append(m.group(1))
                   count += 1


       if deviceNumber is None:
           deviceAnswer = raw_input("Enter the number of the camera device for your robot from the list above: ")
       else:
           deviceAnswer = str(deviceNumber)

       device = devices[int(deviceAnswer)]
       commandLine = 'ffmpeg -s 640x480 -f dshow -i video="%s" -f mpegts -codec:v mpeg1video -b 200k -r 20 http://%s:%s/hello/640/480/' % (device, server, videoPort)


       process = runFfmpeg(commandLine)

       return {'process': process, 'device_answer': device}



    def handleWindowsScreenCapture(deviceNumber, videoPort):

       p = subprocess.Popen(["ffmpeg", "-list_devices", "true", "-f", "dshow", "-i", "dummy"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)


       out, err = p.communicate()

       lines = err.split('\n')

       count = 0

       devices = []

       for line in lines:

           #if "]  \"" in line:
           #    print "line:", line

           m = re.search('.*\\"(.*)\\"', line)
           if m != None:
               #print line
               if m.group(1)[0:1] != '@':
                   print count, m.group(1)
                   devices.append(m.group(1))
                   count += 1


       if deviceNumber is None:
           deviceAnswer = raw_input("Enter the number of the camera device for your robot from the list above: ")
       else:
           deviceAnswer = str(deviceNumber)



       device = devices[int(deviceAnswer)]
       commandLine = 'ffmpeg -f dshow -i video="screen-capture-recorder" -vf "scale=640:480" -f mpeg1video -b 50k -r 20 http://%s:%s/hello/640/480/' % (server, videoPort)

       print "command line:", commandLine

       process = runFfmpeg(commandLine)

       return {'process': process, 'device_answer': device}




    def snapShot(operatingSystem, inputDeviceID, filename="snapshot.jpg"):    

       try:
           os.remove('snapshot.jpg')
       except:
           print "did not remove file"

       commandLineDict = {
           'Darwin': 'ffmpeg -y -f qtkit -i %s -vframes 1 %s' % (inputDeviceID, filename),
           'Linux': '/usr/local/bin/ffmpeg -y -f video4linux2 -i /dev/video%s -vframes 1 -q:v 1000 -vf scale=320:240 %s' % (inputDeviceID, filename),
           'Windows': 'ffmpeg -y -s 320x240 -f dshow -i video="%s" -vframes 1 %s' % (inputDeviceID, filename)}

       print commandLineDict[operatingSystem]
       os.system(commandLineDict[operatingSystem])



    def startVideoCapture():

       videoPort = getVideoPort()
       audioPort = getAudioPort()
       print "video port:", videoPort
       print "audio port:", audioPort

       #if len(sys.argv) >= 3:
       #    deviceNumber = sys.argv[2]
       #else:
       #    deviceNumber = None
       deviceNumber = args.video_device_number

       result = None
       if platform.system() == 'Darwin':
           result = handleDarwin(deviceNumber, videoPort, audioPort)
       elif platform.system() == 'Linux':
           result = handleLinux(deviceNumber, videoPort, audioPort)
       elif platform.system() == 'Windows':
           #result = handleWindowsScreenCapture(deviceNumber, videoPort)
           result = handleWindows(deviceNumber, videoPort, audioPort)
       else:
           print "unknown platform", platform.system()

       return result


    def timeInMilliseconds():
       return int(round(time.time() * 1000))



    def main():

       print "main"

       streamProcessDict = None


       twitterSnapCount = 0

       while True:



           socketIO.emit('send_video_status', {'send_video_process_exists': True,
                                               'camera_id':cameraIDAnswer})


           if streamProcessDict is not None:
               print "stopping previously running ffmpeg (needs to happen if this is not the first iteration)"
               streamProcessDict['process'].kill()

           print "starting process just to get device result" # this should be a separate function so you don't have to do this
           streamProcessDict = startVideoCapture()
           inputDeviceID = streamProcessDict['device_answer']
           print "stopping video capture"
           streamProcessDict['process'].kill()

           #print "sleeping"
           #time.sleep(3)
           #frameCount = int(round(time.time() * 1000))

           videoWithSnapshots = False
           while videoWithSnapshots:

               frameCount = timeInMilliseconds()

               print "taking single frame image"
               snapShot(platform.system(), inputDeviceID, filename="single_frame_image.jpg")

               with open ("single_frame_image.jpg", 'rb') as f:

                   # every so many frames, post a snapshot to twitter
                   #if frameCount % 450 == 0:
                   if frameCount % 6000 == 0:
                           data = f.read()
                           print "emit"
                           socketIO.emit('snapshot', {'frame_count':frameCount, 'image':base64.b64encode(data)})
                   data = f.read()

               print "emit"
               socketIO.emit('single_frame_image', {'frame_count':frameCount, 'image':base64.b64encode(data)})
               time.sleep(0)

               #frameCount += 1


           if False:
            if platform.system() != 'Windows':
               print "taking snapshot"
               snapShot(platform.system(), inputDeviceID)
               with open ("snapshot.jpg", 'rb') as f:
                   data = f.read()
               print "emit"

               # skip sending the first image because it's mostly black, maybe completely black
               #todo: should find out why this black image happens
               if twitterSnapCount > 0:
                   socketIO.emit('snapshot', {'image':base64.b64encode(data)})




           print "starting video capture"
           streamProcessDict = startVideoCapture()


           # This loop counts out a delay that occurs between twitter snapshots.
           # Every 50 seconds, it kills and restarts ffmpeg.
           # Every 40 seconds, it sends a signal to the server indicating status of processes.
           period = 2*60*60 # period in seconds between snaps
           for count in range(period):
               time.sleep(1)

               if count % 20 == 0:
                   socketIO.emit('send_video_status', {'send_video_process_exists': True,
                                                       'camera_id':cameraIDAnswer})

               if count % 40 == 30:
                   print "stopping video capture just in case it has reached a state where it's looping forever, not sending video, and not dying as a process, which can happen"
                   streamProcessDict['video_process'].kill()
                   streamProcessDict['audio_process'].kill()
                   time.sleep(1)

               if count % 80 == 75:
                   print "send status about this process and its child process ffmpeg"
                   ffmpegProcessExists = streamProcessDict['process'].poll() is None
                   socketIO.emit('send_video_status', {'send_video_process_exists': True,
                                                       'ffmpeg_process_exists': ffmpegProcessExists,
                                                       'camera_id':cameraIDAnswer})

               #if count % 190 == 180:
               #    print "reboot system in case the webcam is not working"
               #    os.system("sudo reboot")

               # if the video stream process dies, restart it
               if streamProcessDict['video_process'].poll() is not None or streamProcessDict['audio_process'].poll():
                   # wait before trying to start ffmpeg
                   print "ffmpeg process is dead, waiting before trying to restart"
                   randomSleep()
                   streamProcessDict = startVideoCapture()

           twitterSnapCount += 1

    if __name__ == "__main__":


       #if len(sys.argv) > 1:
       #    cameraIDAnswer = sys.argv[1]
       #else:
       #    cameraIDAnswer = raw_input("Enter the Camera ID for your robot, you can get it by pointing a browser to the runmyrobot server %s: " % server)

       cameraIDAnswer = args.camera_id


       main()

    ERROR :

    ffmpeg -n -f mpegts -i http://54.183.232.63:12221 -i logo.png -filter_complex "[0:v]setsar=sar=1[v];[v][1]blend=all_mode='overlay':all_opacity=0.7" -movflags +faststart tmb/video.mp4
    ffmpeg version N-86215-gb5228e4 Copyright (c) 2000-2017 the FFmpeg developers
     built with gcc 4.9.2 (Raspbian 4.9.2-10)
     configuration: --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree --extra-libs=-ldl
     libavutil      55. 63.100 / 55. 63.100
     libavcodec     57. 96.101 / 57. 96.101
     libavformat    57. 72.101 / 57. 72.101
     libavdevice    57.  7.100 / 57.  7.100
     libavfilter     6. 90.100 /  6. 90.100
     libswscale      4.  7.101 /  4.  7.101
     libswresample   2.  8.100 /  2.  8.100
     libpostproc    54.  6.100 / 54.  6.100
    [mpegts @ 0x1a57390] Could not detect TS packet size, defaulting to non-FEC/DVHS
    http://54.183.232.63:12221: could not find codec parameters