Recherche avancée

Médias (1)

Mot : - Tags -/lev manovitch

Autres articles (102)

  • (Dés)Activation de fonctionnalités (plugins)

    18 février 2011, par

    Pour gérer l’ajout et la suppression de fonctionnalités supplémentaires (ou plugins), MediaSPIP utilise à partir de la version 0.2 SVP.
    SVP permet l’activation facile de plugins depuis l’espace de configuration de MediaSPIP.
    Pour y accéder, il suffit de se rendre dans l’espace de configuration puis de se rendre sur la page "Gestion des plugins".
    MediaSPIP est fourni par défaut avec l’ensemble des plugins dits "compatibles", ils ont été testés et intégrés afin de fonctionner parfaitement avec chaque (...)

  • Activation de l’inscription des visiteurs

    12 avril 2011, par

    Il est également possible d’activer l’inscription des visiteurs ce qui permettra à tout un chacun d’ouvrir soit même un compte sur le canal en question dans le cadre de projets ouverts par exemple.
    Pour ce faire, il suffit d’aller dans l’espace de configuration du site en choisissant le sous menus "Gestion des utilisateurs". Le premier formulaire visible correspond à cette fonctionnalité.
    Par défaut, MediaSPIP a créé lors de son initialisation un élément de menu dans le menu du haut de la page menant (...)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

Sur d’autres sites (9515)

  • ffmpeg h264 to mp4 conversion from multiple files fails to preserve in-sequence resolution changes

    1er juillet 2023, par LB2

    This will be a long post, so I thank you in advance for your patience in digesting it.

    


    Context

    


    I have different sources that generate visual content that eventually need to be all composed into a single .mp4 file. The sources are :

    


      

    • H.264 video (encoded using CUDA NVENC).

        

      • This video can have in-sequence resolution change that is natively supported by H.264 codec.
      • 


      • I.e. stream may start as HxW resolution and mid-stream change to WxH. This behavior happens because it comes from a camera device that can be rotated and flipped between portrait and landscape (e.g. think of a phone camera recording video and phone being flipped from one orientation to another, and video recording adjusting its encoding for proper video scaling and orientation).
      • 


      • When rotation occurs, most of the time H & W are just swaps, but may actually be entirely new values — e.g. in some cases 1024x768 will switch to 768x1024, but in other cases 1024x768 may become 460x640 (depends on source camera capabilities that I have no control over).
      • 


      


    • 


    • JPEGs. A series (a.k.a. batch) of still JPEGs.

        

      • The native resolution of JPEGs may or may not match the video resolution in the earlier bullet.
      • 


      • JPEGs can also reflect rotation of device and so some JPEGs in a sequence may start at HxW resolution and then from some arbitrary JPEG file can flip and become WxH. Similar to video, resolution dimensions are likely to be just a swap, but may become altogether different values.
      • 


      


    • 


    • There can be any number of batches and intermixes between video and still sources. E.g. V1 + S2 + S3 + V4 + V5 + V6 + S7 + ...
    • 


    • There can be any number of resolution changes between or within batches. e.g. V1 ;r1 + V1 ;r2 + S2 ;r1 + S2 ;r3 + V3 ;r2 + ... (where first subscript is batch sequence ; rX is resolution)
    • 


    


    Problem

    


    I'm attempting to do this conversion with ffmpeg and can't quite get it right. The problem is that I can't get output to respect source resolutions, and it just squishes all into a single output resolution.

    


    Example of squishing problem

    


    As already mentioned above, H.264 supports resolution changes in-sequence (mid-stream), and it should be possible to convert and concatenate all the content and have final output contain in-sequence resolution changes.

    


    Since MP4 is just a container, I'm assuming that MP4 files can do so as well ?

    


    Attempts so far

    


    The approach thus far has been to take each batch of content (i.e. .h264 video or a set of JPEGs), and individually convert to .mp4. Video is converted using -c copy to ensure it doesn't try to transcode, e.g. :

    


    ffmpeg -hide_banner -i videoX.h264 -c copy -vsync vfr -video_track_timescale 90000 intermediateX.mp4


    


    ... and JPEGs are converted using -f concat

    


    ffmpeg -hide_banner -f concat -safe 0 -i jpegsX.txt -vf 'scale=trunc(iw/2)*2:trunc(ih/2)*2' -r 30 -vsync vfr -video_track_timescale 90000 intermediateX.mp4


    


    ... and then all the intermediates concatenated together

    


    ffmpeg -hide_banner -f concat -safe 0 -i final.txt -pix_fmt yuv420p -c copy -vsync vfr -video_track_timescale 90000 -metadata title='yabadabadoo' -fflags +bitexact -flags:v +bitexact -flags:a +bitexact final.mp4


    


    This concatenates, but if resolution changes at some mid point, then that part of content comes up squished/stretched in final output.

    


    Use h.264 as intermediates

    


    All the intermediates are produced the same, except as .h264. All intermediate .h264 are cat'ed together like `cat intermediate1.h264 intermediate2.264 > final.h264.

    


    If final output is final.mp4, the output is incorrect and images are squished/stretched.

    


    If final.h264, then at least it seems to be respecting aspect ratios of input and managing to produce correctly looking output. However, examining with ffprobe it seems that it uses SAR weird ratios, where first frames are width=1440 height=3040 sample_aspect_ratio=1:1, but later SAR takes on values like width=176 height=340 sample_aspect_ratio=1545:176, which I suspect isn't right, since all original input was with "square pixels". I think the reason for it is that it was composed out of different sized JPEGs, and concat filter somehow caused ffmpeg to manipulate SAR "to get things fit".

    


    But at least it renders respectably, though hard to say with ffplay if player would actually see resolution change and resize accordingly .

    


    And, that's .h264 ; and I need final output to be .mp4.

    


    Use -vf filter

    


    I tried enforcing SAR using -vf 'scale=trunc(iw/2)*2:trunc(ih/2)*2,setsar=1:1' (scaling is to deal with odd dimension JPEGs), but it still produces frames with SAR like stated earlier.

    


    Other thoughts

    


    For now, while I haven't given up, I'm trying to avoid in my code examining each individual JEPG in a batch to see if there are differing sizes, and splitting batch so that each sub-batch is homogenous resolution-wise, and generating individual intermediate .h264 so that SAR remains sane, and keep fingers crossed that the final would work correctly. It'll be very slow, unfortunately.

    


    Question

    


    What's the right way to deal with all that using ffmpeg, and how to concatenate mulitple varying resolution sources into a final mp4 so that it respects resolution changes mid-stream ?

    


  • aarch64 : Use regular hwcaps flags instead of HWCAP_CPUID for CPU feature detection...

    14 février 2024, par Martin Storsjö
    aarch64 : Use regular hwcaps flags instead of HWCAP_CPUID for CPU feature detection on Linux
    

    This makes the code much simpler (especially for adding support
    for other instruction set extensions), avoids needing inline
    assembly for this feature, and generally is more of the canonical
    way to do this.

    The CPU feature detection was added in
    493fcde50a84cb23854335bcb0e55c6f383d55db, using HWCAP_CPUID.

    The argument for using that, was that HWCAP_CPUID was added much
    earlier in the kernel (in Linux v4.11), while the HWCAP flags for
    individual features always come later. This allows detecting support
    for new CPU extensions before the kernel exposes information about
    them via hwcap flags.

    However in practice, there's probably quite little advantage in this.
    E.g. HWCAP2_I8MM was added in Linux v5.10 - long after HWCAP_CPUID,
    but there's probably very little practical cases where one would
    run a kernel older than that on a CPU that supports those instructions.

    Additionally, we provide our own definitions of the flag values to
    check (as they are fixed constants anyway), with names not conflicting
    with the ones from system headers. This reduces the number of ifdefs
    needed, and allows detecting those features even if building with
    userland headers that are lacking the definitions of those flags.

    Also, slightly older versions of QEMU, e.g. 6.2 in Ubuntu 22.04,
    do expose support for these features via HWCAP flags, but the
    emulated cpuid registers are missing the bits for exposing e.g. I8MM.
    (This issue is fixed in later versions of QEMU though.)

    Signed-off-by : Martin Storsjö <martin@martin.st>

    • [DH] libavutil/aarch64/cpu.c
  • fluent-ffmpeg concatenate files ends up with wrong length

    24 juillet 2021, par Hugo Cox

    I have the following input file :

    &#xA;

    ffconcat version 1.0&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/intro.mp4&#x27; #0&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out003.mp4&#x27; #1&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #2&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #2&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #2&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #2&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #2&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #2&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out007.mp4&#x27; #3&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #4&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #4&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #4&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #4&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #4&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #4&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #4&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #4&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out013.mp4&#x27; #5&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #6&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #6&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #6&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #6&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #6&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #6&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out017.mp4&#x27; #7&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #8&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #8&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #8&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #8&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #8&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #8&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out021.mp4&#x27; #9&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #10&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #10&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #10&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #10&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #10&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #10&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out025.mp4&#x27; #11&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #12&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #12&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #12&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #12&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out028.mp4&#x27; #13&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #14&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #14&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #14&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #14&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #14&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #14&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out032.mp4&#x27; #15&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #16&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #16&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out034.mp4&#x27; #17&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #18&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #18&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #18&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #18&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out037.mp4&#x27; #19&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #20&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #20&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out039.mp4&#x27; #21&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #22&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #22&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out041.mp4&#x27; #23&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #24&#xA;file &#x27;../intersegment/paddingsegment_h264_2.6s_1920x1080_30fps.mp4&#x27; #24&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out043.mp4&#x27; #25&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #26&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #26&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out045.mp4&#x27; #27&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #28&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #28&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out047.mp4&#x27; #29&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #30&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #30&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out049.mp4&#x27; #31&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #32&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #32&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out051.mp4&#x27; #33&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #34&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #34&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out053.mp4&#x27; #35&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #36&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #36&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out055.mp4&#x27; #37&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #38&#xA;file &#x27;../intersegment/paddingsegment_h264_2.6s_1920x1080_30fps.mp4&#x27; #38&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out057.mp4&#x27; #39&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #40&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #40&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out059.mp4&#x27; #41&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #42&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #42&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out061.mp4&#x27; #43&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #44&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #44&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out063.mp4&#x27; #45&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #46&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #46&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #46&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out065.mp4&#x27; #47&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #48&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #48&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #48&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out067.mp4&#x27; #49&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #50&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #50&#xA;file &#x27;../intersegment/paddingsegment_h264_2.6s_1920x1080_30fps.mp4&#x27; #50&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out070.mp4&#x27; #51&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #52&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #52&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #52&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #52&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #52&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #52&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out074.mp4&#x27; #53&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #54&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #54&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out076.mp4&#x27; #55&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #56&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #56&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #56&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #56&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #56&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out080.mp4&#x27; #57&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #58&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #58&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #58&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #58&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #58&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #58&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out084.mp4&#x27; #59&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #60&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #60&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #60&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #60&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #60&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #60&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out089.mp4&#x27; #61&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #62&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #62&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #62&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #62&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #62&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #62&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out093.mp4&#x27; #63&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #64&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #64&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #64&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #64&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out096.mp4&#x27; #65&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #66&#xA;file &#x27;../intersegment/paddingsegment_h264_2.6s_1920x1080_30fps.mp4&#x27; #66&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out098.mp4&#x27; #67&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #68&#xA;file &#x27;../intersegment/paddingsegment_h264_2.6s_1920x1080_30fps.mp4&#x27; #68&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out100.mp4&#x27; #69&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #70&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #70&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out102.mp4&#x27; #71&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #72&#xA;file &#x27;../intersegment/paddingsegment_h264_1.6s_1920x1080_30fps.mp4&#x27; #72&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out104.mp4&#x27; #73&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #74&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #74&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #74&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #74&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #74&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #74&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #74&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out109.mp4&#x27; #75&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #76&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #76&#xA;file &#x27;../intersegment/paddingsegment_h264_2.6s_1920x1080_30fps.mp4&#x27; #76&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out112.mp4&#x27; #77&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #78&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #78&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out114.mp4&#x27; #79&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #80&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #80&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #80&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #80&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #80&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #80&#xA;file &#x27;../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27; #80&#xA;file &#x27;../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27; #80&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/out119.mp4&#x27; #81&#xA;file &#x27;../tmp/59bd6a7896654d0b0c00705f/vidR/outro.mp4&#x27; #82&#xA;

    &#xA;

    However, when I use the following command :

    &#xA;

                ffmpeg(__dirname &#x2B; &#x27;/log/vidR_concatenate.txt&#x27;)&#xA;                .inputFormat(&#x27;concat&#x27;)&#xA;                .inputOptions([&#xA;                    &#x27;-safe 0&#x27;&#xA;                ]).outputOptions([&#xA;                    &#x27;-c copy&#x27;&#xA;                ]).output(__dirname &#x2B; &#x27;/output/&#x27; &#x2B; ID &#x2B; &#x27;/video/1080p/&#x27; &#x2B; ID &#x2B; &#x27;-R-1080p.mp4&#x27;)&#xA;                .on(&#x27;start&#x27;, function (commandLine) {&#xA;                    console.log(&#x27;Spawned Ffmpeg with command: &#x27; &#x2B; commandLine);&#xA;                })&#xA;                .on(&#x27;error&#x27;, function (err, stdout, stderr) {&#xA;                    console.log(&#x27;An error occurred: &#x27; &#x2B; err.message, err, stderr);&#xA;                })&#xA;                .on(&#x27;progress&#x27;, function (progress) {&#xA;                    console.log(&#x27;Processing: &#x27; &#x2B; progress.percent &#x2B; &#x27;% done&#x27;)&#xA;                })&#xA;                .on(&#x27;end&#x27;, function (err, stdout, stderr) {&#xA;                    console.log(&#x27;Finished vidR processing!&#x27; /*, err, stdout, stderr*/)&#xA;                    resolve()&#xA;                })&#xA;                .run()&#xA;

    &#xA;

    I do not end up with a video length that is the sum of all individual videos !

    &#xA;

    ffprobe -i ../intersegment/intersegment_h264_3s_1920x1080_30fps.mp4 :

    &#xA;

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;intersegment/intersegment_h264_3s_1920x1080_30fps.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.29.100&#xA;  Duration: 00:00:03.00, start: 0.000000, bitrate: 24 kb/s&#xA;    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 19 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : VideoHandler&#xA;

    &#xA;

    ffprobe -i ../intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4 :

    &#xA;

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;intersegment/paddingsegment_h264_0.6s_1920x1080_30fps.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.29.100&#xA;  Duration: 00:00:00.60, start: 0.000000, bitrate: 45 kb/s&#xA;    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 30 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : VideoHandler&#xA;

    &#xA;

    ffprobe -i ../tmp/59bd6a7896654d0b0c00705f/vidR/intro.mp4 :

    &#xA;

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;tmp/59bd6a7896654d0b0c00705f/vidR/intro.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.29.100&#xA;  Duration: 00:00:14.80, start: 0.000000, bitrate: 21 kb/s&#xA;    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 17 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : VideoHandler&#xA;

    &#xA;

    ffprobe -i ../tmp/59bd6a7896654d0b0c00705f/vidR/outro.mp4 :

    &#xA;

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;tmp/59bd6a7896654d0b0c00705f/vidR/outro.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf58.29.100&#xA;  Duration: 00:00:05.30, start: 0.000000, bitrate: 22 kb/s&#xA;    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 18 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : VideoHandler&#xA;

    &#xA;

    ffprobe -i ../tmp/59bd6a7896654d0b0c00705f/vidR/out003.mp4 :

    &#xA;

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;tmp/59bd6a7896654d0b0c00705f/vidR/out003.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    title           : Big Buck Bunny, Sunflower version&#xA;    artist          : Blender Foundation 2008, Janus Bager Kristensen 2013&#xA;    composer        : Sacha Goedegebure&#xA;    encoder         : Lavf58.29.100&#xA;    comment         : Creative Commons Attribution 3.0 - http://bbb3d.renderfarming.net&#xA;    genre           : Animation&#xA;  Duration: 00:00:08.40, start: 0.000000, bitrate: 3703 kb/s&#xA;    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 3699 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)&#xA;    Metadata:&#xA;      handler_name    : GPAC ISO Video Handler&#xA;

    &#xA;

    I thought all the fps, tbr, tbn and tbc are the same, so what is the problem ??&#xA;It is off several seconds from the total sum of each individual file !

    &#xA;