Recherche avancée

Médias (91)

Autres articles (13)

  • 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 (...)

  • Configuration spécifique d’Apache

    4 février 2011, par

    Modules spécifiques
    Pour la configuration d’Apache, il est conseillé d’activer certains modules non spécifiques à MediaSPIP, mais permettant d’améliorer les performances : mod_deflate et mod_headers pour compresser automatiquement via Apache les pages. Cf ce tutoriel ; mode_expires pour gérer correctement l’expiration des hits. Cf ce tutoriel ;
    Il est également conseillé d’ajouter la prise en charge par apache du mime-type pour les fichiers WebM comme indiqué dans ce tutoriel.
    Création d’un (...)

  • Contribute to a better visual interface

    13 avril 2011

    MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
    Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community.

Sur d’autres sites (4248)

  • FFMPEG concat video throws No Such Filter error

    5 janvier 2021, par Rohan Shah

    I am trying to concat three videos using FFMPEG,

    


    This is my command that I am executing using Java Runtime

    


        String command = "ffmpeg -i url_to_video -i url_to_video -i url_to_video -filter_complex [0:v] [0:a] [1:v] [1:a] [2:v] [2:a] concat=n=3:v=1:a=1 [v] [a] -map [v] -map [a] /home/rohan/output.mp4";

    Process process = Runtime.getRuntime().exec(command.split(" "));


    


    This is throwing me No Such Filter error, whereas if I try to run this via Terminal it works perfectly fine. I tried tweaking the cmd by removing or adding quotes, but any variant of this command that runs on terminal throws error in Java Runtime. While it runs perfectly on the Terminal.

    


    I have tried with Absolute paths and Amazon S3 URLs, while both of them work just fine in terminal, The S3 variant of command throws No Such Filter error and the Absolute path command throws a No Such File Or Directory error during Runtime.

    


    Here is the stack trace of the error

    


    Here is the standard error of the command (if any):

ffmpeg version n4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  configuration: --prefix= --prefix=/usr --disable-debug --disable-doc --disable-static --enable-cuda --enable-cuda-sdk --enable-cuvid --enable-libdrm --enable-ffplay --enable-gnutls --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libmp3lame --enable-libnpp --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopus --enable-libpulse --enable-sdl2 --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-nonfree --enable-nvenc --enable-omx --enable-openal --enable-opencl --enable-runtime-cpudetect --enable-shared --enable-vaapi --enable-vdpau --enable-version3 --enable-xlib
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://openxcell-development-public.s3.ap-south-1.amazonaws.com/bhit/outputForBHit.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:00:10.57, start: 0.000000, bitrate: 2048 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1696 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 347 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'https://openxcell-development-public.s3.ap-south-1.amazonaws.com/bhit/outputForBHit.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:00:10.57, start: 0.000000, bitrate: 2048 kb/s
    Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1696 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 347 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Input #2, mov,mp4,m4a,3gp,3g2,mj2, from 'https://openxcell-development-public.s3.ap-south-1.amazonaws.com/bhit/outputForBHit.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:00:10.57, start: 0.000000, bitrate: 2048 kb/s
    Stream #2:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1696 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #2:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 347 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
[AVFilterGraph @ 0x564151595680] No such filter: ''
Error initializing complex filters.
Invalid argument


    


  • Maven dependency works on machine but not when packaged in a .war - org.bytedeco.javacpp.avutil

    26 décembre 2016, par Jake Miller

    I have a web app where you can upload a video and a thumbnail is created for this video. It works completely fine on my machine, but as soon as I deploy to AWS (Amazon Web Services) as a .war file, I experience dependency issues with maven.

    Here’s the exception from the logs :

    Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.javacpp.avutil
       at java.lang.Class.forName0(Native Method) ~[na:1.8.0_101]
       at java.lang.Class.forName(Class.java:348) ~[na:1.8.0_101]
       at org.bytedeco.javacpp.Loader.load(Loader.java:472) ~[javacpp-1.2.1.jar!/:1.2.1]
       at org.bytedeco.javacpp.Loader.load(Loader.java:417) ~[javacpp-1.2.1.jar!/:1.2.1]
       at org.bytedeco.javacpp.avformat$AVFormatContext.<clinit>(avformat.java:2597) ~[ffmpeg-2.8.1-1.1.jar!/:1.2.1]
       at org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:391) ~[javacv-1.2.jar!/:1.2]
       at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:385) ~[javacv-1.2.jar!/:1.2]
       at com.myapp.app.service.ICampaignService.createThumbnail(ICampaignService.java:425) ~[classes!/:0.0.44T-SNAPSHOT]
       at com.myapp.app.service.ICampaignService$$FastClassBySpringCGLIB$$47736265.invoke(<generated>) ~[classes!/:0.0.44T-SNAPSHOT]
       at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720) ~[spring-aop-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) ~[spring-aop-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) ~[spring-tx-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:280) ~[spring-tx-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) ~[spring-tx-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655) ~[spring-aop-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at com.myapp.app.service.ICampaignService$$EnhancerBySpringCGLIB$$67e59894.createThumbnail(<generated>) ~[classes!/:0.0.44T-SNAPSHOT]
       at com.myapp.app.controllers.CampaignController.uploadCampaign(CampaignController.java:237) ~[classes!/:0.0.44T-SNAPSHOT]
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_101]
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_101]
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_101]
       at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_101]
       at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) ~[spring-web-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114) ~[spring-webmvc-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) ~[spring-webmvc-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) ~[spring-webmvc-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) ~[spring-webmvc-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
       ... 85 common frames omitted
    </generated></generated></clinit>

    Here are my maven dependencies for the ffmpeg wrapper I’m using :

    <dependency>
       <groupid>org.bytedeco</groupid>
       <artifactid>javacv</artifactid>
       <version>1.3</version>
    </dependency>
    <dependency>
       <groupid>org.bytedeco</groupid>
       <artifactid>javacpp</artifactid>
       <version>1.3</version>
    </dependency>

    I’ve tried various different versions but nothing has worked so far. What’s strange is the error says org.bytedeco.javacpp.avutil but I have access to the avutil class in my IDE.

    EDIT

    I’ve also tried everything at this github post : https://github.com/bytedeco/javacpp-presets/issues/225

    No solution I’ve found has worked. I’ve tried various different versions and various different org.bytedeco dependencies but they all yield the same error.

  • Huge memory leak when filtering video with libavfilter

    29 mai 2017, par Captain Jack

    I have a relatively simple FFMPEG C program, to which a video frame is fed, processed via filter graph and sent to frame renderer.

    Here are some code snippets :

    /* Filter graph here */
    char args[512];
    enum AVPixelFormat pix_fmts[] = {AV_PIX_FMT_RGB32 };    
    AVFilterGraph   *filter_graph;
    avfilter_register_all();
    AVFilter *buffersrc  = avfilter_get_by_name("buffer");
    AVFilter *buffersink = avfilter_get_by_name("ffbuffersink");
    AVBufferSinkParams *buffersink_params;
    AVFilterInOut *outputs = avfilter_inout_alloc();
    AVFilterInOut *inputs  = avfilter_inout_alloc();
    filter_graph = avfilter_graph_alloc();

    snprintf(args, sizeof(args),
           "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d",
           av->codec_ctx->width, av->codec_ctx->height, av->codec_ctx->pix_fmt,
           av->codec_ctx->time_base.num, av->codec_ctx->time_base.den,
           av->codec_ctx->sample_aspect_ratio.num, av->codec_ctx->sample_aspect_ratio.den);

    if(avfilter_graph_create_filter(&amp;av->buffersrc_ctx, buffersrc, "in",args, NULL, filter_graph) &lt; 0)
    {
       fprintf(stderr, "Cannot create buffer source\n");
       return(0);
    }

    /* buffer video sink: to terminate the filter chain. */
    buffersink_params = av_buffersink_params_alloc();
    buffersink_params->pixel_fmts = pix_fmts;

    if(avfilter_graph_create_filter(&amp;av->buffersink_ctx, buffersink, "out",NULL, buffersink_params, filter_graph) &lt; 0)
    {
       printf("Cannot create buffer sink\n");
       return(HACKTV_ERROR);
    }

     /* Endpoints for the filter graph. */
       outputs->name       = av_strdup("in");
       outputs->filter_ctx = av->buffersrc_ctx;
       outputs->pad_idx    = 0;
       outputs->next       = NULL;

       inputs->name       = av_strdup("out");
       inputs->filter_ctx = av->buffersink_ctx;
       inputs->pad_idx    = 0;
       inputs->next       = NULL;

    const char *filter_descr = "vflip";

       if (avfilter_graph_parse_ptr(filter_graph, filter_descr, &amp;inputs, &amp;outputs, NULL) &lt; 0)
    {
       printf("Cannot parse filter graph\n");
       return(0);
    }

    if (avfilter_graph_config(filter_graph, NULL) &lt; 0)
    {
       printf("Cannot configure filter graph\n");
       return(0);
    }

    av_free(buffersink_params);
    avfilter_inout_free(&amp;inputs);
    avfilter_inout_free(&amp;outputs);

    The above code is called by these elsewhere :

    av->frame_in->pts = av_frame_get_best_effort_timestamp(av->frame_in);

    /* push the decoded frame into the filtergraph*/
    if (av_buffersrc_add_frame(av->buffersrc_ctx, av->frame_in) &lt; 0)
    {
       printf( "Error while feeding the filtdergraph\n");
       break;
    }

    /* pull filtered pictures from the filtergraph */
    if(av_buffersink_get_frame(av->buffersink_ctx, av->frame_out) &lt; 0)
    {
         printf( "Error while sourcing the filtergraph\n");
          break;
     }  

    /* do stuff with frame */

    Now, the code works absolutely fine and the video comes out the way I expect it to (vertically flipped for testing purposes).

    The biggest issue I have is that there is a massive memory leak. An high res video will consume 2Gb in a matter of seconds and crash the program. I traced the leak to this piece of code :

    /* push the decoded frame into the filtergraph*/
    if (av_buffersrc_add_frame(av->buffersrc_ctx, av->frame_in) &lt; 0)

    If I bypass the filter by doing av->frame_out=av->frame_in; without pushing the frame into it (and obviously not pulling from it), there is no leak and memory usage is stable.

    Now, I am very new to C, so be gentle, but it seems like I should be clearing out the buffersrc_ctx somehow but no idea how. I’ve looked in official documentations but couldn’t find anything.

    Can someone advise ?