
Recherche avancée
Médias (1)
-
Video d’abeille en portrait
14 mai 2011, par
Mis à jour : Février 2012
Langue : français
Type : Video
Autres articles (97)
-
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela. -
ANNEXE : Les plugins utilisés spécifiquement pour la ferme
5 mars 2010, parLe site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)
Sur d’autres sites (10929)
-
Up-to-date example for libavfilter usage [closed]
25 juillet 2024, par Michael WernerI am looking for an example how to use the latest FFmpeg libavfilter functions to add a bitmap overlay image to a video. I only find more than ten years old examples which are based on an old versions of libavfilter.


What I am trying to do :
On Windows with latest libav (full build) an C++ app reads YUV420P frames from a frame grabber card. I want to draw a Windows bitmap BGR24 overlay image (from file) on every frame via libavfilter. First I convert the BGR24 overlay image via format filter to YUV420P. Then I feed the YUV420P frame from frame grabber and the YUV420P overlay into the overlay filter. Everything seems to be fine but when I try to get the frame out of the filter graph I always get an "Resource is temporary not available" (EAGAIN) error, independent on how many frames I put into the graph.


My current initialization code looks like below. It does not report any errors or warnings but when I try to get the filtered frame out of the graph via
av_buffersink_get_frame
I always get anEAGAIN
return code.

Here is my current initialization code :


int init_overlay_filter(AVFilterGraph** graph, AVFilterContext** src_ctx, AVFilterContext** overlay_src_ctx,
 AVFilterContext** sink_ctx)
{
 AVFilterGraph* filter_graph;
 AVFilterContext* buffersrc_ctx;
 AVFilterContext* overlay_buffersrc_ctx;
 AVFilterContext* buffersink_ctx;
 AVFilterContext* overlay_ctx;
 AVFilterContext* format_ctx;
 const AVFilter *buffersrc, *buffersink, *overlay_buffersrc, *overlay_filter, *format_filter;
 int ret;

 // Create the filter graph
 filter_graph = avfilter_graph_alloc();
 if (!filter_graph)
 {
 fprintf(stderr, "Unable to create filter graph.\n");
 return AVERROR(ENOMEM);
 }

 // Create buffer source filter for main video
 buffersrc = avfilter_get_by_name("buffer");
 if (!buffersrc)
 {
 fprintf(stderr, "Unable to find buffer filter.\n");
 return AVERROR_FILTER_NOT_FOUND;
 }

 // Create buffer source filter for overlay image
 overlay_buffersrc = avfilter_get_by_name("buffer");
 if (!overlay_buffersrc)
 {
 fprintf(stderr, "Unable to find buffer filter.\n");
 return AVERROR_FILTER_NOT_FOUND;
 }

 // Create buffer sink filter
 buffersink = avfilter_get_by_name("buffersink");
 if (!buffersink)
 {
 fprintf(stderr, "Unable to find buffersink filter.\n");
 return AVERROR_FILTER_NOT_FOUND;
 }

 // Create overlay filter
 overlay_filter = avfilter_get_by_name("overlay");
 if (!overlay_filter)
 {
 fprintf(stderr, "Unable to find overlay filter.\n");
 return AVERROR_FILTER_NOT_FOUND;
 }

 // Create format filter
 format_filter = avfilter_get_by_name("format");
 if (!format_filter) 
 {
 fprintf(stderr, "Unable to find format filter.\n");
 return AVERROR_FILTER_NOT_FOUND;
 }

 // Initialize the main video buffer source
 char args[512];
 snprintf(args, sizeof(args),
 "video_size=1920x1080:pix_fmt=yuv420p:time_base=1/25:pixel_aspect=1/1");
 ret = avfilter_graph_create_filter(&buffersrc_ctx, buffersrc, "in", args, NULL, filter_graph);
 if (ret < 0)
 {
 fprintf(stderr, "Unable to create buffer source filter for main video.\n");
 return ret;
 }

 // Initialize the overlay buffer source
 snprintf(args, sizeof(args),
 "video_size=165x165:pix_fmt=bgr24:time_base=1/25:pixel_aspect=1/1");
 ret = avfilter_graph_create_filter(&overlay_buffersrc_ctx, overlay_buffersrc, "overlay_in", args, NULL,
 filter_graph);
 if (ret < 0)
 {
 fprintf(stderr, "Unable to create buffer source filter for overlay.\n");
 return ret;
 }

 // Initialize the format filter to convert overlay image to yuv420p
 snprintf(args, sizeof(args), "pix_fmts=yuv420p");
 ret = avfilter_graph_create_filter(&format_ctx, format_filter, "format", args, NULL, filter_graph);

 if (ret < 0) 
 {
 fprintf(stderr, "Unable to create format filter.\n");
 return ret;
 }

 // Initialize the buffer sink
 ret = avfilter_graph_create_filter(&buffersink_ctx, buffersink, "out", NULL, NULL, filter_graph);
 if (ret < 0)
 {
 fprintf(stderr, "Unable to create buffer sink filter.\n");
 return ret;
 }

 // Initialize the overlay filter
 ret = avfilter_graph_create_filter(&overlay_ctx, overlay_filter, "overlay", "W-w:H-h:enable='between(t,0,20)':format=yuv420", NULL, filter_graph);
 if (ret < 0)
 {
 fprintf(stderr, "Unable to create overlay filter.\n");
 return ret;
 }

 // Connect the filters
 ret = avfilter_link(overlay_buffersrc_ctx, 0, format_ctx, 0);

 if (ret >= 0)
 {
 ret = avfilter_link(buffersrc_ctx, 0, overlay_ctx, 0);
 }
 else
 {
 fprintf(stderr, "Unable to configure filter graph.\n");
 return ret;
 }


 if (ret >= 0) 
 {
 ret = avfilter_link(format_ctx, 0, overlay_ctx, 1);
 }
 else
 {
 fprintf(stderr, "Unable to configure filter graph.\n");
 return ret;
 }

 if (ret >= 0) 
 {
 if ((ret = avfilter_link(overlay_ctx, 0, buffersink_ctx, 0)) < 0)
 {
 fprintf(stderr, "Unable to link filter graph.\n");
 return ret;
 }
 }
 else
 {
 fprintf(stderr, "Unable to configure filter graph.\n");
 return ret;
 }

 // Configure the filter graph
 if ((ret = avfilter_graph_config(filter_graph, NULL)) < 0)
 {
 fprintf(stderr, "Unable to configure filter graph.\n");
 return ret;
 }

 *graph = filter_graph;
 *src_ctx = buffersrc_ctx;
 *overlay_src_ctx = overlay_buffersrc_ctx;
 *sink_ctx = buffersink_ctx;

 return 0;
}



-
how to remux/fix video file saved with testdisk that reports error "Invalid NAL unit size"
18 août 2022, par LukaI have deleted a video file from an SD card and then 'undeleted' it with tool called testdisk for Linux. It saved complete file (6Gb), but video seems broken (can't be played by any video players) and ffprobe reports :


[mov,mp4,m4a,3gp,3g2,mj2 @ 0x55c613baef00] st: 0 edit list: 1 Missing key frame while searching for timestamp: 1000
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x55c613baef00] st: 0 edit list 1 Cannot find an index entry before timestamp: 1000.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x55c613baef00] Found duplicated MOOV Atom. Skipped it
[aac @ 0x55c613bb6dc0] channel element 3.6 is not allocated
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-2119335523 > 644375).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (1846222201 > 61596).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-864346179 > 57764).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (822755552 > 161099).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (188456672 > 131075).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-2009136561 > 113517).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-821906870 > 228207).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-516947408 > 120554).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (268246533 > 115897).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-1483463928 > 238451).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-1693450506 > 114421).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (1048922816 > 114846).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-600883429 > 357422).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-1612859848 > 93601).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-600474974 > 111975).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (321873764 > 211226).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-665491613 > 92183).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (258461639 > 95290).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (713914840 > 195792).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-556556768 > 93998).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-1864278243 > 94783).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-333442404 > 203732).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (1836887686 > 95706).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (125657193 > 96573).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-2049008956 > 342294).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (650110420 > 98067).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (694115932 > 100359).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (955742608 > 204098).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (1004021052 > 100944).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-885264782 > 100557).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[h264 @ 0x55c613bb0cc0] Invalid NAL unit size (-1074298568 > 209804).
[h264 @ 0x55c613bb0cc0] Error splitting the input into NAL units.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x55c613baef00] decoding for stream 0 failed
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x55c613baef00] Could not find codec parameters for stream 0 (Video: h264 (avc1 / 0x31637661), none(pc, bt709), 1920x1080, 29593 kb/s): unspecified pixel format
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'MVI_1399.MP4':
 Metadata:
 creation_time : 2022-08-17T17:13:19.000000Z
 major_brand : mp42
 minor_version : 1
 make : 
 make-eng : 
 model : 
 model-eng : 
 compatible_brands: mp42avc1CAEP
 Duration: 00:29:59.08, start: 0.000000, bitrate: 29879 kb/s
 Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), none(pc, bt709), 1920x1080, 29593 kb/s, 25 fps, 25 tbr, 25k tbn, 50k tbc (default)
 Metadata:
 creation_time : 2022-08-17T17:13:19.000000Z
 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 253 kb/s (default)
 Metadata:
 creation_time : 2022-08-17T17:13:19.000000Z



I'm no programmer, but have used ffmpeg a lot. How can I remux (or even re-encode) such file to fix this and make the file usable for further work ?


I have created a 10seconds snippet with
ffmpeg -i MVI_1399.MP4 -t 00:00:10 -c copy MVI_1399_10sec.mp4
for anyone to check. I also created a ten second snippet from a functioning clip from the same camera (I presume same codec parameters etc) :

https://cb.emanat.si/s/WzTCxHDkzGw3gM3


-
How to Choose a GDPR Compliant Web Analytics Solution
2 mars 2022, par Matthieu Aubry — Privacy