
Recherche avancée
Autres articles (67)
-
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs -
Personnaliser les catégories
21 juin 2013, parFormulaire de création d’une catégorie
Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
On peut modifier ce formulaire dans la partie :
Administration > Configuration des masques de formulaire.
Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...) -
Automated installation script of MediaSPIP
25 avril 2011, parTo overcome the difficulties mainly due to the installation of server side software dependencies, an "all-in-one" installation script written in bash was created to facilitate this step on a server with a compatible Linux distribution.
You must have access to your server via SSH and a root account to use it, which will install the dependencies. Contact your provider if you do not have that.
The documentation of the use of this installation script is available here.
The code of this (...)
Sur d’autres sites (13195)
-
Losing audio quality when merging multiple videos with FFmpeg
30 mai 2021, par CharlyI am trying to merge multiple videos (a few seconds each) into one, using FFmpeg.


Merging all at once


I first tried merging all videos with one FFmpeg command, but it only seems to work with up to a certain amount of videos. On my Raspberry Pi 4 (2BG RAM), it worked for 16 videos and broke (ran out of memory ?) while merging 36 videos (command and ouput below)


ffmpeg -i 1Rbrdn1Xp.mp4 -i G7eYqdFPb.mp4 -i -Xo-6ABm3.mp4 -i 6As9IlqbW.mp4 -i tz9tVKFA-.mp4
-i MS6DHZoJE.mp4 -i CeJYs99-G.mp4 -i Hsv5X48IC.mp4 -i Gm_DtjNU4.mp4 -i PZytbInZL.mp4
-i qsIJuvKO2.mp4 -i c5wxGk_Fx.mp4 -i j4K1qA7ih.mp4 -i AIpVWuhGV.mp4 -i yiLk0snSh.mp4
-i q1zmytaXZ.mp4 -i VRwQvLxaW.mp4 -i 0_3yLrokH.mp4 -i fW28LPQsk.mp4 -i La6WsGeE8.mp4
-i FlroQnCHq.mp4 -i c7SiL_qSU.mp4 -i aaGTUMJXD.mp4 -i hvXYBaCSM.mp4 -i CMDaFrWM4.mp4
-i _YAGDRyQN.mp4 -i RQXyshs_o.mp4 -i 96pKlIZxW.mp4 -i HVOOeCUYG.mp4 -i pJFxq7BTx.mp4
-i VxMJQqbK5.mp4 -i mkgbViPTI.mp4 -i zrjj93b5c.mp4 -i AL9oG1F36.mp4 -i IsUnC0NPb.mp4
-i Qhj2bhab9.mp4 -y -filter_complex concat=n=36:v=1:a=1 -vsync 2 kn-dQSN-v.mp4



ffmpeg version 4.1.6-1~deb10u1+rpt1 Copyright (c) 2000-2020 the FFmpeg developers
 built with gcc 8 (Raspbian 8.3.0-6+rpi1)
(...)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1Rbrdn1Xp.mp4':
 Metadata:
 major_brand : isom
 minor_version : 512
 compatible_brands: isomiso2avc1mp41
 encoder : Lavf58.20.100
 Duration: 00:00:08.08, start: 0.000000, bitrate: 602 kb/s
 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 533 kb/s, 57.62 fps, 60 tbr, 15360 tbn, 120 tbc (default)
 Metadata:
 handler_name : VideoHandler
 Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 64 kb/s (default)
 Metadata:
 handler_name : SoundHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'G7eYqdFPb.mp4':
 Metadata:
 major_brand : isom
 minor_version : 512
 compatible_brands: isomiso2avc1mp41
 encoder : Lavf58.20.100
 Duration: 00:00:21.00, start: 0.000000, bitrate: 310 kb/s
 Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 229 kb/s, 59.09 fps, 60 tbr, 15360 tbn, 120 tbc (default)
 Metadata:
 handler_name : VideoHandler
 Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 72 kb/s (default)
 Metadata:
 handler_name : SoundHandler
(...)
Stream mapping:
 Stream #0:0 (h264) -> concat:in0:v0
 Stream #0:1 (aac) -> concat:in0:a0
 Stream #1:0 (h264) -> concat:in1:v0
 Stream #1:1 (aac) -> concat:in1:a0
(...)
 concat:out:v0 -> Stream #0:0 (libx264)
 concat:out:a0 -> Stream #0:1 (aac)
Press [q] to stop, [?] for help
[libx264 @ 0x17cb5e0] using SAR=1/1 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A 
[libx264 @ 0x17cb5e0] using cpu capabilities: ARMv6 NEON
[libx264 @ 0x17cb5e0] profile High, level 3.2
[libx264 @ 0x17cb5e0] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - 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 'kn-dQSN-v.mp4':
 Metadata:
 major_brand : isom
 minor_version : 512
 compatible_brands: isomiso2avc1mp41
 encoder : Lavf58.20.100
 Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 60 fps, 15360 tbn, 60 tbc (default)
 Metadata:
 encoder : Lavc58.35.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), 22050 Hz, mono, fltp, 69 kb/s (default)
 Metadata:
 encoder : Lavc58.35.100 aac
frame=15952 fps= 52 q=31.0 size= 10240kB time=00:04:33.02 bitrate= 307.3kbits/s speed=0.844x
[h264 @ 0x3472d80] get_buffer() failed40kB time=00:04:33.02 bitrate= 307.3kbits/s speed=0.844x 
[h264 @ 0x3472d80] thread_get_buffer() failed
[h264 @ 0x3472d80] decode_slice_header error
[h264 @ 0x3472d80] no frame!
Error while decoding stream #15:0: Invalid data found when processing input
[h264 @ 0x34f54d0] get_buffer() failed
[h264 @ 0x34f54d0] thread_get_buffer() failed
[h264 @ 0x34f54d0] decode_slice_header error
[h264 @ 0x34f54d0] no frame!
[h264 @ 0x3472d80] get_buffer() failed
[h264 @ 0x3472d80] thread_get_buffer() failed
(...)
Error while decoding stream #15:0: Invalid data found when processing input
[h264 @ 0x3472d80] reference picture missing during reorder
[h264 @ 0x3472d80] Missing reference picture, default is 65660
[h264 @ 0x34c4540] mmco: unref short failure
[h264 @ 0x34f54d0] get_buffer() failed08kB time=00:04:45.37 bitrate= 316.0kbits/s speed=0.845x 
[h264 @ 0x34f54d0] thread_get_buffer() failed
[h264 @ 0x34f54d0] decode_slice_header error
[h264 @ 0x34f54d0] no frame!
[h264 @ 0x3472d80] decode_slice_header error
[h264 @ 0x3472d80] no frame!
Error while decoding stream #15:0: Invalid data found when processing input
[h264 @ 0x34f54d0] mmco: unref short failure
Error while decoding stream #15:0: Invalid data found when processing input
[h264 @ 0x3472d80] get_buffer() failed
[h264 @ 0x3472d80] thread_get_buffer() failed
[h264 @ 0x3472d80] decode_slice_header error
[h264 @ 0x3472d80] no frame!
Error while decoding stream #15:0: Invalid data found when processing input
[h264 @ 0x3472d80] get_buffer() failed
[h264 @ 0x3472d80] thread_get_buffer() failed
[h264 @ 0x3472d80] decode_slice_header error
[h264 @ 0x3472d80] no frame!
[h264 @ 0x34f54d0] reference picture missing during reorder
 Last message repeated 1 times
[h264 @ 0x34f54d0] Missing reference picture, default is 65708
 Last message repeated 1 times
Error while decoding stream #15:0: Invalid data found when processing input
[h264 @ 0x34dccb0] reference picture missing during reorder
[h264 @ 0x34dccb0] Missing reference picture, default is 65716
[h264 @ 0x3472d80] mmco: unref short failure
[h264 @ 0x34f54d0] decode_slice_header error
[h264 @ 0x34f54d0] no frame!
Error while decoding stream #15:0: Invalid data found when processing inputbits/s speed=0.845x 
[h264 @ 0x3480010] get_buffer() failed
[h264 @ 0x3480010] thread_get_buffer() failed
[h264 @ 0x3480010] decode_slice_header error
[h264 @ 0x3480010] no frame!
[h264 @ 0x34c4540] decode_slice_header error
[h264 @ 0x34c4540] no frame!
Error while decoding stream #15:0: Invalid data found when processing input
[h264 @ 0x3480010] mmco: unref short failure
Error while decoding stream #15:0: Invalid data found when processing input
[h264 @ 0x34c4540] get_buffer() failed
[h264 @ 0x34c4540] thread_get_buffer() failed
[h264 @ 0x34c4540] decode_slice_header error
[h264 @ 0x34c4540] no frame!
Error while decoding stream #15:0: Invalid data found when processing input
[h264 @ 0x34c4540] get_buffer() failed
[h264 @ 0x34c4540] thread_get_buffer() failed
[h264 @ 0x34c4540] decode_slice_header error
[h264 @ 0x34c4540] no frame!
[h264 @ 0x34f54d0] decode_slice_header error
[h264 @ 0x34f54d0] no frame!
Error while decoding stream #15:0: Invalid data found when processing input
[h264 @ 0x3480010] reference picture missing during reorder
 Last message repeated 1 times
[h264 @ 0x3480010] Missing reference picture, default is 65772
 Last message repeated 1 times
Error while decoding stream #15:0: Invalid data found when processing input
[h264 @ 0x3472d80] reference picture missing during reorder
[h264 @ 0x3472d80] Missing reference picture, default is 65780
[h264 @ 0x34c4540] mmco: unref short failure
av_interleaved_write_frame(): Cannot allocate memory
[mp4 @ 0x295c7e0] Application provided duration: 3689347710924763697 / timestamp: 6291454 is out of range for mov/mp4 format
Segmentation fault



Merging videos 2 by 2


I then tried gradually merging videos into one, using multiple FFmpeg commands.


# Pseudocode
final = merge(clip1, clip2)
final = merge(final, clip3)
final = merge(final, clip4)
final = merge(final, clip5)
...



with each command, looking like this :


ffmpeg -i 1Rbrdn1Xp.mp4 -i G7eYqdFPb.mp4 -y -filter_complex concat=n=2:v=1:a=1 -vsync 2 UMVDl9jki.mp4



ffmpeg -i UMVDl9jki.mp4 -i -Xo-6ABm3.mp4 -y -filter_complex concat=n=2:v=1:a=1 -vsync 2 azE1Uombp.mp4



This works but there is a loss in audio quality on the first clips, and it is slowly improving over time. I am guessing this is due to the first videos being merged more times than the last ones. You can see this effect happen in this video (weird artefacts in the voice).



So, am I doing something wrong ?

Is there a way of merging a lot of videos, without running out of memory or worsening the audio quality ?

-
FFMPEG/DASH-LL creates audio and video chunks at different rates ; player is confused (404 errors)
26 mai 2021, par DannyI'm trying to create a MPEG-DASH "live" stream from a static file to test various low latency modes. The DASH muxer in FFmpeg creates two AdaptationSets, one for video chunks and one for audio chunks.


However, the audio and video chunk files are not created at the same rate (should they be ?). ie, here
stream0
are the video chunks andstream1
are the audio chunks. After a few seconds of running, the webroot directory contains :

chunk-stream0-00001.m4s chunk-stream1-00001.m4s 
chunk-stream0-00002.m4s chunk-stream1-00002.m4s 
chunk-stream0-00003.m4s chunk-stream1-00003.m4s 
chunk-stream0-00004.m4s chunk-stream1-00004.m4s 
 chunk-stream1-00005.m4s 
 chunk-stream1-00006.m4s 
 chunk-stream1-00007.m4s 
 chunk-stream1-00008.m4s 
 chunk-stream1-00009.m4s 
master.mpd 
init-stream0.m4s 
init-stream1.m4s 



The stream doesn't load (or play) on either
dash.js
or shaka-player and there are lots of404 (Not Found)
errors for the video chunks. The player is requesting chunks from both stream0 and stream1 in sequence, ie, stream0-001 + stream1-001, then stream0-002 + stream1-002 and so on.

But since stream0 only goes from 001 to 004, there are lots of 404 errors as it tries to load stream0-005 through 009.


The gap gets wider after letting FFmpeg run for a while. eg, stream0 is 62 to 75 but stream1 is 174 to 187. Reloading the player page at this point fails with
dash.all.debug.js:15615 [2055][FragmentController] No video bytes to push or stream is inactive.
and shows 404 errors stream0 chunk 188 (which doesn't exist yet !)



The FFmpeg command was adopted from DASH streaming from the top-down :


ffmpeg -re -i /mnt/swdevel/TestStreams/H264/ThreeHourMovie.mp4 \
-c:v libx264 -x264-params keyint=120:scenecut=0 -b:v 1M -c:a copy \
-f dash -dash_segment_type mp4 \
 -seg_duration 2 \
 -target_latency 3 \
 -frag_type duration \
 -frag_duration 0.2 \
 -window_size 10 \
 -extra_window_size 3 \
 -streaming 1 \
 -ldash 1 \
 -use_template 1 \
 -use_timeline 0 \
 -write_prft 1 \
 -fflags +nobuffer+flush_packets \
 -format_options "movflags=+cmaf" \
 -utc_timing_url "/pelican/testPlayers/time.php" \
 master.mpd



And the
dash.js
player code is very simple :

const srcUrl = "../ottWebRoot/playerTest/master.mpd"; 

var player = dashjs.MediaPlayer().create();

let autoPlay = false;
player.initialize(document.querySelector("#videoTagId"), srcUrl, autoPlay);

player.updateSettings(
{
 streaming :
 {
 lowLatencyEnabled : true,
 liveDelay : 2,
 jumpGaps : true,
 jumpLargeGaps : true,
 smallGapLimit : 1.5,
 }
});



To provide the
UTCTiming
element in the manifest, the smalltime.php
URL returns a UTC time from the web server :

<?php
 print gmdate("Y-m-d\TH:i:s\Z");
?>



(It also shows 404 errors for the latest stream1/audio chunk, that's likely a different problem)


I'm not sure what to try next. Any and suggestions greatly appreciated.


EDIT I


The suggestion by @Anonymous Coward to change the key interval improved things a lot. The chunks for stream0 and stream1 are in lock-step and have identical sequence numbers.


However, there are still many 404 errors, both on initial page load (without pressing play) and during playback.


I ran
watch -n 1 ls -lt code> and compared side-by-side to the errors in the browser console. It's hard to compare but it <em>looks</em> like the browser is trying to fetch files "on the play edge" which haven't yet been created by FFmpeg. See the pic below.


How do I instruct the browser to wait just a bit more before fetching the edge chunks ?




EDIT II


Using
shaka-player
instead ofdash.js
plays properly without 404 errors. Configured as :

player.configure(
 {
 streaming: 
 {
 lowLatencyMode: true,
 inaccurateManifestTolerance: 0,
 rebufferingGoal: 0.1,
 }
 
 });



Client


- 

- MacOS 10.12
- dash.js latest 3.2.2
- Chrome 79, Safari 12, FireFox v ?








Server


- 

- Apache 2.4.37
- PHP 7.2.4 (for time function only)
- Centos 8








(For reference, here is the mpd file generated by FFmpeg)


<?xml version="1.0" encoding="utf-8"?>
<mpd xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="dynamic" minimumupdateperiod="PT500S" availabilitystarttime="2021-05-24T14:50:00.263Z" publishtime="2021-05-24T15:22:45.335Z" timeshiftbufferdepth="PT50.0S" maxsegmentduration="PT2.0S" minbuffertime="PT5.0S">
 <programinformation>
 </programinformation>
 <servicedescription>
 <latency target="3000" referenceid="0"></latency>
 </servicedescription>
 <period start="PT0.0S">
 <adaptationset contenttype="video" startwithsap="1" segmentalignment="true" bitstreamswitching="true" framerate="24/1" maxwidth="1280" maxheight="682" par="15:8" lang="und">
 <resync dt="200000" type="0"></resync>
 <representation mimetype="video/mp4" codecs="avc1.64081f" bandwidth="1000000" width="1280" height="682" sar="1023:1024">
 <producerreferencetime inband="true" type="captured" wallclocktime="2021-05-24T14:50:00.263Z" presentationtime="0">
 <utctiming schemeiduri="urn:mpeg:dash:utc:http-xsdate:2014" value="/pelican/testPlayers/time.php"></utctiming>
 </producerreferencetime>
 <resync dt="5000000" type="1"></resync>
 <segmenttemplate timescale="1000000" duration="2000000" availabilitytimeoffset="1.800" availabilitytimecomplete="false" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
 </segmenttemplate>
 </representation>
 </adaptationset>
 <adaptationset contenttype="audio" startwithsap="1" segmentalignment="true" bitstreamswitching="true" lang="und">
 <resync dt="200000" type="0"></resync>
 <representation mimetype="audio/mp4" codecs="mp4a.40.2" bandwidth="116317" audiosamplingrate="48000">
 <audiochannelconfiguration schemeiduri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></audiochannelconfiguration>
 <producerreferencetime inband="true" type="captured" wallclocktime="2021-05-24T14:50:00.306Z" presentationtime="0">
 <utctiming schemeiduri="urn:mpeg:dash:utc:http-xsdate:2014" value="/pelican/testPlayers/time.php"></utctiming>
 </producerreferencetime>
 <resync dt="21333" type="1"></resync>
 <segmenttemplate timescale="1000000" duration="2000000" availabilitytimeoffset="1.800" availabilitytimecomplete="false" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
 </segmenttemplate>
 </representation>
 </adaptationset>
 </period>
 <utctiming schemeiduri="urn:mpeg:dash:utc:http-xsdate:2014" value="/pelican/testPlayers/time.php"></utctiming>
</mpd>



-
How do I get VLC to play back two separate input streams (Video and Audio) like MPV-Player with mpv —ytdl-format=FormatCode1+FormatCode2 URL
29 avril 2021, par Gubbelso, I finally found out how to play a 1080p with 60fps smoothly on a Raspberry Py 4b or rather on a Raspberry Py 400.


With the following OS installed :
Raspberry Pi OS with desktop and recommended software


But I need to get from Youtube the avc1 (H.264) video stream and not the av01 (AV1) video stream.


And sadly it only plays smooth, if I use the VLC-Media-Player to play back a completely downloaded file.


The MPV alternative with e.g. :


mpv --ytdl-format=299+140 https://www.youtube.com/watch?v=LXb3EKWsInQ



lags sadly.


So I thought of a method to use a similar option with VLC.


My attempt :


#!/bin/bash

echo 'Enter: videoFormatCode audioFormatCode URL'

read video audio link

videoLink=$(youtube-dl -g -f $video $link)

audioLink=$(youtube-dl -g -f $audio $link)




ffmpeg -i "$videoLink" -i "$audioLink" -f matroska - | vlc -



So, first I will find out the format codes with :


youtube-dl -F https://www.youtube.com/watch?v=LXb3EKWsInQ



which gives me :


format code extension resolution note
249 webm audio only tiny 50k , webm_dash container, opus @ 50k (48000Hz), 1.88MiB
250 webm audio only tiny 67k , webm_dash container, opus @ 67k (48000Hz), 2.51MiB
140 m4a audio only tiny 129k , m4a_dash container, mp4a.40.2@129k (44100Hz), 4.84MiB
251 webm audio only tiny 132k , webm_dash container, opus @132k (48000Hz), 4.96MiB
394 mp4 256x144 144p HDR 63k , mp4_dash container, av01.0.00M.10.0.110.09.16.09.0@ 63k, 30fps, video only, 2.39MiB
160 mp4 256x144 144p 70k , mp4_dash container, avc1.4d400c@ 70k, 30fps, video only, 2.64MiB
278 webm 256x144 144p 82k , webm_dash container, vp9@ 82k, 30fps, video only, 3.07MiB
694 mp4 256x144 144p60 HDR 179k , mp4_dash container, av01.0.00M.10.0.110.09.16.09.0@ 179k, 60fps, video only, 6.73MiB
330 webm 256x144 144p60 HDR 212k , webm_dash container, vp9.2@ 212k, 60fps, video only, 7.96MiB
395 mp4 426x240 240p HDR 111k , mp4_dash container, av01.0.00M.10.0.110.09.16.09.0@ 111k, 30fps, video only, 4.16MiB
133 mp4 426x240 240p 156k , mp4_dash container, avc1.4d4015@ 156k, 30fps, video only, 5.86MiB
242 webm 426x240 240p 160k , webm_dash container, vp9@ 160k, 30fps, video only, 6.00MiB
695 mp4 426x240 240p60 HDR 409k , mp4_dash container, av01.0.01M.10.0.110.09.16.09.0@ 409k, 60fps, video only, 15.32MiB
331 webm 426x240 240p60 HDR 444k , webm_dash container, vp9.2@ 444k, 60fps, video only, 16.63MiB
396 mp4 640x360 360p HDR 220k , mp4_dash container, av01.0.01M.10.0.110.09.16.09.0@ 220k, 30fps, video only, 8.23MiB
134 mp4 640x360 360p 337k , mp4_dash container, avc1.4d401e@ 337k, 30fps, video only, 12.64MiB
243 webm 640x360 360p 343k , webm_dash container, vp9@ 343k, 30fps, video only, 12.84MiB
696 mp4 640x360 360p60 HDR 862k , mp4_dash container, av01.0.04M.10.0.110.09.16.09.0@ 862k, 60fps, video only, 32.28MiB
332 webm 640x360 360p60 HDR 954k , webm_dash container, vp9.2@ 954k, 60fps, video only, 35.70MiB
397 mp4 854x480 480p HDR 406k , mp4_dash container, av01.0.04M.10.0.110.09.16.09.0@ 406k, 30fps, video only, 15.19MiB
135 mp4 854x480 480p 563k , mp4_dash container, avc1.4d401f@ 563k, 30fps, video only, 21.08MiB
244 webm 854x480 480p 619k , webm_dash container, vp9@ 619k, 30fps, video only, 23.18MiB
697 mp4 854x480 480p60 HDR 1652k , mp4_dash container, av01.0.05M.10.0.110.09.16.09.0@1652k, 60fps, video only, 61.81MiB
333 webm 854x480 480p60 HDR 1848k , webm_dash container, vp9.2@1848k, 60fps, video only, 69.13MiB
398 mp4 1280x720 720p60 HDR 1151k , mp4_dash container, av01.0.08M.10.0.110.09.16.09.0@1151k, 60fps, video only, 43.09MiB
247 webm 1280x720 720p 1220k , webm_dash container, vp9@1220k, 30fps, video only, 45.67MiB
136 mp4 1280x720 720p 1540k , mp4_dash container, avc1.4d401f@1540k, 30fps, video only, 57.61MiB
302 webm 1280x720 720p60 1964k , webm_dash container, vp9@1964k, 60fps, video only, 73.48MiB
298 mp4 1280x720 720p60 2475k , mp4_dash container, avc1.4d4020@2475k, 60fps, video only, 92.60MiB
698 mp4 1280x720 720p60 HDR 3829k , mp4_dash container, av01.0.08M.10.0.110.09.16.09.0@3829k, 60fps, video only, 143.25MiB
334 webm 1280x720 720p60 HDR 4337k , webm_dash container, vp9.2@4337k, 60fps, video only, 162.26MiB
399 mp4 1920x1080 1080p60 HDR 2151k , mp4_dash container, av01.0.09M.10.0.110.09.16.09.0@2151k, 60fps, video only, 80.49MiB
303 webm 1920x1080 1080p60 3475k , webm_dash container, vp9@3475k, 60fps, video only, 130.01MiB
299 mp4 1920x1080 1080p60 4376k , mp4_dash container, avc1.64002a@4376k, 60fps, video only, 163.70MiB
699 mp4 1920x1080 1080p60 HDR 6358k , mp4_dash container, av01.0.09M.10.0.110.09.16.09.0@6358k, 60fps, video only, 237.83MiB
335 webm 1920x1080 1080p60 HDR 6738k , webm_dash container, vp9.2@6738k, 60fps, video only, 252.04MiB
400 mp4 2560x1440 1440p60 HDR 5529k , mp4_dash container, av01.0.12M.10.0.110.09.16.09.0@5529k, 60fps, video only, 206.83MiB
308 webm 2560x1440 1440p60 10376k , webm_dash container, vp9@10376k, 60fps, video only, 388.14MiB
700 mp4 2560x1440 1440p60 HDR 15170k , mp4_dash container, av01.0.12M.10.0.110.09.16.09.0@15170k, 60fps, video only, 567.45MiB
336 webm 2560x1440 1440p60 HDR 16231k , webm_dash container, vp9.2@16231k, 60fps, video only, 607.14MiB
401 mp4 3840x2160 2160p60 HDR 11707k , mp4_dash container, av01.0.13M.10.0.110.09.16.09.0@11707k, 60fps, video only, 437.93MiB
315 webm 3840x2160 2160p60 25573k , webm_dash container, vp9@25573k, 60fps, video only, 956.58MiB
701 mp4 3840x2160 2160p60 HDR 28033k , mp4_dash container, av01.0.13M.10.0.110.09.16.09.0@28033k, 60fps, video only, 1.02GiB
337 webm 3840x2160 2160p60 HDR 28869k , webm_dash container, vp9.2@28869k, 60fps, video only, 1.05GiB
18 mp4 640x360 360p 642k , avc1.42001E, 30fps, mp4a.40.2 (44100Hz), 24.03MiB
22 mp4 1280x720 720p 1669k , avc1.64001F, 30fps, mp4a.40.2 (44100Hz) (best)



Then I search for a 1080p60 stream with avc1, which leads to format code 299 in this list and then choose a fitting audio stream, like format code 140.


Through the script youtube-dl catches the links for the respective format code, which get joined with ffmpeg as a matroska file and the send to VLC.


But this method lags ; in my opinion because it seems not to cache the stream, like MPV does. And there is not seeking option ; when I try to seek it pops back to the beginning.


I tried it with adding
-bufsize 6750k
to the ffmpeg line, but that did not help either.
I also added the VLC option--sout-mux-caching 30000
where I thought VLC would get a bigger cache to buffer the stream, but that did not help, too.

So, how could I play back this as a smooth stream in VLC ?


Also, my solution might not the best to start with, so please don't take this as a reference, it was just an attempt by my side with my sparse knowledge how I would handle the situation.


If there are better alternatives, you can of course post them, too. ;)



I also want to add, that the script, which I posted above, works well, when I use the 134 format code with a far lesser resolution, so somewhere seems to be a bottleneck.



Attachment 1 :


Output with format codes 299+140 :




Attachment 2 :


Output with format codes 134+140 :





Should the pastebin not work, here is an alternative link to the outputs.



I terminated the program after several seconds with Ctrl-C, so the output won't be that big, thought it could help to find an answer on this.



Just for reference :
After pressing Ctrl-C this line appeared :


QObject::~QObject: Timers cannot be stopped from another thread