Recherche avancée

Médias (2)

Mot : - Tags -/media

Autres articles (66)

  • 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 (13084)

  • Adventures In NAS

    1er janvier, par Multimedia Mike — General

    In my post last year about my out-of-control single-board computer (SBC) collection which included my meager network attached storage (NAS) solution, I noted that :

    I find that a lot of my fellow nerds massively overengineer their homelab NAS setups. I’ll explore this in a future post. For my part, people tend to find my homelab NAS solution slightly underengineered.

    So here I am, exploring this is a future post. I’ve been in the home NAS game a long time, but have never had very elaborate solutions for such. For my part, I tend to take an obsessively reductionist view of what constitutes a NAS : Any small computer with a pool of storage and a network connection, running the Linux operating system and the Samba file sharing service.


    Simple hard drive and ethernet cable

    Many home users prefer to buy turnkey boxes, usually that allow you to install hard drives yourself, and then configure the box and its services with a friendly UI. My fellow weird computer nerds often buy cast-off enterprise hardware and set up more resilient, over-engineered solutions, as long as they have strategies to mitigate the noise and dissipate the heat, and don’t mind the electricity bills.

    If it works, awesome ! As an old hand at this, I am rather stuck in my ways, however, preferring to do my own stunts, both with the hardware and software solutions.

    My History With Home NAS Setups
    In 1998, I bought myself a new computer — beige box tower PC, as was the style as the time. This was when normal people only had one computer at most. It ran Windows, but I was curious about this new thing called “Linux” and learned to dual boot that. Later that year, it dawned on me that nothing prevented me from buying a second ugly beige box PC and running Linux exclusively on it. Further, it could be a headless Linux box, connected by ethernet, and I could consolidate files into a single place using this file sharing software named Samba.

    I remember it being fairly onerous to get Samba working in those days. And the internet was not quite so helpful in those days. I recall that the thing that blocked me for awhile was needing to know that I had to specify an entry for the Samba server machine in the LMHOSTS (Lanman hosts) file on the Windows 95 machine.

    However, after I cracked that code, I have pretty much always had some kind of ad-hoc home NAS setup, often combined with a headless Linux development box.

    In the early 2000s, I built a new beige box PC for a file server, with a new hard disk, and a coworker tutored me on setting up a (P)ATA UDMA 133 (or was it 150 ? anyway, it was (P)ATA’s last hurrah before SATA conquered all) expansion card and I remember profiling that the attached hard drive worked at a full 21 MBytes/s reading. It was pretty slick. Except I hadn’t really thought things through. You see, I had a hand-me-down ethernet hub cast-off from my job at the time which I wanted to use. It was a 100 Mbps repeater hub, not a switch, so the catch was that all connected machines had to be capable of 100 Mbps. So, after getting all of my machines (3 at the time) upgraded to support 10/100 ethernet (the old off-brand PowerPC running Linux was the biggest challenge), I profiled transfers and realized that the best this repeater hub could achieve was about 3.6 MBytes/s. For a long time after that, I just assumed that was the upper limit of what a 100 Mbps network could achieve. Obviously, I now know that the upper limit ought to be around 11.2 MBytes/s and if I had gamed out that fact in advance, I would have realized it didn’t make sense to care about super-fast (for the time) disk performance.

    At this time, I was doing a lot for development for MPlayer/xine/FFmpeg. I stored all of my multimedia material on this NAS. I remember being confused when I was working with Y4M data, which is raw frames, which is lots of data. xine, which employed a pre-buffering strategy, would play fine for a few seconds and then stutter. Eventually, I reasoned out that the files I was working with had a data rate about twice what my awful repeater hub supported, which is probably the first time I came to really understand and respect streaming speeds and their implications for multimedia playback.

    Smaller Solutions
    For a period, I didn’t have a NAS. Then I got an Apple AirPort Extreme, which I noticed had a USB port. So I bought a dual drive brick to plug into it and used that for a time. Later (2009), I had this thing called the MSI Wind Nettop which is the only PC I’ve ever seen that can use a CompactFlash (CF) card for a boot drive. So I did just that, and installed a large drive so it could function as a NAS, as well as a headless dev box. I’m still amazed at what a low-power I/O beast this thing is, at least when compared to all the ARM SoCs I have tried in the intervening 1.5 decades. I’ve had spinning hard drives in this thing that could read at 160 MBytes/s (‘dd’ method) and have no trouble saturating the gigabit link at 112 MBytes/s, all with its early Intel Atom CPU.

    Around 2015, I wanted a more capable headless dev box and discovered Intel’s line of NUCs. I got one of the fat models that can hold a conventional 2.5″ spinning drive in addition to the M.2 SATA SSD and I was off and running. That served me fine for a few years, until I got into the ARM SBC scene. One major limitation here is that 2.5″ drives aren’t available in nearly the capacities that make a NAS solution attractive.

    Current Solution
    My current NAS solution, chronicled in my last SBC post– the ODroid-HC2, which is a highly compact ARM SoC with an integrated USB3-SATA bridge so that a SATA drive can be connected directly to it :


    ODROID-HC2 NAS

    ODROID-HC2 NAS


    I tend to be weirdly proficient at recalling dates, so I’m surprised that I can’t recall when I ordered this and put it into service. But I’m pretty sure it was circa 2018. It’s only equipped with an 8 TB drive now, but I seem to recall that it started out with only a 4 TB drive. I think I upgraded to the 8 TB drive early in the pandemic in 2020, when ISPs were implementing temporary data cap amnesty and I was doing what a r/DataHoarder does.

    The HC2 has served me well, even though it has a number of shortcomings for a hardware set chartered for NAS :

    1. While it has a gigabit ethernet port, it’s documented that it never really exceeds about 70 MBytes/s, due to the SoC’s limitations
    2. The specific ARM chip (Samsung Exynos 5422 ; more than a decade old as of this writing) lacks cryptography instructions, slowing down encryption if that’s your thing (e.g., LUKS)
    3. While the SoC supports USB3, that block is tied up for the SATA interface ; the remaining USB port is only capable of USB2 speeds
    4. 32-bit ARM, which prevented me from running certain bits of software I wanted to try (like Minio)
    5. Only 1 drive, so no possibility for RAID (again, if that’s your thing)

    I also love to brag on the HC2’s power usage : I once profiled the unit for a month using a Kill-A-Watt and under normal usage (with the drive spinning only when in active use). The unit consumed 4.5 kWh… in an entire month.

    New Solution
    Enter the ODroid-HC4 (I purchased mine from Ameridroid but Hardkernel works with numerous distributors) :


    ODroid-HC4 with 2 drives

    ODroid-HC4 with an SSD and a conventional drive


    I ordered this earlier in the year and after many months of procrastinating and obsessing over the best approach to take with its general usage, I finally have it in service as my new NAS. Comparing point by point with the HC2 :

    1. The gigabit ethernet runs at full speed (though a few things on my network run at 2.5 GbE now, so I guess I’ll always be behind)
    2. The ARM chip (Amlogic S905X3) has AES cryptography acceleration and handles all the LUKS stuff without breaking a sweat ; “cryptsetup benchmark” reports between 500-600 MBytes/s on all the AES variants
    3. The USB port is still only USB2, so no improvement there
    4. 64-bit ARM, which means I can run Minio to simulate object storage in a local dev environment for some larger projects I would like to undertake
    5. Supports 2 drives, if RAID is your thing

    How I Set It Up
    How to set up the drive configuration ? As should be apparent from the photo above, I elected for an SSD (500 GB) for speed, paired with a conventional spinning HDD (18 TB) for sheer capacity. I’m not particularly trusting of RAID. I’ve watched it fail too many times, on systems that I don’t even manage, not to mention that aforementioned RAID brick that I had attached to the Apple AirPort Extreme.

    I had long been planning to use bcache, the block caching interface for Linux, which can use the SSD as a speedy cache in front of the more capacious disk. There is also LVM cache, which is supposed to achieve something similar. And then I had to evaluate the trade-offs in whether I wanted write-back, write-through, or write-around configurations.

    This was all predicated on the assumption that the spinning drive would not be able to saturate the gigabit connection. When I got around to setting up the hardware and trying some basic tests, I found that the conventional HDD had no trouble keeping up with the gigabit data rate, both reading and writing, somewhat obviating the need for SSD acceleration using any elaborate caching mechanisms.

    Maybe that’s because I sprung for the WD Red Pro series this time, rather than the Red Plus ? I’m guessing that conventional drives do deteriorate over the years. I’ll find out.

    For the operating system, I stuck with my newest favorite Linux distro : DietPi. While HardKernel (parent of ODroid) makes images for the HC units, I had also used DietPi for the HC2 for the past few years, as it tends to stay more up to date.

    Then I rsync’d my data from HC2 -> HC4. It was only about 6.5 TB of total data but it took days as this WD Red Plus drive is only capable of reading at around 10 MBytes/s these days. Painful.

    For file sharing, I’m pretty sure most normal folks have nice web UIs in their NAS boxes which allow them to easily configure and monitor the shares. I know there are such applications I could set up. But I’ve been doing this so long, I just do a bare bones setup through the terminal. I installed regular Samba and then brought over my smb.conf file from the HC2. 1 by 1, I tested that each of the old shares were activated on the new NAS and deactivated on the old NAS. I also set up a new share for the SSD. I guess that will just serve as a fast I/O scratch space on the NAS.

    The conventional drive spins up and down. That’s annoying when I’m actively working on something but manage not to hit the drive for like 5 minutes and then an application blocks while the drive wakes up. I suppose I could set it up so that it is always running. However, I micro-manage this with a custom bash script I wrote a long time ago which logs into the NAS and runs the “date” command every 2 minutes, appending the output to a file. As a bonus, it also prints data rate up/down stats every 5 seconds. The spinning file (“nas-main/zz-keep-spinning/keep-spinning.txt”) has never been cleared and has nearly a quarter million lines. I suppose that implies that it has kept the drive spinning for 1/2 million minutes which works out to around 347 total days. I should compare that against the drive’s SMART stats, if I can remember how. The earliest timestamp in the file is from March 2018, so I know the HC2 NAS has been in service at least that long.

    For tasks, vintage cron still does everything I could need. In this case, that means reaching out to websites (like this one) and automatically backing up static files.

    I also have to have a special script for starting up. Fortunately, I was able to bring this over from the HC2 and tweak it. The data disks (though not boot disk) are encrypted. Those need to be unlocked and only then is it safe for the Samba and Minio services to start up. So one script does all that heavy lifting in the rare case of a reboot (this is the type of system that’s well worth having on a reliable UPS).

    Further Work
    I need to figure out how to use the OLED display on the NAS, and how to make it show something more useful than the current time and date, which is what it does in its default configuration with HardKernel’s own Linux distro. With DietPi, it does nothing by default. I’m thinking it should be able to show the percent usage of each of the 2 drives, at a minimum.

    I also need to establish a more responsible backup regimen. I’m way too lazy about this. Fortunately, I reason that I can keep the original HC2 in service, repurposed to accept backups from the main NAS. Again, I’m sort of micro-managing this since a huge amount of data isn’t worth backing up (remember the whole DataHoarder bit), but the most important stuff will be shipped off.

    The post Adventures In NAS first appeared on Breaking Eggs And Making Omelettes.

  • ffmpeg : fps drop when one -map udp output unreachable [closed]

    14 mai 2024, par user25041039

    I stream a video from a raspberry pi (server) to a splitscreen of 5x5 devices (clients) through an ethernet LAN.

    


    Server

    


    On the server side, I use the following ffmpeg command that :

    


      

    1. reads a video list in loop ;
    2. 


    3. splits it into 25 different streams ;
    4. 


    5. maps each stream to a device through udp.
    6. 


    


    I also have several options to minimize latency and keep the different subscreens in sync.

    


    ffmpeg -loglevel repeat+level+verbose -re -copyts -start_at_zero -rtbufsize 100000k \
    -stream_loop -1 -f concat -i stream.lst -an \
    -filter_complex "\
    [0]crop=iw/5:ih/5:0*iw/5:0*ih/5[11];
    [0]crop=iw/5:ih/5:1*iw/5:0*ih/5[12];
    [...] # truncated for readability
    [0]crop=iw/5:ih/5:4*iw/5:4*ih/5[55]" \
    -map '[11]?' -flush_packets 1 -preset ultrafast -vcodec libx264 -tune zerolatency -f mpegts "udp://100.64.0.11:1234" \
    -map '[12]?' -flush_packets 1 -preset ultrafast -vcodec libx264 -tune zerolatency -f mpegts "udp://100.64.0.12:1234" \
    [...] # truncated for readability
    -map '[55]?' -flush_packets 1 -preset ultrafast -vcodec libx264 -tune zerolatency -f mpegts "udp://100.64.0.55:1234"


    


    Clients

    


    On the client side, I use mpv to read the stream and display it. There are also options for low-latency.

    


    mpv --no-cache --force-seekable=yes --profile=low-latency --untimed --no-audio --video-rotate=90 --fs --no-config --vo=gpu --hwdec=auto udp://100.64.0.1:1234/


    


    My problem

    


    When a device is unreachable through the LAN (eg : powered down), the FPS stated by ffmpeg drops after a short period ( 10 seconds), and the stream is laggy (= some frames, then pause for 1s, ...). What I expect is the stream to go on normally, just having one of the subscreens black.

    


    Here is the full log of ffmpeg when I start the stream normally then power down one of the clients after 15s.

    


    [info] ffmpeg version 5.1.4-0+rpt3+deb12u1 Copyright (c) 2000-2023 the FFmpeg developers
[info]   built with gcc 12 (Debian 12.2.0-14)
[info]   configuration: --prefix=/usr --extra-version=0+rpt3+deb12u1 --toolchain=hardened --incdir=/usr/include/aarch64-linux-gnu --enable-gpl --disable-stripping --disable-mmal --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librist --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sand --enable-sdl2 --disable-sndio --enable-libjxl --enable-neon --enable-v4l2-request --enable-libudev --enable-epoxy --libdir=/usr/lib/aarch64-linux-gnu --arch=arm64 --enable-pocketsphinx --enable-librsvg --enable-libdc1394 --enable-libdrm --enable-vout-drm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libplacebo --enable-librav1e --enable-shared
[info]   libavutil      57. 28.100 / 57. 28.100
[info]   libavcodec     59. 37.100 / 59. 37.100
[info]   libavformat    59. 27.100 / 59. 27.100
[info]   libavdevice    59.  7.100 / 59.  7.100
[info]   libavfilter     8. 44.100 /  8. 44.100
[info]   libswscale      6.  7.100 /  6.  7.100
[info]   libswresample   4.  7.100 /  4.  7.100
[info]   libpostproc    56.  6.100 / 56.  6.100
[h264 @ 0x5555f1407de0] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5555f1407720] [info] Auto-inserting h264_mp4toannexb bitstream filter
[h264 @ 0x5555f140eca0] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[info] Input #0, concat, from 'stream.lst':
[info]   Duration: N/A, start: 0.000000, bitrate: 47 kb/s
[info]   Stream #0:0(und): Video: h264 (Main), 1 reference frame (avc1 / 0x31637661), yuv420p(tv, bt709, progressive, left), 1920x1080 (1920x1088), 47 kb/s, 24 fps, 24 tbr, 12288 tbn
[info]     Metadata:
[info]       handler_name    : Core Media Video
[info]       vendor_id       : [0][0][0][0]
[info] Stream mapping:
[info]   Stream #0:0 (h264) -> crop:default
... truncated
[info]   Stream #0:0 (h264) -> crop:default
[info]   crop:default -> Stream #0:0 (libx264)
... truncated
[info]   crop:default -> Stream #24:0 (libx264)
[info] Press [q] to stop, [?] for help
[h264 @ 0x5555f13fe050] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[graph 0 input from stream 0:0 @ 0x5555f1dfad40] [verbose] w:1920 h:1080 pixfmt:yuv420p tb:1/12288 fr:24/1 sar:0/1
... truncated
[graph 0 input from stream 0:0 @ 0x5555f1e01a50] [verbose] w:1920 h:1080 pixfmt:yuv420p tb:1/12288 fr:24/1 sar:0/1
[Parsed_crop_24 @ 0x5555f1dfa860] [verbose] w:1920 h:1080 sar:0/1 -> w:384 h:216 sar:0/1
... truncated
[Parsed_crop_0 @ 0x5555f1df23e0] [verbose] w:1920 h:1080 sar:0/1 -> w:384 h:216 sar:0/1
[libx264 @ 0x5555f147c220] [info] using cpu capabilities: ARMv8 NEON
[libx264 @ 0x5555f147c220] [info] profile Constrained Baseline, level 1.3, 4:2:0, 8-bit
[mpegts @ 0x5555f148ab70] [verbose] service 1 using PCR in pid=256, pcr_period=83ms
[mpegts @ 0x5555f148ab70] [verbose] muxrate VBR, sdt every 500 ms, pat/pmt every 100 ms
[info] Output #0, mpegts, to 'udp://100.64.0.11:1234':
[info]   Metadata:
[info]     encoder         : Lavf59.27.100
[info]   Stream #0:0: Video: h264, 1 reference frame, yuv420p(tv, bt709, progressive, left), 384x216 (0x0), q=2-31, 24 fps, 90k tbn
[info]     Metadata:
[info]       encoder         : Lavc59.37.100 libx264
[info]     Side data:
[info]       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
[libx264 @ 0x5555f1428760] [info] using cpu capabilities: ARMv8 NEON
[libx264 @ 0x5555f1428760] [info] profile Constrained Baseline, level 1.3, 4:2:0, 8-bit
[mpegts @ 0x5555f148b080] [verbose] service 1 using PCR in pid=256, pcr_period=83ms
[mpegts @ 0x5555f148b080] [verbose] muxrate VBR, sdt every 500 ms, pat/pmt every 100 ms

... truncated
[info] Output #24, mpegts, to 'udp://100.64.0.55:1234':
[info]   Metadata:
[info]     encoder         : Lavf59.27.100
[info]   Stream #24:0: Video: h264, 1 reference frame, yuv420p(tv, bt709, progressive, left), 384x216 (0x0), q=2-31, 24 fps, 90k tbn
[info]     Metadata:
[info]       encoder         : Lavc59.37.100 libx264
[info]     Side data:
[info]       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
[info] frame=    1 fps=0.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 size=   [info] frame=    9 fps=0.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=13.0 q=12.0 size=   [info] frame=   22 fps= 21 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=   34 fps= 22 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=   46 fps= 22 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=   58 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [AVIOContext @ 0x5555f140fa70] [verbose] Statistics: 19517 bytes read, 0 seeks
[h264 @ 0x5555f1407de0] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5555f1407720] [info] Auto-inserting h264_mp4toannexb bitstream filter
[info] frame=   70 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=   83 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=   95 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  107 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  119 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  132 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [AVIOContext @ 0x5555f140fa70] [verbose] Statistics: 19240 bytes read, 0 seeks
[h264 @ 0x5555f1407de0] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5555f1407720] [info] Auto-inserting h264_mp4toannexb bitstream filter
[info] frame=  144 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  156 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  168 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  180 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  193 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=13.0 q=12.0 q=12.0 q=27.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  205 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=13.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [AVIOContext @ 0x5555f140fa70] [verbose] Statistics: 19218 bytes read, 0 seeks
[h264 @ 0x5555f1407de0] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5555f1407720] [info] Auto-inserting h264_mp4toannexb bitstream filter
[h264 @ 0x5555f17af150] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[concat @ 0x5555f13febf0] [warning] New audio stream 0:1 at pos:68549 and DTS:8.99977s
[info] frame=  217 fps= 24 q=14.0 q=20.0 q=14.0 q=26.0 q=25.0 q=17.0 q=19.0 q=13.0 q=25.0 q=25.0 q=22.0 q=19.0 q=14.0 q=25.0 q=22.0 q=22.0 q=19.0 q=14.0 q=22.0 q=13.0 q=23.0 q=20.0 q=13.0 q=22.0 q=14.0 size=   [info] frame=  229 fps= 24 q=14.0 q=22.0 q=14.0 q=26.0 q=24.0 q=18.0 q=21.0 q=15.0 q=25.0 q=24.0 q=20.0 q=22.0 q=15.0 q=25.0 q=21.0 q=21.0 q=22.0 q=15.0 q=23.0 q=12.0 q=22.0 q=22.0 q=12.0 q=23.0 q=14.0 size=   [info] frame=  241 fps= 24 q=16.0 q=22.0 q=15.0 q=26.0 q=25.0 q=17.0 q=22.0 q=18.0 q=25.0 q=24.0 q=20.0 q=22.0 q=17.0 q=25.0 q=22.0 q=21.0 q=23.0 q=17.0 q=23.0 q=15.0 q=21.0 q=23.0 q=17.0 q=23.0 q=15.0 size=   [info] frame=  253 fps= 24 q=18.0 q=24.0 q=19.0 q=26.0 q=25.0 q=17.0 q=23.0 q=20.0 q=26.0 q=25.0 q=21.0 q=23.0 q=19.0 q=26.0 q=23.0 q=22.0 q=22.0 q=19.0 q=23.0 q=15.0 q=23.0 q=22.0 q=19.0 q=22.0 q=16.0 size=   [info] frame=  265 fps= 24 q=20.0 q=23.0 q=19.0 q=27.0 q=26.0 q=19.0 q=25.0 q=18.0 q=27.0 q=25.0 q=23.0 q=25.0 q=18.0 q=26.0 q=22.0 q=24.0 q=23.0 q=17.0 q=22.0 q=14.0 q=16.0 q=19.0 q=14.0 q=18.0 q=14.0 size=   [info] frame=  278 fps= 24 q=12.0 q=22.0 q=25.0 q=21.0 q=15.0 q=12.0 q=24.0 q=24.0 q=25.0 q=13.0 q=12.0 q=25.0 q=23.0 q=24.0 q=12.0 q=12.0 q=25.0 q=26.0 q=24.0 q=12.0 q=12.0 q=17.0 q=22.0 q=17.0 q=12.0 size=   [info] frame=  290 fps= 24 q=13.0 q=22.0 q=22.0 q=22.0 q=16.0 q=18.0 q=22.0 q=22.0 q=22.0 q=18.0 q=19.0 q=22.0 q=22.0 q=21.0 q=18.0 q=16.0 q=22.0 q=21.0 q=21.0 q=17.0 q=12.0 q=22.0 q=21.0 q=22.0 q=14.0 size=   [info] frame=  302 fps= 24 q=18.0 q=21.0 q=22.0 q=21.0 q=19.0 q=20.0 q=21.0 q=21.0 q=21.0 q=20.0 q=20.0 q=21.0 q=21.0 q=21.0 q=19.0 q=20.0 q=21.0 q=21.0 q=22.0 q=19.0 q=17.0 q=22.0 q=21.0 q=21.0 q=17.0 size=   [info] frame=  314 fps= 24 q=19.0 q=21.0 q=21.0 q=21.0 q=20.0 q=20.0 q=21.0 q=21.0 q=21.0 q=20.0 q=20.0 q=21.0 q=21.0 q=21.0 q=20.0 q=20.0 q=21.0 q=20.0 q=21.0 q=20.0 q=19.0 q=21.0 q=21.0 q=21.0 q=19.0 size=   [info] frame=  326 fps= 24 q=20.0 q=21.0 q=21.0 q=20.0 q=21.0 q=21.0 q=21.0 q=20.0 q=21.0 q=21.0 q=21.0 q=21.0 q=20.0 q=21.0 q=21.0 q=21.0 q=21.0 q=20.0 q=21.0 q=21.0 q=20.0 q=21.0 q=21.0 q=21.0 q=20.0 size=   [info] frame=  339 fps= 24 q=20.0 q=20.0 q=21.0 q=20.0 q=21.0 q=21.0 q=20.0 q=19.0 q=21.0 q=21.0 q=21.0 q=21.0 q=20.0 q=20.0 q=21.0 q=20.0 q=21.0 q=20.0 q=20.0 q=21.0 q=20.0 q=21.0 q=20.0 q=21.0 q=20.0 size=   [info] frame=  351 fps= 24 q=21.0 q=20.0 q=21.0 q=20.0 q=20.0 q=20.0 q=20.0 q=19.0 q=21.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=21.0 q=21.0 q=21.0 q=20.0 q=20.0 q=20.0 q=21.0 q=21.0 q=21.0 q=21.0 q=20.0 size=   [info] frame=  363 fps= 24 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=19.0 q=20.0 q=20.0 q=21.0 q=20.0 q=20.0 q=20.0 q=21.0 q=21.0 q=21.0 q=20.0 q=20.0 q=21.0 q=21.0 q=21.0 q=20.0 q=21.0 q=21.0 size=   [info] frame=  375 fps= 24 q=20.0 q=20.0 q=20.0 q=19.0 q=20.0 q=20.0 q=20.0 q=19.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=19.0 q=21.0 q=21.0 q=20.0 q=20.0 q=20.0 q=21.0 q=20.0 q=21.0 q=20.0 q=21.0 q=21.0 size=   [info] frame=  387 fps= 24 q=20.0 q=20.0 q=20.0 q=19.0 q=20.0 q=20.0 q=19.0 q=19.0 q=20.0 q=20.0 q=20.0 q=20.0 q=20.0 q=19.0 q=21.0 q=21.0 q=20.0 q=19.0 q=19.0 q=20.0 q=21.0 q=21.0 q=19.0 q=21.0 q=20.0 size=   [info] frame=  400 fps= 24 q=20.0 q=20.0 q=20.0 q=19.0 q=20.0 q=20.0 q=18.0 q=18.0 q=19.0 q=20.0 q=20.0 q=19.0 q=20.0 q=19.0 q=20.0 q=20.0 q=20.0 q=19.0 q=19.0 q=20.0 q=20.0 q=21.0 q=19.0 q=19.0 q=20.0 size=   [info] frame=  412 fps= 24 q=20.0 q=19.0 q=19.0 q=19.0 q=19.0 q=20.0 q=18.0 q=18.0 q=19.0 q=19.0 q=20.0 q=19.0 q=20.0 q=19.0 q=19.0 q=20.0 q=20.0 q=19.0 q=19.0 q=19.0 q=20.0 q=21.0 q=19.0 q=19.0 q=19.0 size=   [info] frame=  424 fps= 24 q=20.0 q=19.0 q=20.0 q=20.0 q=19.0 q=20.0 q=18.0 q=19.0 q=19.0 q=19.0 q=20.0 q=19.0 q=20.0 q=19.0 q=19.0 q=20.0 q=20.0 q=19.0 q=19.0 q=19.0 q=21.0 q=21.0 q=19.0 q=19.0 q=19.0 size=   [info] frame=  436 fps= 24 q=20.0 q=18.0 q=19.0 q=20.0 q=18.0 q=20.0 q=18.0 q=18.0 q=19.0 q=18.0 q=20.0 q=19.0 q=20.0 q=19.0 q=19.0 q=20.0 q=19.0 q=19.0 q=19.0 q=18.0 q=21.0 q=21.0 q=19.0 q=19.0 q=19.0 size=   [info] frame=  448 fps= 24 q=19.0 q=18.0 q=19.0 q=20.0 q=18.0 q=19.0 q=18.0 q=18.0 q=19.0 q=18.0 q=19.0 q=19.0 q=20.0 q=19.0 q=18.0 q=20.0 q=19.0 q=19.0 q=19.0 q=18.0 q=21.0 q=21.0 q=19.0 q=19.0 q=19.0 size=   [info] frame=  460 fps= 24 q=19.0 q=18.0 q=19.0 q=20.0 q=18.0 q=19.0 q=18.0 q=18.0 q=19.0 q=18.0 q=19.0 q=19.0 q=20.0 q=19.0 q=18.0 q=20.0 q=19.0 q=19.0 q=20.0 q=18.0 q=20.0 q=21.0 q=19.0 q=19.0 q=18.0 size=   [info] frame=  472 fps= 24 q=19.0 q=18.0 q=19.0 q=20.0 q=18.0 q=19.0 q=18.0 q=18.0 q=19.0 q=18.0 q=19.0 q=19.0 q=19.0 q=19.0 q=18.0 q=19.0 q=19.0 q=19.0 q=20.0 q=18.0 q=20.0 q=21.0 q=19.0 q=19.0 q=18.0 size=   [info] frame=  484 fps= 24 q=19.0 q=18.0 q=19.0 q=20.0 q=18.0 q=19.0 q=18.0 q=18.0 q=19.0 q=18.0 q=19.0 q=19.0 q=19.0 q=19.0 q=18.0 q=19.0 q=19.0 q=19.0 q=19.0 q=18.0 q=20.0 q=21.0 q=19.0 q=20.0 q=18.0 size=   [info] frame=  496 fps= 24 q=21.0 q=20.0 q=21.0 q=21.0 q=18.0 q=20.0 q=21.0 q=21.0 q=21.0 q=18.0 q=20.0 q=21.0 q=22.0 q=21.0 q=18.0 q=21.0 q=21.0 q=21.0 q=21.0 q=18.0 q=21.0 q=21.0 q=21.0 q=20.0 q=19.0 size=   [info] frame=  509 fps= 24 q=21.0 q=20.0 q=22.0 q=21.0 q=17.0 q=21.0 q=22.0 q=22.0 q=22.0 q=18.0 q=20.0 q=22.0 q=22.0 q=22.0 q=17.0 q=21.0 q=22.0 q=22.0 q=22.0 q=18.0 q=21.0 q=22.0 q=22.0 q=20.0 q=18.0 size=   [info] frame=  521 fps= 24 q=20.0 q=21.0 q=22.0 q=21.0 q=17.0 q=21.0 q=22.0 q=23.0 q=22.0 q=17.0 q=20.0 q=22.0 q=23.0 q=22.0 q=17.0 q=21.0 q=22.0 q=22.0 q=22.0 q=17.0 q=21.0 q=22.0 q=22.0 q=21.0 q=18.0 size=   [info] frame=  533 fps= 24 q=20.0 q=20.0 q=22.0 q=21.0 q=15.0 q=20.0 q=22.0 q=23.0 q=22.0 q=16.0 q=19.0 q=22.0 q=23.0 q=22.0 q=16.0 q=21.0 q=22.0 q=22.0 q=22.0 q=16.0 q=21.0 q=22.0 q=22.0 q=21.0 q=17.0 size=   [AVIOContext @ 0x5555f140fa70] [verbose] Statistics: 3205712 bytes read, 2 seeks
[h264 @ 0x5555f1df2c00] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5555f1407720] [info] Auto-inserting h264_mp4toannexb bitstream filter
[h264 @ 0x5555f1949030] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[info] frame=  546 fps= 24 q=16.0 q=17.0 q=18.0 q=18.0 q=13.0 q=17.0 q=18.0 q=18.0 q=18.0 q=13.0 q=16.0 q=18.0 q=19.0 q=18.0 q=14.0 q=17.0 q=19.0 q=18.0 q=18.0 q=14.0 q=18.0 q=19.0 q=18.0 q=18.0 q=14.0 size=   [info] frame=  558 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=14.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  570 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  582 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  594 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  606 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  618 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  631 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  643 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  655 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [AVIOContext @ 0x5555f140fa70] [verbose] Statistics: 120365 bytes read, 2 seeks
[h264 @ 0x5555f1df2c00] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5555f1407720] [info] Auto-inserting h264_mp4toannexb bitstream filter
[h264 @ 0x5555f1949030] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[info] frame=  667 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  679 fps= 24 q=20.0 q=12.0 q=12.0 q=12.0 q=12.0 q=20.0 q=12.0 q=25.0 q=12.0 q=12.0 q=21.0 q=20.0 q=24.0 q=12.0 q=12.0 q=20.0 q=19.0 q=22.0 q=13.0 q=13.0 q=13.0 q=14.0 q=17.0 q=12.0 q=12.0 size=   [info] frame=  691 fps= 24 q=17.0 q=12.0 q=21.0 q=12.0 q=12.0 q=15.0 q=13.0 q=23.0 q=12.0 q=12.0 q=16.0 q=19.0 q=21.0 q=17.0 q=12.0 q=15.0 q=12.0 q=21.0 q=13.0 q=13.0 q=12.0 q=12.0 q=13.0 q=12.0 q=12.0 size=   [info] frame=  703 fps= 24 q=19.0 q=12.0 q=21.0 q=12.0 q=12.0 q=16.0 q=12.0 q=23.0 q=12.0 q=12.0 q=14.0 q=17.0 q=21.0 q=15.0 q=12.0 q=13.0 q=12.0 q=20.0 q=13.0 q=13.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  715 fps= 24 q=20.0 q=12.0 q=20.0 q=15.0 q=12.0 q=18.0 q=22.0 q=23.0 q=23.0 q=12.0 q=16.0 q=17.0 q=22.0 q=17.0 q=12.0 q=15.0 q=21.0 q=22.0 q=13.0 q=13.0 q=12.0 q=14.0 q=13.0 q=12.0 q=12.0 size=   [info] frame=  728 fps= 24 q=18.0 q=12.0 q=12.0 q=12.0 q=12.0 q=16.0 q=14.0 q=23.0 q=12.0 q=12.0 q=16.0 q=19.0 q=22.0 q=13.0 q=12.0 q=15.0 q=19.0 q=21.0 q=13.0 q=12.0 q=12.0 q=12.0 q=14.0 q=12.0 q=12.0 size=   [info] frame=  740 fps= 24 q=17.0 q=12.0 q=12.0 q=12.0 q=12.0 q=15.0 q=14.0 q=22.0 q=12.0 q=12.0 q=14.0 q=18.0 q=21.0 q=12.0 q=12.0 q=15.0 q=19.0 q=20.0 q=13.0 q=13.0 q=12.0 q=13.0 q=16.0 q=12.0 q=12.0 size=   [info] frame=  752 fps= 24 q=23.0 q=14.0 q=14.0 q=14.0 q=14.0 q=21.0 q=16.0 q=25.0 q=14.0 q=14.0 q=21.0 q=20.0 q=23.0 q=16.0 q=20.0 q=22.0 q=21.0 q=23.0 q=22.0 q=20.0 q=22.0 q=24.0 q=24.0 q=23.0 q=23.0 size=   [info] frame=  764 fps= 24 q=16.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=14.0 q=23.0 q=12.0 q=12.0 q=14.0 q=18.0 q=22.0 q=12.0 q=12.0 q=13.0 q=16.0 q=18.0 q=13.0 q=13.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  776 fps= 24 q=21.0 q=14.0 q=19.0 q=12.0 q=12.0 q=20.0 q=23.0 q=23.0 q=19.0 q=12.0 q=15.0 q=23.0 q=23.0 q=21.0 q=12.0 q=16.0 q=16.0 q=20.0 q=13.0 q=13.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  788 fps= 24 q=22.0 q=12.0 q=19.0 q=18.0 q=13.0 q=21.0 q=12.0 q=23.0 q=24.0 q=16.0 q=19.0 q=12.0 q=24.0 q=26.0 q=23.0 q=15.0 q=12.0 q=27.0 q=25.0 q=16.0 q=13.0 q=13.0 q=16.0 q=12.0 q=12.0 size=   [info] frame=  800 fps= 24 q=21.0 q=12.0 q=12.0 q=12.0 q=12.0 q=18.0 q=12.0 q=12.0 q=12.0 q=12.0 q=13.0 q=12.0 q=15.0 q=15.0 q=12.0 q=13.0 q=12.0 q=14.0 q=17.0 q=13.0 q=13.0 q=12.0 q=13.0 q=12.0 q=12.0 size=   [AVIOContext @ 0x5555f140fa70] [verbose] Statistics: 984786 bytes read, 2 seeks
[h264 @ 0x5555f1407de0] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5555f1407720] [info] Auto-inserting h264_mp4toannexb bitstream filter
[h264 @ 0x5555f187c0c0] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[info] frame=  812 fps= 24 q=21.0 q=12.0 q=12.0 q=12.0 q=12.0 q=18.0 q=13.0 q=12.0 q=12.0 q=12.0 q=13.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=16.0 q=15.0 q=12.0 q=12.0 q=12.0 q=13.0 q=16.0 q=12.0 size=   [info] frame=  824 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  836 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  848 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  861 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=13.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=24.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  873 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  885 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=23.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=13.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  897 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  909 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=13.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=25.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  922 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  934 fps= 24 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  938 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [AVIOContext @ 0x5555f140fa70] [verbose] Statistics: 29154 bytes read, 0 seeks
[h264 @ 0x5555f1407de0] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x5555f1407720] [info] Auto-inserting h264_mp4toannexb bitstream filter
[h264 @ 0x5555f17af150] [verbose] Reinit context to 1920x1088, pix_fmt: yuv420p
[info] frame=  963 fps= 23 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=15.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  967 fps= 22 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=17.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  994 fps= 22 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=15.0 q=19.0 q=12.0 q=12.0 q=12.0 q=17.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame=  997 fps= 21 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=15.0 q=19.0 q=12.0 q=12.0 q=12.0 q=18.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame= 1023 fps= 21 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=14.0 q=20.0 q=18.0 q=15.0 q=15.0 q=14.0 q=13.0 q=13.0 q=13.0 q=13.0 q=13.0 q=13.0 size=   [info] frame= 1029 fps= 20 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=14.0 q=20.0 q=15.0 q=14.0 q=15.0 q=15.0 q=13.0 q=13.0 q=14.0 q=14.0 q=14.0 q=13.0 size=   [info] frame= 1055 fps= 21 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=15.0 q=19.0 q=15.0 q=14.0 q=15.0 q=16.0 q=12.0 q=13.0 q=13.0 q=13.0 q=13.0 q=12.0 size=   [info] frame= 1060 fps= 20 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=16.0 q=19.0 q=15.0 q=14.0 q=15.0 q=16.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=   [info] frame= 1086 fps= 20 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=13.0 q=16.0 q=15.0 q=14.0 q=14.0 q=12.0 q=13.0 q=13.0 q=13.0 q=13.0 q=12.0 size=   [info] frame= 1092 fps= 19 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=13.0 q=16.0 q=13.0 q=13.0 q=13.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 q=12.0 size=


    


    What I tried & My guesses

    


    My best guess is that the issue comes from one of the data buffers between the two applications (ffmpeg -> mpv). There are several buffers and I don't know exactly which ones, but there is at least a UDP buffer at the output of the server and another one at the input of the client.

    


    When a client is unreachable, the server's UDP buffer seems to fill up and thus don't continue streaming for other clients.

    


    I tried to tweak several parameters of ffmpeg concerning buffers but without success.

    


      

    • udp://100.64.0.32:1234?buffer_size=1024&connect=0&fifo_size=10&overrun_nonfatal=0
    • 


    • fps_mode
    • 


    • thread_queue_size
    • 


    


    Any help is welcome !

    


  • Data Privacy Issues to Be Aware of and How to Overcome Them

    9 mai 2024, par Erin

    Data privacy issues are a significant concern for users globally.

    Around 76% of US consumers report that they would not buy from a company they do not trust with their data. In the European Union, a 2021 study found that around 53% of EU internet users refused to let companies access their data for advertising purposes.

    These findings send a clear message : if companies want to build consumer trust, they must honour users’ data privacy concerns. The best way to do this is by adopting transparent, ethical data collection practices — which also supports the simultaneous goal of maintaining compliance with regional data privacy acts.

    So what exactly is data privacy ?

    Explanation of the term data privacy

    Data privacy refers to the protections that govern how personal data is collected and used, especially with respect to an individual’s control over when, where and what information they share with others.

    Data privacy also refers to the extent to which organisations and governments go to protect the personal data that they collect. Different parts of the world have different data privacy acts. These regulations outline the measures organisations must take to safeguard the data they collect from their consumers and residents. They also outline the rights of data subjects, such as the right to opt out of a data collection strategy and correct false data. 

    As more organisations rely on personal data to provide services, people have become increasingly concerned about data privacy, particularly the level of control they have over their data and what organisations and governments do with their data.

    Why should organisations take data privacy issues seriously ?

    Organisations should take data privacy seriously because consumer trust depends on it and because they have a legal obligation to do so. Doing so also helps organisations prevent threat actors from illegally accessing consumer data. Strong data privacy helps you : 

    Comply with data protection acts

    Organisations that fail to comply with regional data protection acts could face severe penalties. For example, consider the General Data Protection Regulation (GDPR), which is the primary data protection action for the European Union. The penalty system for GDPR fines consists of two tiers :

    • Less severe infringements — Which can lead to fines of up to €10 million (or 2% of an organisation’s worldwide annual revenue from the last financial year) per infringement.
    • More severe infringements — This can lead to fines of up to €20 million (or 4% of an organisation’s worldwide annual revenue from the last financial year) per infringement.

    The monetary value of these penalties is significant, so it is in the best interest of all organisations to be GDPR compliant. Other data protection acts have similar penalty systems to the GDPR. In Brazil, organisations non-compliant with the Lei Geral de Proteção de Dados Pessoais (LGPD) could be fined up to 50 million reals (USD 10 million) or 2% of their worldwide annual revenue from the last financial year.

    Improve brand reputation

    Research shows that 81% of consumers feel that how an organisation treats their data reflects how they treat them as a consumer. This means a strong correlation exists between how people perceive an organisation’s data collection practices and their other business activities.

    Statistic on data privacy and brand reputation

    Data breaches can have a significant impact on an organisation, especially their reputation and level of consumer trust. In 2022, hackers stole customer data from the Australian private health insurance company, Medibank, and released the data onto the dark web. Optus was also affected by a cyberattack, which compromised the information of current and former customers. Following these events, a study by Nature revealed that 83 percent of Australians were concerned about the security of their data, particularly in the hands of their service providers.

    Protect consumer data

    Protecting consumer data is essential to preventing data breaches. Unfortunately, cybersecurity attacks are becoming increasingly sophisticated. In 2023 alone, organisations like T-Mobile and Sony have been compromised and their data stolen.

    One way to protect consumer data is to retain 100% data ownership. This means that no external parties can see your data. You can achieve this with the web analytics platform, Matomo. With Matomo, you can store your own data on-premises (your own servers) or in the Cloud. Under both arrangements, you retain full ownership of your data.

    Try Matomo for Free

    Get the web insights you need, while respecting user privacy.

    No credit card required

    What are the most pressing data privacy issues that organisations are facing today ?

    Today’s most pressing data privacy challenges organisations face are complying with new data protection acts, maintaining consumer trust, and choosing the right web analytics platform. Here is a detailed breakdown of what these challenges mean for businesses.

    Complying with new and emerging data protection laws

    Ever since the European Union introduced the GDPR in 2018, other regions have enacted similar data protection acts. In the United States, California (CCPA), Virginia (VCDPA) and Colorado have their own state-level data protection acts. Meanwhile, Brazil and China have the General Data Protection Law (LGPD) and the Personal Information Protection Law (PIPL), respectively.

    For global organisations, complying with multiple data protection acts can be tough, as each act interprets the GDPR model differently. They each have their own provisions, terminology (or different interpretations of the same terminology), and penalties.

    A web analytics platform like Matomo can help your organisation comply with the GDPR and similar data protection acts. It has a range of privacy-friendly features including data anonymisation, IP anonymisation, and first-party cookies by default. You can also create and publish custom opt-out forms and let visitors view your collected data.

    The US is one of the few countries to not have a national data protection standard

    Today’s most pressing data privacy challenges organisations face are complying with new data protection acts, maintaining consumer trust, and choosing the right web analytics platform. Here is a detailed breakdown of what these challenges mean for businesses.

    Complying with new and emerging data protection laws

    Ever since the European Union introduced the GDPR in 2018, other regions have enacted similar data protection acts. In the United States, California (CCPA), Virginia (VCDPA) and Colorado have their own state-level data protection acts. Meanwhile, Brazil and China have the General Data Protection Law (LGPD) and the Personal Information Protection Law (PIPL), respectively.

    For global organisations, complying with multiple data protection acts can be tough, as each act interprets the GDPR model differently. They each have their own provisions, terminology (or different interpretations of the same terminology), and penalties.

    A web analytics platform like Matomo can help your organisation comply with the GDPR and similar data protection acts. It has a range of privacy-friendly features including data anonymisation, IP anonymisation, and first-party cookies by default. You can also create and publish custom opt-out forms and let visitors view your collected data.

    Try Matomo for Free

    Get the web insights you need, while respecting user privacy.

    No credit card required

    Maintaining consumer trust

    Building (and maintaining) consumer trust is a major hurdle for organisations. Stories about data breaches and data scandals — notably the Cambridge Analytical scandal — instil fear into the public’s hearts. After a while, people wonder, “Which company is next ?”

    One way to build and maintain trust is to be transparent about your data collection practices. Be open and honest about what data you collect (and why), where you store the data (and for how long), how you protect the data and whether you share data with third parties. 

    You should also prepare and publish your cyber incident response plan. Outline the steps you will take to contain, assess and manage a data breach.

    Choosing the right web analytics platform

    Organisations use web analytics to track and monitor web traffic, manage advertising campaigns and identify potential revenue streams. The most widely used web analytics platform is Google Analytics ; however, many users have raised concerns about privacy issues

    When searching for a Google Analytics alternative, consider a web analytics platform that takes data privacy seriously. Features like cookieless tracking, data anonymisation and IP anonymisation will let you track user activity without collecting personal data. Custom opt-out forms will let your web visitors enforce their data subject rights.

    What data protection acts exist right now ?

    The United States, Australia, Europe and Brazil each have data protection laws.

    As time goes on and more countries introduce their own data privacy laws, it becomes harder for organisations to adapt. Understanding the basics of each act can help streamline compliance. Here is what you need to know about the latest data protection acts.

    General Data Protection Regulation (GDPR)

    The GDPR is a data protection act created by the European Parliament and Council of the European Union. It comprises 11 chapters covering the general provisions, principles, data subject rights, penalties and other relevant information.

    The GDPR established a framework for organisations and governments to follow regarding the collection, processing, storing, transferring and deletion of personal data. Since coming into effect on 25 May 2018, other countries have used the GDPR as a model to enact similar data protection acts.

    General Data Protection Law (LGPD)

    The LGPD is Brazil’s main data protection act. The Federal Republic of Brazil signed the act on August 14, 2018, and it officially commenced on August 16, 2020. The act aimed to unify the 40 Brazilian laws that previously governed the country’s approach to processing personal data.

    Like the GDPR, the LGPD serves as a legal framework to regulate the collection and usage of personal data. It also outlines the duties of the national data protection authority, the Autoridade Nacional de Proteção de Dados (ANPD), which is responsible for enforcing the LGPD.

    Privacy Amendment (Notifiable Data Breaches) for the Privacy Act 1988

    Established by the Australian House of Representatives, the Privacy Act 1988 outlines how organisations and governments must manage personal data. The federal government has amended the Privacy Act 1988 twice — once in 2000, and again in 2014 — and is committing to a significant overhaul.

    The new proposals will make it easier for individuals to opt out of data collection, organisations will have to destroy collected data after a reasonable period, and small businesses will no longer be exempt from the Privacy Act.

    United States

    The US is one of the few countries to not have a national data protection standard

    The United States does not have a federally mandated data protection act. Instead, each state has been gradually introducing its data protection acts, with the first being California, followed by Virginia and Colorado. Over a dozen other states are following suit, too.

    • California — The then-Governor of California Jerry Brown signed the California Consumer Privacy Act (CCPA) into law on June 28, 2018. The act applies to organisations with gross annual revenue of more than USD 25 million, and that buy or sell products and services to 100,000 or more households or consumers.
    • Virginia — The Virginia Consumer Data Protection Act (VCDPA) took effect on January 1, 2023. It applies to organisations that process (or control) the personal data of 100,000 or more consumers in a financial year. It also applies to organisations that process (or control) the personal data of 25,000 or more consumers and gain more than 50% of gross revenue by selling that data.
    • Colorado — Colorado Governor Jared Polis signed the Colorado Privacy Act (ColoPA) into law in July 2021. The act applies to organisations that process (or control) the personal data of 100,000 or more Colorado residents annually. It also applies to organisations that earn revenue from the sale of personal data of at least 25,000 Colorado residents.

    Because the US regulations are a patchwork of differing legal acts, compliance can be a complicated endeavour for organisations operating across multiple jurisdictions. 

    How can organisations comply with data protection acts ?

    One way to ensure compliance is to keep up with the latest data protection acts. But that is a very time-consuming task.

    Over 16 US states are in the process of signing new acts. And countries like China, Turkey and Australia are about to overhaul — in a big way — their own data privacy protection acts. 

    Knowledge is power. But you also have a business to run, right ? 

    That’s where Matomo comes in.

    Streamline data privacy compliance with Matomo

    Although data privacy is a major concern for individuals and companies operating in multiple parts of the world — as they must comply with new, conflicting data protection laws — it is possible to overcome the biggest data privacy issues.

    Matomo enables your visitors to take back control of their data. You can choose where you store your data on-premises and in the Cloud (EU-based). You can use various features, retain 100% data ownership, protect visitor privacy and ensure compliance.

    Try the 21-day free trial of Matomo today, start your free analytics trial. No credit card required.