Recherche avancée

Médias (1)

Mot : - Tags -/musée

Autres articles (38)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Ecrire une actualité

    21 juin 2013, par

    Présentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
    Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
    Vous pouvez personnaliser le formulaire de création d’une actualité.
    Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...)

  • Publier sur MédiaSpip

    13 juin 2013

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

Sur d’autres sites (4962)

  • FFMPEG Take 1 second clips each video file from a directory of files, and until total playtime reached

    3 février 2021, par Matthew

    I'm working on a music art video project for a song.

    


    I have a directory that contains approximately 400 individual videos

    


      

    • varying lengths (as short as 3 seconds and as long as 31 minutes)
    • 


    • varying file types (mp4 and webm)
    • 


    • varying resolutions/framerates/bitrates
    • 


    


    The output video should consist of :

    


      

    • 1 second chunks of each video
    • 


    • in round-robin fashion
    • 


    • until all videos are played fully or the output total video length reaches a certain limit (example, 20 minutes).
    • 


    • Output video should be 1280×720 at 24fps, with no preference to bitrate.
    • 


    • Videos that are larger should be scaled down and letterboxed (vertically or horizontally).
    • 


    • Audio is not important at all. The video can be silent. I can overlay audio separately.
    • 


    


    I do not want to loop short videos. In the example below, you can see that, for top-left-view-take-1.mp4, each 'clip' that's taken is incrementally further into the video. In other words, it shouldn't take the same 1 second clip from the beginning. The goal is to get further in to each individual video as the output video progresses.

    


    For example, say my directory contains files such as the following (and, for the example here, we'll say that this is all files in the directory) :

    


    overhead-view-take-1.mp4 (3 seconds, for the sake of the question)
top-right-view-take-1.mp4 (3 seconds, for the sake of the question)
top-right-view-take-2.mp4 (5 seconds, for the sake of the question)
outside-kaleidoscope-1.mp4
yellow-kaleidoscope-1.mp4
red-kaleidoscope-1.mp4
brake-lights-slow-1.mp4
soft-city-lights.webm


    


    Assume anything that isn't marked with a video duration is at least 5 seconds long.

    


    Based on the above files & times, here would be the order and time code of each clip during the first 30 seconds of the output video :

    


    Based on each video's total duration, the output video should include 1 second clips from all videos in the directory.

    


    





    


    


    


    


    


    



    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    Output time Clip time Clip file
    00:00-00:01 00:00-00:01 overhead-view-take-1.mp4
    00:01-00:02 00:00-00:01 top-right-view-take-1.mp4
    00:02-00:03 00:00-00:01 top-right-view-take-2.mp4
    00:03-00:04 00:00-00:01 outside-kaleidoscope-1.mp4
    00:04-00:05 00:00-00:01 yellow-kaleidoscope-1.mp4
    00:05-00:06 00:00-00:01 red-kaleidoscope-1.mp4
    00:06-00:07 00:00-00:01 brake-lights-slow-1.mp4
    00:07-00:08 00:00-00:01 soft-city-lights.webm
    00:08-00:09 00:01-00:02 overhead-view-take-1.mp4
    00:09-00:10 00:01-00:02 top-right-view-take-1.mp4
    00:10-00:11 00:01-00:02 top-right-view-take-2.mp4
    00:11-00:12 00:01-00:02 outside-kaleidoscope-1.mp4
    00:12-00:13 00:01-00:02 yellow-kaleidoscope-1.mp4
    00:13-00:14 00:01-00:02 red-kaleidoscope-1.mp4
    00:14-00:15 00:01-00:02 brake-lights-slow-1.mp4
    00:15-00:16 00:01-00:02 soft-city-lights.webm
    00:16-00:17 00:02-00:03 overhead-view-take-1.mp4
    00:17-00:18 00:02-00:03 top-right-view-take-1.mp4
    00:18-00:19 00:02-00:03 top-right-view-take-2.mp4
    00:19-00:20 00:02-00:03 outside-kaleidoscope-1.mp4
    00:20-00:21 00:02-00:03 yellow-kaleidoscope-1.mp4
    00:21-00:22 00:02-00:03 red-kaleidoscope-1.mp4
    00:22-00:23 00:02-00:03 brake-lights-slow-1.mp4
    00:23-00:24 00:02-00:03 soft-city-lights.webm

    


    


    Now, the output video should include 1 second clips only from videos that still have time remaining. The videos that don't have any time remaining, such as overhead-view-take-1.mp4 and top-right-view-take-1.mp4, are not present here.

    


    





    


    


    


    


    


    



    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    


    Output time Clip time Clip file
    00:24-00:25 00:03-00:04 top-right-view-take-2.mp4
    00:25-00:26 00:03-00:04 outside-kaleidoscope-1.mp4
    00:26-00:27 00:03-00:04 yellow-kaleidoscope-1.mp4
    00:27-00:28 00:03-00:04 red-kaleidoscope-1.mp4
    00:28-00:29 00:03-00:04 brake-lights-slow-1.mp4
    00:29-00:30 00:03-00:04 soft-city-lights.webm

    


    


    What I've tried

    


      

    • I've read through the docs and cobbled together some code that produces output, but it only seems to work with images ; I can't get the same thing to work with videos (specifically the incremental chunks).
    • 


    • I've tried manipulating commands meant to `create a snapshot every x seconds/frames' but I've hit dead ends there.
    • 


    • I've also started trying to create a text file to run the input from. That's the point where I thought it would make sense to ask here.
    • 


    


    My main issue is picking off incremental chunks of individual videos, and playing those in sequence.

    


    Thoughts ?

    


    Environment details
I have access to Win, Mac, and Linux machines. So, that environment isn't as important to me. Here's ffmpeg's output :

    


    ffmpeg version 4.3.1-0york0~16.04 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609
  configuration: --prefix=/usr --extra-version='0york0~16.04' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libzimg --enable-pocketsphinx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Hyper fast Audio and Video encoder


    


  • AttributeError : 'FFmpegPCMAudio' object has no attribute '_process' but ffmpeg.exe is installed in the working directory

    2 janvier 2024, par Iaon
    @bot.slash_command(name="say", description="Convert text to speech", default_permissions=False)
@commands.check(check_role)
async def say(ctx, lang: Option(str, "Choose a language", autocomplete=showlangs), text: Option(str, "Enter text to convert to speech")):
    global temp
    await ctx.defer()
    config = configparser.ConfigParser()
    author = ctx.author.id
    authorname = ctx.author.name
    authornick = ctx.author.display_name
    lang = lang.lower()
    texta = text.lower()
    if not lang in lang_list:
        config.read(os.path.join(configs, str(ctx.guild.id)), encoding='utf-8')
        lang = config['DEFAULT']['defvoice']
    if "gg" in texta and "it" in lang:
        texta = re.sub(r"\bgg\b", "g g", texta)
    texta = "".join(texta)
    user = re.findall(r"<@!?(\d+)>", texta)
    if user:
        for x in user:
            try:
                u = await bot.fetch_user(int(x))
            except:
                texta = re.sub(r"<@!?({})>".format(x), "Invalid User", texta)
                continue
            texta = re.sub(r"<@!?({})>".format(x), u.name, texta)
                
    chann = re.findall(r"<#(\d+)>", texta)
    if chann:
        for x in chann:
            try:
                c = await bot.fetch_channel(int(x))
            except:
                texta = re.sub(r"<#({})>".format(x), "Invalid Channel", texta)
                continue
            texta = re.sub(r"<#({})>".format(x), c.name, texta)
    role = re.findall(r"<@&(\d+)>", texta)
    if role:
        for x in role:
            try:
                r = ctx.guild.get_role(int(x))
            except:
                texta = re.sub(r"<@&({})>".format(x), "Invalid Role", texta)
                continue
            texta = re.sub(r"<@&({})>".format(x), r.name, texta)
    texta = re.sub(r"<\/(\w+):(\d+)>", r"\1", texta)
    texta = re.sub(r"", r"\1", texta)
    texta = re.sub(r"<:(\w+):(\d+)>", r"\1", texta)
    time1 = re.findall(r"", texta)
    if time1:
        for x in time1:
            t = datetime.datetime.fromtimestamp(int(x))
            texta = re.sub(r"".format(x), t.strftime("%A %d %B %Y, %H:%M:%S"), texta)
    time2 = re.findall(r"", texta)
    if time2:
        for x in time2:
            t = datetime.datetime.fromtimestamp(int(x[0]))
            texta = re.sub(r"".format(x[0], x[1]), t.strftime("%A %d %B %Y, %H:%M:%S"), texta)
    users = []
    if os.path.isfile(os.path.join(temp, str(ctx.guild.id), ".users")):
        with open(os.path.join(temp, str(ctx.guild.id), ".users"), "rb") as f:
            users = pickle.load(f)
        if not author in users:
            users.append(author)
            with open(os.path.join(temp, str(ctx.guild.id), ".users"), "wb") as f:
                pickle.dump(users, f)
        if len(users) > 1:
            config.read(os.path.join(configs, str(ctx.guild.id)), encoding='utf-8')
            if config['DEFAULT']['multiuser'] == "True":
                if config['DEFAULT']['usenicknames'] == "True":
                    texta = f"{authornick}: {texta}"
                else:
                    texta = f"{authorname}: {texta}"
    else:
        users.append(author)
        with open(os.path.join(temp, str(ctx.guild.id), ".users"), "wb") as f:
            pickle.dump(users, f)
    tts = gTTS(texta, lang=lang)
    if os.name == 'nt':
        source = f"{temp}\{ctx.guild.id}\{ran()}.mp3"
    else:
        source = f"{temp}/{ctx.guild.id}/{ran()}.mp3"
    try:
        tts.save(source)
    except gTTSError:
        code = generate_random_code()
        e = traceback.format_exc()
        print(e + "Error Code: " + code)
        embed = discord.Embed(title=eval("f" + get_guild_language(ctx, 'errtitle')), description=eval("f" + get_guild_language(ctx, 'unexpectederror')), color=0xFF0000)
        await ctx.respond(embed=embed, delete_after=5)
        return
    if await preplay(ctx, source):
        embed=discord.Embed(title=eval("f" + get_guild_language(ctx, 'done')), description=eval("f" + get_guild_language(ctx, 'saylangmess')), color=0x1eff00)
        await ctx.respond(embed=embed, allowed_mentions=discord.AllowedMentions(replied_user=False))

async def hidsay(ctx, lang, text):
    global temp
    await ctx.defer()
    config = configparser.ConfigParser()
    author = ctx.author.id
    authorname = ctx.author.name
    authornick = ctx.author.display_name
    lang = lang.lower()
    texta = text.lower()
    if not lang in lang_list:
        config.read(os.path.join(configs, str(ctx.guild.id)), encoding='utf-8')
        lang = config['DEFAULT']['defvoice']
    if "gg" in texta and "it" in lang:
        texta = re.sub(r"\bgg\b", "g g", texta)
    texta = "".join(texta)
    if texta == "" or texta.isspace():
        embed = discord.Embed(title=eval("f" + get_guild_language(ctx, 'errtitle')), description=eval("f" + get_guild_language(ctx, 'errnoarg')), color=0xFF0000)
        await ctx.respond(embed=embed, delete_after=5)
        return
    user = re.findall(r"<@!?(\d+)>", texta)
    if user:
        for x in user:
            try:
                u = await bot.fetch_user(int(x))
            except:
                texta = re.sub(r"<@!?({})>".format(x), "Invalid User", texta)
                continue
            texta = re.sub(r"<@!?({})>".format(x), u.name, texta)
                
    chann = re.findall(r"<#(\d+)>", texta)
    if chann:
        for x in chann:
            try:
                c = await bot.fetch_channel(int(x))
            except:
                texta = re.sub(r"<#({})>".format(x), "Invalid Channel", texta)
                continue
            texta = re.sub(r"<#({})>".format(x), c.name, texta)
    role = re.findall(r"<@&(\d+)>", texta)
    if role:
        for x in role:
            try:
             r = ctx.guild.get_role(int(x))
            except:
                texta = re.sub(r"<@&({})>".format(x), "Invalid Role", texta)
                continue
            texta = re.sub(r"<@&({})>".format(x), r.name, texta)
    texta = re.sub(r"<\/(\w+):(\d+)>", r"\1", texta)
    texta = re.sub(r"", r"\1", texta)
    texta = re.sub(r"<:(\w+):(\d+)>", r"\1", texta)
    time1 = re.findall(r"", texta)
    if time1:
        for x in time1:
            t = datetime.datetime.fromtimestamp(int(x))
            texta = re.sub(r"".format(x), t.strftime("%A %d %B %Y, %H:%M:%S"), texta)
    time2 = re.findall(r"", texta)
    if time2:
        for x in time2:
            t = datetime.datetime.fromtimestamp(int(x[0]))
            texta = re.sub(r"".format(x[0], x[1]), t.strftime("%A %d %B %Y, %H:%M:%S"), texta)
    users = []
    if os.path.isfile(os.path.join(temp, str(ctx.guild.id), ".users")):
        with open(os.path.join(temp, str(ctx.guild.id), ".users"), "rb") as f:
            users = pickle.load(f)
        if not author in users:
            users.append(author)
            with open(os.path.join(temp, str(ctx.guild.id), ".users"), "wb") as f:
                pickle.dump(users, f)
        if len(users) > 1:
            config.read(os.path.join(configs, str(ctx.guild.id)), encoding='utf-8')
            if config['DEFAULT']['multiuser'] == "True":
                if config['DEFAULT']['usenicknames'] == "True":
                    texta = f"{authornick}: {texta}"
                else:
                    texta = f"{authorname}: {texta}"
    else:
        users.append(author)
        with open(os.path.join(temp, str(ctx.guild.id), ".users"), "wb") as f:
            pickle.dump(users, f)
    tts = gTTS(texta, lang=lang)
    if os.name == 'nt':
        source = f"{temp}\{ctx.guild.id}\{ran()}.mp3"
    else:
        source = f"{temp}/{ctx.guild.id}/{ran()}.mp3"
    try:
        tts.save(source)
    except gTTSError:
        code = generate_random_code()
        e = traceback.format_exc()
        print(e + "Error Code: " + code)
        embed = discord.Embed(title=eval("f" + get_guild_language(ctx, 'errtitle')), description=eval("f" + get_guild_language(ctx, 'unexpectederror')), color=0xFF0000)
        await ctx.respond(embed=embed, delete_after=5)
        return
    if await preplay(ctx, source):
        embed=discord.Embed(title=eval("f" + get_guild_language(ctx, 'done')), description=eval("f" + get_guild_language(ctx, 'saylangmess')), color=0x1eff00)
        await ctx.respond(embed=embed, allowed_mentions=discord.AllowedMentions(replied_user=False), delete_after=1, silent=True)


    


    bot doesn't play when the say command is used. ffmpeg says not found, but ffmpeg.exe is installed in the working directory. I installed the working excecutable file from ffmpeg build website for Windows 10, yet it still doesn't work. I can't figure out what's happening. I'm using Pycord.

    


    The terminal also mentions this

    


      proc = self._process
           ^^^^^^^^^^^^^
AttributeError: 'FFmpegPCMAudio' object has no attribute '_process'


    


  • amix filter is causing audio to disappear

    21 novembre 2019, par Mason

    I’m trying overlay audio onto a video. I have a very simple ffmpeg command (auido.mp3 is much longer than the video)

    ffmpeg -i video.mp4 -i audio.mp3 -filter_complex "[0:a] [1:a] amix=duration=shortest [a]" -map 0:v -map [a] test.mp4

    This produces a silent video. However, when not mapping the video stream

    ffmpeg -i video.mp4 -i audio.mp3 -filter_complex "[0:a] [1:a] amix=duration=shortest [a]" -map [a] test.mp4

    The resulting audio file is as expected.

    What could be causing this issues ?

    (Is there a better way to overlay audio onto a video via ffmpeg ?)

    Edit : log

    ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
     built with gcc 9.1.1 (GCC) 20190807
     configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
     libavutil      56. 31.100 / 56. 31.100
     libavcodec     58. 54.100 / 58. 54.100
     libavformat    58. 29.100 / 58. 29.100
     libavdevice    58.  8.100 / 58.  8.100
     libavfilter     7. 57.100 /  7. 57.100
     libswscale      5.  5.100 /  5.  5.100
     libswresample   3.  5.100 /  3.  5.100
     libpostproc    55.  5.100 / 55.  5.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
     Metadata:
       major_brand     : mp42
       minor_version   : 0
       compatible_brands: mp42mp41
       creation_time   : 2019-11-15T05:28:05.000000Z
     Duration: 00:00:00.53, start: 0.000000, bitrate: 9463 kb/s
       Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 9546 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc (default)
       Metadata:
         creation_time   : 2019-11-15T05:28:05.000000Z
         handler_name    : ?Mainconcept Video Media Handler
         encoder         : AVC Coding
       Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default)
       Metadata:
         creation_time   : 2019-11-15T05:28:05.000000Z
         handler_name    : #Mainconcept MP4 Sound Media Handler
    [mp3 @ 000001fdf5f7f040] Estimating duration from bitrate, this may be inaccurate
    Input #1, mp3, from 'audio.mp3':
     Metadata:
       date            : 2019-11-14 23:31
       id3v2_priv.XMP  : &lt;?xpacket begin="\xef\xbb\xbf" id="W5M0MpCehiHzreSzNTczkc9d"?>\x0a\x0a \x0a  <rdf 256="256" kb="kb"></rdf>s
       Stream #1:0: Audio: mp3, 44100 Hz, stereo, fltp, 256 kb/s
    Stream mapping:
     Stream #0:1 (aac) -> amix:input0 (graph 0)
     Stream #1:0 (mp3float) -> amix:input1 (graph 0)
     Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
     amix (graph 0) -> Stream #0:1 (aac)
    Press [q] to stop, [?] for help
    [libx264 @ 000001fdf64ab700] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
    [libx264 @ 000001fdf64ab700] profile High, level 4.0, 4:2:0, 8-bit
    [libx264 @ 000001fdf64ab700] 264 - core 158 r2984 3759fcb - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to 'test.mp4':
     Metadata:
       major_brand     : mp42
       minor_version   : 0
       compatible_brands: mp42mp41
       encoder         : Lavf58.29.100
       Stream #0:0(eng): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080, q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)
       Metadata:
         creation_time   : 2019-11-15T05:28:05.000000Z
         handler_name    : ?Mainconcept Video Media Handler
         encoder         : Lavc58.54.100 libx264
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
       Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
       Metadata:
         encoder         : Lavc58.54.100 aac
    frame=   15 fps=0.0 q=-1.0 Lsize=     695kB time=00:00:00.40 bitrate=14232.7kbits/s speed=0.437x    
    video:693kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.226150%
    [libx264 @ 000001fdf64ab700] frame I:1     Avg QP:30.52  size:101545
    [libx264 @ 000001fdf64ab700] frame P:7     Avg QP:28.22  size: 44755
    [libx264 @ 000001fdf64ab700] frame B:7     Avg QP:30.76  size: 42074
    [libx264 @ 000001fdf64ab700] consecutive B-frames: 20.0% 40.0% 40.0%  0.0%
    [libx264 @ 000001fdf64ab700] mb I  I16..4: 68.3% 10.5% 21.2%
    [libx264 @ 000001fdf64ab700] mb P  I16..4: 17.6%  4.8%  4.3%  P16..4: 28.5%  4.5%  2.8%  0.0%  0.0%    skip:37.6%
    [libx264 @ 000001fdf64ab700] mb B  I16..4: 17.6%  2.4%  1.3%  B16..8: 37.9%  6.7%  1.3%  direct: 4.9%  skip:27.8%  L0:40.5% L1:54.3% BI: 5.2%
    [libx264 @ 000001fdf64ab700] 8x8 transform intra:13.9% inter:59.5%
    [libx264 @ 000001fdf64ab700] coded y,uvDC,uvAC intra: 54.5% 53.3% 42.3% inter: 15.3% 27.8% 21.6%
    [libx264 @ 000001fdf64ab700] i16 v,h,dc,p:  5% 88%  5%  2%
    [libx264 @ 000001fdf64ab700] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 53% 29%  1%  1%  1%  2%  1%  2%
    [libx264 @ 000001fdf64ab700] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu:  6% 80%  9%  1%  1%  0%  1%  0%  2%
    [libx264 @ 000001fdf64ab700] i8c dc,h,v,p: 16% 80%  3%  1%
    [libx264 @ 000001fdf64ab700] Weighted P-Frames: Y:0.0% UV:0.0%
    [libx264 @ 000001fdf64ab700] ref P L0: 40.3%  4.9% 11.0% 43.8%
    [libx264 @ 000001fdf64ab700] ref B L0: 80.0% 11.1%  8.9%
    [libx264 @ 000001fdf64ab700] kb/s:11349.57
    [aac @ 000001fdf64ac600] Qavg: 41522.195