
Recherche avancée
Autres articles (108)
-
Les formats acceptés
28 janvier 2010, parLes commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
ffmpeg -codecs ffmpeg -formats
Les format videos acceptés en entrée
Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
Les formats vidéos de sortie possibles
Dans un premier temps on (...) -
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP automatically converts uploaded files to internet-compatible formats.
Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
All uploaded files are stored online in their original format, so you can (...) -
Ajouter notes et légendes aux images
7 février 2011, parPour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
Modification lors de l’ajout d’un média
Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)
Sur d’autres sites (7125)
-
avformat/matroskadec : Do not leak queued packets on sync errors
6 février 2019, par Michael Niedermayeravformat/matroskadec : Do not leak queued packets on sync errors
Fixes : memleak
Fixes : clusterfuzz-testcase-minimized-audio_decoder_fuzzer-5649187601121280Reported-by : Chris Cunningham <chcunningham@google.com>
Tested-by : Chris Cunningham <chcunningham@google.com>
Signed-off-by : Michael Niedermayer <michael@niedermayer.cc> -
asfdec : prevent the memory leak while reading metadata
31 juillet 2015, par Alexandra Hájková -
ffmpeg memory leak when opening libx264 encoder
18 octobre 2023, par ksb496I have spotted a memory leak issue when I use the libx264 encoder in the FFmpeg C API. Specifically, when it comes to deallocate memory after encoding a video. After tracking the factor that causes it, I realized that it happens after invoking
avcodec_open2
, which allocates some memory that afterwards cannot be freed. Once the video is processed, callingavcodec_close
and thenavcodec_free_context
does not entirely free all the allocated memory.

After some investigation, I found out that the problem could be located in
AVCodecContext::priv_data
being allocated but not being freed afterwards. In this question a solution to the issue is proposed. However, I tried to implement it without success (the memory being leaked seems to be exactly the same).

As a matter of fact, the following simple code (which includes the patch that was proposed in the aforementioned question), in which the codec is being opened and closed multiple times without even writing a single frame or allocating an
AVFormatContext
, illustrates the memory leak.

#include 
extern "C"{
#include 
#include <libavcodec></libavcodec>avcodec.h>
#include <libavutil></libavutil>opt.h>
}

int main()
{
 avcodec_register_all();

 AVCodec *codec;
 AVCodecContext *c;
 for (int n=0; n<2000; n++)
 {
 codec = avcodec_find_encoder_by_name("libx264");
 c=avcodec_alloc_context3(codec);
 c->pix_fmt=AV_PIX_FMT_YUV420P;
 c->width=1920;
 c->height=1080;
 c->time_base=(AVRational){1, 30};
 c->framerate=(AVRational){30, 1};
 avcodec_open2(c, codec, NULL);
 avcodec_close(c);
 av_opt_free(c->priv_data);
 av_freep(&c->priv_data);
 avcodec_free_context(&c);
 }
 return 0;
}



It must be remarked that if the line
codec = avcodec_find_encoder_by_name("libx264")
is replaced to an invocation to an internal/native encoder, e.g.,codec = avcodec_find_encoder(AV_CODEC_ID_MPEG4)
, then the memory leak issue completely disappears. Hence, it certainly seems to be an issue related to some private data of the external encoder not being properly freed.

It is also worth mentioning that I am using an old version of ffmpeg and libx264. To be more precise, ffmpeg version 2.8git and libx264 version 0.136.x. For technical reasons that are beyond the scope of this question, it is not possible to upgrade the libraries to newer versions onto the project in which these are being used. I am fully aware that most of the involved ffmpeg/libx264 code has been probably changed along the years and many functions became deprecated or fixed, and thus reporting this as a possible bug in the ffmpeg developer's mailbox is out of the question.


Nevertheless, I am still asking this here because I would like to know whether it is just some mistake on my end and/or something I am not taking into account when it comes to free all the memory relative to an external encoder (best case scenario). Otherwise, I would like to know whether there can be some reasonably cheap solution through some custom code or function that can be implemented as a patch (assuming it is indeed an issue related to ffmpeg/libx264), no matter if it makes the whole deallocation code less elegant or concise. If someone is still working on these older versions of ffmpeg and can come up with a workaround, that would be highly appreciated.