Recherche avancée

Médias (0)

Mot : - Tags -/performance

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

Autres articles (111)

  • Script d’installation automatique de MediaSPIP

    25 avril 2011, par

    Afin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
    Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
    La documentation de l’utilisation du script d’installation (...)

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

  • Les notifications de la ferme

    1er décembre 2010, par

    Afin d’assurer une gestion correcte de la ferme, il est nécessaire de notifier plusieurs choses lors d’actions spécifiques à la fois à l’utilisateur mais également à l’ensemble des administrateurs de la ferme.
    Les notifications de changement de statut
    Lors d’un changement de statut d’une instance, l’ensemble des administrateurs de la ferme doivent être notifiés de cette modification ainsi que l’utilisateur administrateur de l’instance.
    À la demande d’un canal
    Passage au statut "publie"
    Passage au (...)

Sur d’autres sites (6027)

  • Your 6-step guide to increasing acquisition

    2 juillet 2019, par Matomo Core Team — Analytics Tips

    Your 6-step guide to increasing acquisition

    Want to save time and money, as well as increase conversions and acquisition ? Matomo Analytics is here to help with that !

    Let’s start by helping you create a website visitors’ acquisition strategy, without it you might be going in blind and missing opportunities that might’ve been easily found in your metrics.

    To help you craft a strategy for your site, check out the steps below !

    Step one : Get familiar with the Acquisition feature

    The easiest way is to start with Matomo’s Acquisition feature itself. Discover and take action on the marketing channels with the biggest ROI for your business. You’ll learn :

    How to get traffic from external websites : Find out who’s helping you succeed from external websites and convince them to do more of it. Get more traffic by proactively asking for : paid sponsorships ; guest blog posts ; or spending more advertising on the particular website.

    About Social Networks : Which social media channels are connecting with the audience you want ? Take the guesswork out by using only the ones you need. By finding out which social channels your ideal audience prefers, you can generate shareable, convincing and engaging content to drive shares and traffic through to your site.

    Campaigns : This helps you understand which marketing campaign is working and which isn’t. You can then shift your efforts to effectively gain more visitors with less costs. Keep track of every ad and content piece you show across internal and external channels to see which has the biggest impact on your business objectives.

    Enhanced SEO : Every acquisition plan needs a focus on maximising your Search Engine Optimization (SEO) efforts. When it comes to getting conclusive search engine referrer metrics, you need to be sure you’re getting ALL the insights to drive your SEO strategy. See keyword position rankings, integrate Google, Bing and Yahoo search consoles, and no longer be restricted with “keyword not defined” showing up in your keywords reports.

    >> Watch Acquisition introduction video (playtime : 2.54 minutes)

    Step two : Set your goals and monitor conversion funnels

    Let the Goals feature guide you

    Goals are essential for building your marketing strategy and getting new customers. The more goals you track, the more you learn about behavioural changes and modify pathways to impact acquisitions over time. 

    Are you checking :

    • Which channels are converting the best for your business ?
    • Which cities/countries are most popular ?
    • What devices will attract the most visitors ?
    • How engaged your visitors are before converting ?

    This way you can see if your campaigns (SEO, PPC, signups, blogs etc.) or optimising efforts (A/B Testing, Funnels) have made an impact with the time and investment you’ve put in.

    >> Watch Goals introduction video (playtime : 2.04 minutes)

    The Funnels feature leads you to success

    Conversion funnels give you the big picture on whether your acquisition plans are paying off and where they may be falling short. If the ultimate goal of your site is to drive conversions, then each funnel can tell you how effectively you’re driving traffic through to your desired outcome.

    >> Watch Funnels introduction video (playtime : 2.29 minutes)

    Goals feature web analytics

    Step three : Measure the success of every touchpoint in your customer’s journey

    Multi Attribution feature

    Accurately identify channels where visitors first engage with your business, as well as the final channel they came from, before purchasing your product/service. This helps you make smarter decisions when determining acquisition spend to accurately calculate the Customer Acquisition Cost (CAC). Here you no longer falsely over-estimate investment in failing marketing channels.

    >> Watch Multi Attribution introduction video (playtime : 2.28 minutes)

    Step four : For ecommerce sites, understand who your customers are to increase sales

    Ecommerce feature to significantly increase $ potential

    If your website’s overall purpose is to generate revenue, the Ecommerce feature gives you comprehensive insights into your customer’s purchasing behaviours.

    This heavily reduces your risks when marketing products to potential customers as you’ll understand who to target, what to target them with and where further opportunities exist.

    >> Watch Ecommerce introduction video (playtime : 2.04 minutes)

    e-commerce analytics

    Step five : Make sure the forms on your website are easy to complete

    Form Analytics feature

    Once you get visitors through the funnel, the forms on your website are the final step to conversion and need special attention. If not done right, you could be missing out on converting a large portion of your visitors.

    Thankfully, you can now identify and fix pain points on the forms that are most important to your business’ success.

    >> Watch Form Analytics introduction video (playtime : 2.39 minutes)

    Form analytics feature

    Step six : Discover what a customer journey looks like on a user-by-user basis and bring in key acquisition elements to your strategy

    Visitor Profiles tell you each visitors’ history

    The Profile feature summarises every visit, action and purchase made.

    Better understand :

    • Why your visitors viewed your website.
    • Why your returning visitors continue to view your website.
    • What specifically your visitors are looking for and whether they found it on your website.

    The benefit is being able to see how a combination of acquisition channels play a part in a single buyer’s journey.

    >> Watch Visitors introduction video (playtime : 1.46 minutes)

    To summarise

    This guide will set you on a path to creating a well-planned acquisition strategy. It’s the key to attracting and capturing the attention of potential visitors/leads, and successfully driving them through a funnel/buyer’s journey on your website.

    Because of Matomo’s reputation as a trusted analytics platform, the features above can be used to assist you in making smarter data-driven decisions. You can pursue different acquisition avenues with confidence and create a strategy that’s agile and ready for success, all while respecting user privacy.

  • Anomalie #4364 : MYSQL 5.7 - Erreurs avec les dates à 0

    2 août 2019, par cedric -

    Mais le problème principal c’est qu’on utilise aussi des dates floues de type 2019-06-00 ou meme 2019-00-00 quand le jour ou le mois ne sont pas connus.
    Ce n’est pas accepté non plus par le mode strict de mySQL mais pour le coup c’est bien plus compliqué à gérer pour ne pas perdre la feature
    Chez moi j’ai changé le sql mode par défaut dans le my.ini (ou équivalent mariaDB)

  • ffmpeg avcodec_send_packet/avcodec_receive_frame memory leak

    23 janvier 2019, par G Hamlin

    I’m attempting to decode frames, but memory usage grows with every frame (more specifically, with every call to avcodec_send_packet) until finally the code crashes with a bad_alloc. Here’s the basic decode loop :

    int rfret = 0;
    while((rfret = av_read_frame(inctx.get(), &packet)) >= 0){
       if (packet.stream_index == vstrm_idx) {

           //std::cout << "Sending Packet" << std::endl;
           int ret = avcodec_send_packet(ctx.get(), &packet);
           if (ret < 0 || ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
               std::cout << "avcodec_send_packet: " << ret << std::endl;
               break;
           }

           while (ret  >= 0) {
               //std::cout << "Receiving Frame" << std::endl;
               ret = avcodec_receive_frame(ctx.get(), fr);
               if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
                   //std::cout << "avcodec_receive_frame: " << ret << std::endl;
                   av_frame_unref(fr);
                   // av_frame_free(&fr);
                   break;
               }

               std::cout << "frame: " << ctx->frame_number << std::endl;

               // eventually do something with the frame here...

               av_frame_unref(fr);
               // av_frame_free(&fr);
           }
       }
       else {
           //std::cout << "Not Video" << std::endl;
       }
       av_packet_unref(&packet);
    }

    Memory usage/leakage seems to scale with the resolution of the video I’m decoding. For example, for a 3840x2160 resolution video, the memory usage in windows task manager consistently jumps up by about 8mb (1 byte per pixel ??) for each received frame. Do I need to do something besides call av_frame_unref to release the memory ?

    (more) complete code below


    void AVFormatContextDeleter(AVFormatContext* ptr)
    {
       if (ptr) {
           avformat_close_input(&ptr);
       }
    }

    void AVCodecContextDeleter(AVCodecContext* ptr)
    {
       if (ptr) {
           avcodec_free_context(&ptr);
       }
    }

    typedef std::unique_ptr AVFormatContextPtr;
    typedef std::unique_ptr AVCodecContextPtr;

    AVCodecContextPtr createAvCodecContext(AVCodec *vcodec)
    {
       AVCodecContextPtr ctx(avcodec_alloc_context3(vcodec), AVCodecContextDeleter);
       return ctx;
    }

    AVFormatContextPtr createFormatContext(const std::string& filename)
    {
       AVFormatContext* inctxPtr = nullptr;
       int ret = avformat_open_input(&inctxPtr, filename.c_str(), nullptr, nullptr);
       //    int ret = avformat_open_input(&inctx, "D:/Videos/test.mp4", nullptr, nullptr);
       if (ret != 0) {
           inctxPtr = nullptr;
       }

       return AVFormatContextPtr(inctxPtr, AVFormatContextDeleter);
    }

    int testDecode()
    {
       // open input file context
       AVFormatContextPtr inctx = createFormatContext("D:/Videos/Matt Chapman Hi Greg.MOV");

       if (!inctx) {
           // std::cerr << "fail to avforamt_open_input(\"" << infile << "\"): ret=" << ret;
           return 1;
       }

       // retrieve input stream information
       int ret = avformat_find_stream_info(inctx.get(), nullptr);
       if (ret < 0) {
           //std::cerr << "fail to avformat_find_stream_info: ret=" << ret;
           return 2;
       }

       // find primary video stream
       AVCodec* vcodec = nullptr;
       const int vstrm_idx = av_find_best_stream(inctx.get(), AVMEDIA_TYPE_VIDEO, -1, -1, &vcodec, 0);
       if (vstrm_idx < 0) {
           //std::cerr << "fail to av_find_best_stream: vstrm_idx=" << vstrm_idx;
           return 3;
       }

       AVCodecParameters* origin_par = inctx->streams[vstrm_idx]->codecpar;
       if (vcodec == nullptr) {  // is this even necessary?
           vcodec = avcodec_find_decoder(origin_par->codec_id);
           if (!vcodec) {
               // Can't find decoder
               return 4;
           }
       }

       AVCodecContextPtr ctx = createAvCodecContext(vcodec);
       if (!ctx) {
           return 5;
       }

       ret = avcodec_parameters_to_context(ctx.get(), origin_par);
       if (ret) {
           return 6;
       }

       ret = avcodec_open2(ctx.get(), vcodec, nullptr);
       if (ret < 0) {
           return 7;
       }

       //print input video stream informataion
       std::cout
               //<< "infile: " << infile << "\n"
               << "format: " << inctx->iformat->name << "\n"
               << "vcodec: " << vcodec->name << "\n"
               << "size:   " << origin_par->width << 'x' << origin_par->height << "\n"
               << "fps:    " << av_q2d(ctx->framerate) << " [fps]\n"
               << "length: " << av_rescale_q(inctx->duration, ctx->time_base, {1,1000}) / 1000. << " [sec]\n"
               << "pixfmt: " << av_get_pix_fmt_name(ctx->pix_fmt) << "\n"
               << "frame:  " << inctx->streams[vstrm_idx]->nb_frames << "\n"
               << std::flush;


       AVPacket packet;

       av_init_packet(&packet);
       packet.data = nullptr;
       packet.size = 0;

       AVFrame *fr = av_frame_alloc();
       if (!fr) {
           return 8;
       }

       int rfret = 0;
       while((rfret = av_read_frame(inctx.get(), &packet)) >= 0){
           if (packet.stream_index == vstrm_idx) {

               //std::cout << "Sending Packet" << std::endl;
               int ret = avcodec_send_packet(ctx.get(), &packet);
               if (ret < 0 || ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
                   std::cout << "avcodec_send_packet: " << ret << std::endl;
                   break;
               }

               while (ret  >= 0) {
                   //std::cout << "Receiving Frame" << std::endl;
                   ret = avcodec_receive_frame(ctx.get(), fr);
                   if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
                       //std::cout << "avcodec_receive_frame: " << ret << std::endl;
                       av_frame_unref(fr);
                       // av_frame_free(&fr);
                       break;
                   }

                   std::cout << "frame: " << ctx->frame_number << std::endl;

                   // do something with the frame here...

                   av_frame_unref(fr);
                   // av_frame_free(&fr);
               }
           }
           else {
               //std::cout << "Not Video" << std::endl;
           }
           av_packet_unref(&packet);
       }

       std::cout << "RFRET = " << rfret << std::endl;

       return 0;
    }

    Update 1 : (1/21/2019) Compiling on a different machine and running with different video files I am not seeing the memory usage growing without bound. I’ll try to narrow down where the difference lies (compiler ?, ffmpeg version ?, or video encoding ?)

    Update 2 : (1/21/2019) Ok, it looks like there is some interaction occurring between ffmpeg and Qt’s QCamera. In my application, I’m using Qt to manage the webcam, but decided to use ffmpeg libraries to handle decoding/encoding since Qt doesn’t have as comprehensive support for different codecs. If I have the camera turned on (through Qt), ffmpeg decoding memory consumption grows without bound. If the camera is off, ffmpeg behaves fine. I’ve tried this both with a physical camera (Logitech C920) and with a virtual camera using OBS-Virtualcam, with the same result. So far I’m baffled as to how the two systems are interacting...