Recherche avancée

Médias (0)

Mot : - Tags -/serveur

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

Autres articles (55)

  • Le plugin : Podcasts.

    14 juillet 2010, par

    Le problème du podcasting est à nouveau un problème révélateur de la normalisation des transports de données sur Internet.
    Deux formats intéressants existent : Celui développé par Apple, très axé sur l’utilisation d’iTunes dont la SPEC est ici ; Le format "Media RSS Module" qui est plus "libre" notamment soutenu par Yahoo et le logiciel Miro ;
    Types de fichiers supportés dans les flux
    Le format d’Apple n’autorise que les formats suivants dans ses flux : .mp3 audio/mpeg .m4a audio/x-m4a .mp4 (...)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Prérequis à l’installation

    31 janvier 2010, par

    Préambule
    Cet article n’a pas pour but de détailler les installations de ces logiciels mais plutôt de donner des informations sur leur configuration spécifique.
    Avant toute chose SPIPMotion tout comme MediaSPIP est fait pour tourner sur des distributions Linux de type Debian ou dérivées (Ubuntu...). Les documentations de ce site se réfèrent donc à ces distributions. Il est également possible de l’utiliser sur d’autres distributions Linux mais aucune garantie de bon fonctionnement n’est possible.
    Il (...)

Sur d’autres sites (8331)

  • using ASIO to implement interrupt_callback for ffmpeg

    22 décembre 2020, par Sergey Kolesnik

    I am trying to properly implement an interrupt_callback using ASIO timer for avformat_open_input, av_read_frame and possibly for other functions. I can't get it to work when receiving a udp video stream.

    


    I've written a class that waits for periods of time using ASIO timer. Its constructor takes an io_context from the thread of avformat_open_input execution and an overall timeout period to wait for. By default it waits for 20 ms each time, but can be set to wait longer periods.

    


    class InterruptCallback&#xA;{&#xA;public:&#xA;&#xA;    constexpr static std::chrono::milliseconds basic_period()&#xA;    {&#xA;        return std::chrono::milliseconds(20);&#xA;    }&#xA;&#xA;    explicit InterruptCallback(asio::io_context &amp;asioContext,&#xA;                               std::chrono::milliseconds timeout,&#xA;                               std::chrono::milliseconds period =&#xA;                               basic_period())&#xA;            : waitingPeriod_(period),&#xA;              attempts_(timeout / waitingPeriod_),&#xA;              timer_(asioContext)&#xA;    {&#xA;        attempts_ = attempts_ ? attempts_ : 1;&#xA;    }&#xA;&#xA;    int wait()&#xA;    {&#xA;        timer_.expires_after(waitingPeriod_);&#xA;        timer_.wait();&#xA;        return int(!--attempts_);&#xA;    }&#xA;&#xA;    static int wait(void *opaqueCallback)&#xA;    {&#xA;        auto callback = reinterpret_cast<interruptcallback>(opaqueCallback);&#xA;        return callback->wait();&#xA;    }&#xA;&#xA;private:&#xA;    std::chrono::milliseconds waitingPeriod_;&#xA;    size_t attempts_;&#xA;&#xA;    asio::steady_timer timer_;&#xA;};&#xA;</interruptcallback>

    &#xA;

    This approach works when no udp stream is being received. Also it returns relatively fast when a udp is being received.

    &#xA;

    However, when I set a AVFormatContext::interrupt_callback I get a lot of errors on decoding.&#xA;avformat_find_stream_info can return fast enough, but AVCodecContext will be invalid.&#xA;Or it can take a very long time to execute.

    &#xA;

        asio::io_context mainThreadContext{};&#xA;&#xA;    AVFormatContext *pFormatContext = avformat_alloc_context();&#xA;&#xA;    {&#xA;        InterruptCallback interruptCallback{mainThreadContext,&#xA;                                            std::chrono::milliseconds(2000)&#xA;        };&#xA;&#xA;        pFormatContext->interrupt_callback.callback = &amp;InterruptCallback::wait;&#xA;        pFormatContext->interrupt_callback.opaque = &amp;interruptCallback;&#xA;&#xA;        const auto resOpen = avformat_open_input(&amp;pFormatContext,&#xA;                                                 containerAddress.c_str(),&#xA;                                                 nullptr,&#xA;                                                 nullptr);&#xA;        if (resOpen &lt; 0)&#xA;        {&#xA;            std::cerr &lt;&lt; "Failed to open stream from: " &lt;&lt; containerAddress &lt;&lt; std::endl;&#xA;            return -1;&#xA;        }&#xA;    }&#xA;    auto avFormatExit = sg::make_scope_exit(&#xA;            [&amp;pFormatContext]&#xA;            {&#xA;                avformat_close_input(&amp;pFormatContext);&#xA;            });&#xA;&#xA;    pFormatContext->flags = AVFMT_FLAG_NOBUFFER | AVFMT_FLAG_FLUSH_PACKETS;&#xA;&#xA;    int error = avformat_find_stream_info(pFormatContext, nullptr);&#xA;

    &#xA;

    It can happen on the line where I query the stream info, but is also frequent for decoding loop.&#xA;These are some of the possible errors :

    &#xA;

    [h264 @ 00000000027f4000] non-existing PPS 0 referenced&#xA;[h264 @ 00000000027f4000] non-existing PPS 0 referenced&#xA;[h264 @ 00000000027f4000] decode_slice_header error&#xA;[h264 @ 00000000027f4000] no frame!&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] concealing 7217 DC, 7217 AC, 7217 MV errors in I frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] concealing 7588 DC, 7588 AC, 7588 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] error while decoding MB 83 5, bytestream -6&#xA;[h264 @ 00000000027f4000] concealing 7526 DC, 7526 AC, 7526 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] concealing 7072 DC, 7072 AC, 7072 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] concealing 7651 DC, 7651 AC, 7651 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] concealing 5806 DC, 5806 AC, 5806 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000027f4000] left block unavailable for requested intra mode&#xA;[h264 @ 00000000027f4000] error while decoding MB 0 5, bytestream 8107&#xA;[h264 @ 00000000027f4000] concealing 7609 DC, 7609 AC, 7609 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6669 DC, 6669 AC, 6669 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7254 DC, 7254 AC, 7254 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7048 DC, 7048 AC, 7048 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7061 DC, 7061 AC, 7061 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7220 DC, 7220 AC, 7220 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 5722 DC, 5722 AC, 5722 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7230 DC, 7230 AC, 7230 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7085 DC, 7085 AC, 7085 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7745 DC, 7745 AC, 7745 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6907 DC, 6907 AC, 6907 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7301 DC, 7301 AC, 7301 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 5664 DC, 5664 AC, 5664 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] error while decoding MB 105 8, bytestream -8&#xA;[h264 @ 00000000051a0040] concealing 7144 DC, 7144 AC, 7144 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7487 DC, 7487 AC, 7487 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6912 DC, 6912 AC, 6912 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] error while decoding MB 39 8, bytestream -6&#xA;[h264 @ 00000000051a0040] concealing 7210 DC, 7210 AC, 7210 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 5262 DC, 5262 AC, 5262 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] error while decoding MB 54 8, bytestream -5&#xA;[h264 @ 00000000051a0040] concealing 7195 DC, 7195 AC, 7195 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7298 DC, 7298 AC, 7298 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6819 DC, 6819 AC, 6819 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 5692 DC, 5692 AC, 5692 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6684 DC, 6684 AC, 6684 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7600 DC, 7600 AC, 7600 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6123 DC, 6123 AC, 6123 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7689 DC, 7689 AC, 7689 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6846 DC, 6846 AC, 6846 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] left block unavailable for requested intra4x4 mode -1&#xA;[h264 @ 00000000051a0040] error while decoding MB 0 10, bytestream 1892&#xA;[h264 @ 00000000051a0040] concealing 7009 DC, 7009 AC, 7009 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 5288 DC, 5288 AC, 5288 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7932 DC, 7932 AC, 7932 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 7039 DC, 7039 AC, 7039 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] error while decoding MB 105 11, bytestream -5&#xA;[h264 @ 00000000051a0040] concealing 6784 DC, 6784 AC, 6784 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6918 DC, 6918 AC, 6918 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] concealing 6483 DC, 6483 AC, 6483 MV errors in P frame&#xA;[h264 @ 00000000051a0040] error while decoding MB 118 1, bytestream -10&#xA;[h264 @ 00000000051a0040] concealing 7971 DC, 7971 AC, 7971 MV errors in P frame&#xA;[mpegts @ 00000000027dea40] PES packet size mismatch&#xA;[h264 @ 00000000051a0040] QP 4294967266 out of range&#xA;[h264 @ 00000000051a0040] decode_slice_header error&#xA;[h264 @ 00000000051a0040] no frame!&#xA;Error sending packet for decoding&#xA;&#xA;Process finished with exit code 1&#xA;

    &#xA;

    When I don't set an interrupt_callback, no errors occur, stream info is found very quickly.

    &#xA;

    So, the questions are :

    &#xA;

      &#xA;
    1. What am I doing wrong when implementing the interrupt callback ?
    2. &#xA;

    3. Why don't I get an error when I receive an invalid codec context from avformat_find_stream_info ?
    4. &#xA;

    &#xA;

  • Find out what people are searching when coming from search engines

    7 novembre 2017, par InnoCraft — Plugins

    At InnoCraft, we know that SEO is an important topic for most of you. If you have not heard of this term before, SEO stands for Search Engine Optimization. It consists in having your content website visible within the search result pages without paying for ads. SEO is also often referred as “natural” or “organic” traffic.

    In SEO, one of the most valuable data to analyze is the keyword used by the visitor to come to your website. Since 2011, major search engines decided to not disclose this data anymore, that’s the reason why you are seeing the “Keyword not defined” data within some of your Piwik reports, also called “not provided” :

    keyword not defined in Piwik

    Keyword not defined in Piwik

    The solution

    As your keyword data is collected by search engines, each of them provides the searched keywords within different services such as :

    • Google Search Console
    • Bing/Yahoo Webmaster tools
    • Yandex Webmaster

    Those services allow website owners to see how many times their website appeared within the SERP (Search Engine Results Page), how bots are crawling your pages, which search terms they used, and more. The drawback is, that they make take this data available only for a short period, you need to log in to all these services to get the insights you need and you cannot get aggregated overall keyword reports (over all search engines combined).

    The solution that gives you all this data in Piwik

    Would you like to know what the not defined search keywords in Piwik really are ? Would you like to combine keywords data from major search engines in one place ? Would you like to know how important your website is according to Google and Microsoft Bing and Yahoo ?

    At InnoCraft, the company behind Piwik, we created a plugin called “Search Engine Performance Keywords”. With this plugin, you will :

    1. be able to keep the search terms forever
    2. save time by crossing data from Google and Bing search within Piwik
    3. get an overview of how Google and Bing are crawling your site
    4. monitor search rankings and click-through rates for each keyword

    1 – Data ownership & data retention

    Once more, it is going back to Piwik roots. As Piwik is a Free software, you own the data you collect. Once the import is successful, you will be able to keep the keywords data as long as you wish. In the case of services such as Google Search Console, they will delete the data after 90 days !! Without our plugin you will not be able to analyze precisely how your SEO is doing month by month, year by year.

    2 – Save time by using a single interface

    Google and Bing have no interest in gathering data coming from various search engines… we do. As a result, with our plugin you can visualize the data coming from those two sources within a single report in order to analyze your SEO in a better way.
    You will not have to use spreadsheets anymore and no chance to miss some important keywords which you would maybe miss when you don’t aggregate them in a single report.

    3 – Crawl overview check

    Both Google and Bing have a crawl “budget”. This budget needs to be optimized in order for search engine bots to consider the most relevant pages. By gathering all the data within Piwik you will have a clear view of how well your website is appreciated by search engines :

    4 – Monitor search rankings

    The Search Engine Keywords Performance feature allows you to monitor search rankings for a given keyword and see his evolution :

    it also gives you the possibility to compare the performances of several keywords in order to see how your website is performing as a whole :

    How to get started ?

    The “Search Engine Keywords Performance” plugin has been developed by the InnoCraft team as a premium feature.

    If you are not sure, note that InnoCraft is offering an unconditional and hassle-free 30-day money back guarantee period.

    Once you have installed the plugin, follow the guide in order to have it up and running.
    The installation process is not difficult in itself but takes some time as it requires to access to Google and Bing APIs.

    If you enjoyed this article, you may appreciate the following one about how to integrate ad services to Piwik : Make better online marketing decisions with the AOM plugin.

  • avfilter/formats : do not allow unknown layouts in ff_parse_channel_layout if nret...

    26 décembre 2016, par Marton Balint
    avfilter/formats : do not allow unknown layouts in ff_parse_channel_layout if nret is not set
    

    Current code returned the number of channels as channel layout in that case,
    and if nret is not set then unknown layouts are typically not supported.

    Also use the common parsing code. Use a temporary workaround to parse an
    unknown channel layout such as ’13c’, after a 1 year grace period only ’13C’
    will work.

    Signed-off-by : Marton Balint <cus@passwd.hu>

    • [DH] libavfilter/formats.c
    • [DH] libavfilter/tests/formats.c
    • [DH] tests/ref/fate/filter-formats