
Recherche avancée
Médias (1)
-
La conservation du net art au musée. Les stratégies à l’œuvre
26 mai 2011
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (38)
-
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains 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, parPré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 2013Puis-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 MatthewI'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
andtop-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 MasonI’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 : <?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