Recherche avancée

Médias (0)

Mot : - Tags -/performance

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (54)

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

  • Configurer la prise en compte des langues

    15 novembre 2010, par

    Accéder à la configuration et ajouter des langues prises en compte
    Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
    De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
    Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...)

  • XMP PHP

    13 mai 2011, par

    Dixit Wikipedia, XMP signifie :
    Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
    Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
    XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)

Sur d’autres sites (4978)

  • avcodec/vulkan_decode : Factor creating session params out, fix leak

    14 septembre 2023, par Andreas Rheinhardt
    avcodec/vulkan_decode : Factor creating session params out, fix leak
    

    All Vulkan HWAccels share the same boilerplate code for creating
    session params and this includes a common bug : In case actually
    creating the video session parameters fails, the buffer destined
    to hold them leaks ; in case of HEVC this is also true if
    get_data_set_buf() fails.

    This commit factors this code out and fixes the leak.

    Reviewed-by : Lynne <dev@lynne.ee>
    Signed-off-by : Andreas Rheinhardt <andreas.rheinhardt@outlook.com>

    • [DH] libavcodec/vulkan_av1.c
    • [DH] libavcodec/vulkan_decode.c
    • [DH] libavcodec/vulkan_decode.h
    • [DH] libavcodec/vulkan_h264.c
    • [DH] libavcodec/vulkan_hevc.c
  • avformat/iamf : Don't mix ownership and non-ownership pointers

    19 février 2024, par Andreas Rheinhardt
    avformat/iamf : Don't mix ownership and non-ownership pointers
    

    IAMFAudioElement and IAMFMixPresentation currently contain
    pointers to independently allocated objects that are sometimes
    owned by said structures and sometimes not.

    More precisely, upon success the demuxer transfers ownership
    of these other objects newly created AVStreamGroups, but it
    keeps its pointers. iamf_read_close() therefore always resets
    these pointers (because the cleanup code always treats them
    as ownership pointers). This leads to memory leaks in case
    iamf_read_header() without having attached all of these
    objects to stream groups.

    The muxer has a similar issue : It also clears these pointers
    (pointing to objects owned by stream groups created by the user)
    in its deinit function.

    This commit fixes this memleak by explicitly adding non-ownership
    pointers ; this also allows to remove the code to reset the
    ownership pointers.

    Reviewed-by : James Almer <jamrial@gmail.com>
    Signed-off-by : Andreas Rheinhardt <andreas.rheinhardt@outlook.com>

    • [DH] libavformat/iamf.h
    • [DH] libavformat/iamf_parse.c
    • [DH] libavformat/iamf_writer.c
    • [DH] libavformat/iamfdec.c
    • [DH] libavformat/iamfenc.c
  • RTSP to HLS conversion with error on some devices

    2 septembre 2024, par Wallace Ketler

    I'm trying to convert, on a node server, RTSP IP camera devices to HLS to run livestreams on the web. The following code works well for some RTSP devices, but for others I encounter problems.

    &#xA;

       function startLive(rtspUrl, outputDir, id_local, id_camera) {&#xA;        return new Promise((resolve, reject) => {&#xA;            const processKey = `${id_local}_${id_camera}`;&#xA;            if (ffmpegProcesses[processKey]) {&#xA;                return reject(new Error(&#x27;Convers&#xE3;o j&#xE1; est&#xE1; em andamento para esta c&#xE2;mera&#x27;));&#xA;            }&#xA;        &#xA;            const process = ffmpeg(rtspUrl)&#xA;                .inputOptions([&#xA;                    &#x27;-rtsp_transport&#x27;, &#x27;tcp&#x27;,&#xA;                    &#x27;-fflags&#x27;, &#x27;nobuffer&#x27;,&#xA;                    &#x27;-max_delay&#x27;, &#x27;1000000&#x27;,&#xA;                    &#x27;-analyzeduration&#x27;, &#x27;1000000&#x27;,&#xA;                    &#x27;-probesize&#x27;, &#x27;1000000&#x27;,&#xA;                    &#x27;-flush_packets&#x27;, &#x27;1&#x27;,&#xA;                    &#x27;-avioflags&#x27;, &#x27;direct&#x27;&#xA;                ])&#xA;                .outputOptions([&#xA;                    &#x27;-c:v&#x27;, &#x27;libx264&#x27;,&#xA;                    &#x27;-preset&#x27;, &#x27;ultrafast&#x27;,&#xA;                    &#x27;-tune&#x27;, &#x27;zerolatency&#x27;,&#xA;                    &#x27;-c:a&#x27;, &#x27;aac&#x27;,&#xA;                    &#x27;-hls_time&#x27;, &#x27;10&#x27;,&#xA;                    &#x27;-hls_flags&#x27;, &#x27;delete_segments&#x27;,&#xA;                    &#x27;-hls_list_size&#x27;, &#x27;5&#x27;,&#xA;                    &#x27;-hls_wrap&#x27;, &#x27;5&#x27;,&#xA;                    &#x27;-strict&#x27;, &#x27;-2&#x27;&#xA;                ])&#xA;                .output(path.join(outputDir, &#x27;stream.m3u8&#x27;))&#xA;                .on(&#x27;start&#x27;, (commandLine) => {&#xA;                    console.log(&#x27;Spawned FFmpeg with command: &#x27; &#x2B; commandLine);&#xA;                })&#xA;                .on(&#x27;stderr&#x27;, (stderrLine) => {&#xA;                    console.log(&#x27;FFmpeg stderr: &#x27; &#x2B; stderrLine);&#xA;                })&#xA;                .on(&#x27;end&#x27;, () => {&#xA;                    console.log(&#x27;Convers&#xE3;o conclu&#xED;da&#x27;);&#xA;                    delete ffmpegProcesses[processKey]; &#xA;                    resolve();&#xA;                })&#xA;                .on(&#x27;error&#x27;, (err, stdout, stderr) => {&#xA;                    console.error(&#x27;Erro na convers&#xE3;o&#x27;, err);&#xA;                    console.error(&#x27;FFmpeg stdout:&#x27;, stdout);&#xA;                    console.error(&#x27;FFmpeg stderr:&#x27;, stderr);&#xA;                    delete ffmpegProcesses[processKey]; &#xA;                    reject(err);&#xA;                })&#xA;                .run();&#xA;    &#xA;            ffmpegProcesses[processKey] = process; &#xA;        });&#xA;    }&#xA;

    &#xA;

    When the conversion succeeds, it continues indefinitely with the logs :

    &#xA;

    FFmpeg stderr: frame=   61 fps= 48 q=13.0 size=N/A time=00:00:02.03 bitrate=N/A dup=60 drop=0 speed= 1.6x    &#xA;FFmpeg stderr: frame=   75 fps= 42 q=17.0 size=N/A time=00:00:02.52 bitrate=N/A dup=62 drop=0 speed=1.41x    &#xA;FFmpeg stderr: frame=   91 fps= 39 q=16.0 size=N/A time=00:00:03.04 bitrate=N/A dup=65 drop=0 speed=1.31x    &#xA;FFmpeg stderr: frame=  108 fps= 38 q=15.0 size=N/A time=00:00:03.60 bitrate=N/A dup=68 drop=0 speed=1.27x    &#xA;FFmpeg stderr: frame=  121 fps= 36 q=24.0 size=N/A time=00:00:04.03 bitrate=N/A dup=70 drop=0 speed=1.21x    &#xA;FFmpeg stderr: frame=  138 fps= 36 q=16.0 size=N/A time=00:00:04.60 bitrate=N/A dup=73 drop=0 speed= 1.2x    &#xA;FFmpeg stderr: frame=  152 fps= 35 q=17.0 size=N/A time=00:00:05.08 bitrate=N/A dup=75 drop=0 speed=1.17x    &#xA;FFmpeg stderr: frame=  168 fps= 35 q=16.0 size=N/A time=00:00:05.60 bitrate=N/A dup=78 drop=0 speed=1.15x    &#xA;FFmpeg stderr: frame=  183 fps= 34 q=21.0 size=N/A time=00:00:06.11 bitrate=N/A dup=80 drop=0 speed=1.13x    &#xA;FFmpeg stderr: frame=  198 fps= 34 q=16.0 size=N/A time=00:00:06.60 bitrate=N/A dup=83 drop=0 speed=1.12x    &#xA;FFmpeg stderr: frame=  215 fps= 33 q=16.0 size=N/A time=00:00:07.16 bitrate=N/A dup=86 drop=0 speed=1.11x    &#xA;FFmpeg stderr: frame=  230 fps= 33 q=16.0 size=N/A time=00:00:07.66 bitrate=N/A dup=88 drop=0 speed= 1.1x    &#xA;FFmpeg stderr: frame=  246 fps= 33 q=19.0 size=N/A time=00:00:08.20 bitrate=N/A dup=91 drop=0 speed= 1.1x    &#xA;

    &#xA;

    And with the segments saved in the folder configured as output. But for certain devices, after creating the stream.m3u8 file and saving the first segment, the conversion is considered finished and falls into .on(&#x27;end&#x27;) . The error log is as follows :

    &#xA;

    FFmpeg stderr: frame=    0 fps=0.0 q=0.0 size=N/A time=00:00:01.12 bitrate=N/A speed=2.08x    &#xA;FFmpeg stderr: [hls @ 0x55e00dfc4380] Opening &#x27;my_path/stream0.ts&#x27; for writing&#xA;FFmpeg stderr: [hls @ 0x55e00dfc4380] Opening &#x27;my_path/stream.m3u8.tmp&#x27; for writing&#xA;FFmpeg stderr: frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:01.37 bitrate=N/A speed= 2.5x    &#xA;FFmpeg stderr: video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown&#xA;FFmpeg stderr: [aac @ 0x55e00dfff840] Qavg: 65536.000&#xA;FFmpeg stderr: &#xA;Convers&#xE3;o conclu&#xED;da&#xA;

    &#xA;

    The muxing overhead: unknown only appears when the error occurs and the conversion is complete.

    &#xA;

    I've already tried changing the video and audio encoders, as well as the various input and output parameters of the conversion. I also tried updating ffmpeg (it's already on the latest version, using fluent-ffmpeg, "fluent-ffmpeg": "^2.1.3",)

    &#xA;

    I would like to understand why this happens on some devices and how to fix it. Thanks.

    &#xA;