Recherche avancée

Médias (3)

Mot : - Tags -/pdf

Autres articles (52)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (6412)

  • Lean Analytics in a Privacy-First Environment – Bootcamp with Timo Dechau

    In a recent bootcamp, Timo Dechau walked attendees through his approach to data and measurement in privacy-focused analytics environments. He demonstrates how to shift from a chaotic, ‘track-it-all’ mentality to a focused method that prioritizes quality over quantity. This post will summarize some of his key privacy-first analytics ideas, but be sure to check out the on-demand video for more detail.

    Watch the bootcamp on demand

    <script type="text/javascript">var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,initializeOnLoaded:function(o){gform.domLoaded&&gform.scriptsLoaded?o():!gform.domLoaded&&gform.scriptsLoaded?window.addEventListener("DOMContentLoaded",o):document.addEventListener("gform_main_scripts_loaded",o)},hooks:{action:{},filter:{}},addAction:function(o,n,r,t){gform.addHook("action",o,n,r,t)},addFilter:function(o,n,r,t){gform.addHook("filter",o,n,r,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,n){gform.removeHook("action",o,n)},removeFilter:function(o,n,r){gform.removeHook("filter",o,n,r)},addHook:function(o,n,r,t,i){null==gform.hooks[o][n]&&(gform.hooks[o][n]=[]);var e=gform.hooks[o][n];null==i&&(i=n+"_"+e.length),gform.hooks[o][n].push({tag:i,callable:r,priority:t=null==t?10:t})},doHook:function(n,o,r){var t;if(r=Array.prototype.slice.call(r,1),null!=gform.hooks[n][o]&&((o=gform.hooks[n][o]).sort(function(o,n){return o.priority-n.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==n?t.apply(null,r):r[0]=t.apply(null,r)})),"filter"==n)return r[0]},removeHook:function(o,n,t,i){var r;null!=gform.hooks[o][n]&&(r=(r=gform.hooks[o][n]).filter(function(o,n,r){return!!(null!=i&&i!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][n]=r)}});</script>
    &lt;script&gt;<br />
    gform.initializeOnLoaded( function() {gformInitSpinner( 72, 'https://matomo.org/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery('#gform_ajax_frame_72').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') &gt;= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_72');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_72').length &gt; 0;var is_redirect = contents.indexOf('gformRedirect(){') &gt;= 0;var is_form = form_content.length &gt; 0 &amp;&amp; ! is_redirect &amp;&amp; ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_72').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_72').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_72').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */  }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_72').val();gformInitSpinner( 72, 'https://matomo.org/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [72, current_page]);window['gf_submitting_72'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_72').replaceWith(confirmation_content);jQuery(document).trigger('gform_confirmation_loaded', [72]);window['gf_submitting_72'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_72').text());}, 50);}else{jQuery('#gform_72').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger(&quot;gform_pre_post_render&quot;, [{ formId: &quot;72&quot;, currentPage: &quot;current_page&quot;, abort: function() { this.preventDefault(); } }]);                if (event.defaultPrevented) {                return;         }        const gformWrapperDiv = document.getElementById( &quot;gform_wrapper_72&quot; );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( &quot;span&quot; );            visibilitySpan.id = &quot;gform_visibility_test_72&quot;;            gformWrapperDiv.insertAdjacentElement( &quot;afterend&quot;, visibilitySpan );        }        const visibilityTestDiv = document.getElementById( &quot;gform_visibility_test_72&quot; );        let postRenderFired = false;                function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            jQuery( document ).trigger( 'gform_post_render', [72, current_page] );            gform.utils.trigger( { event: 'gform/postRender', native: false, data: { formId: 72, currentPage: current_page } } );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate &amp;&amp; !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv &amp;&amp; visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) =&gt; {                mutations.forEach( ( mutation ) =&gt; {                    if ( mutation.type === 'attributes' &amp;&amp; visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );} );<br />
    &lt;/script&gt;
    the consequences of more data are missing and incomplete data that messes up attribution and measurement.

    Unrestrained data collection leads to data bloat

    Marketing and the business world are experiencing a data problem. Analysts and business intelligence teams grapple with large amounts of data that aren’t always useful and are often incomplete. The idea that “more data is better” became a guiding principle in the early 2000s, encouraging companies to gather everything possible using all available data collection methods. This unrestrained pursuit often led to an unexpected problem : data bloat. Too much data, too little clarity. Digital marketers, analysts, and business leaders now try to navigate vast amounts of information that create more confusion than insight, especially when the data is incomplete due to privacy regulations.

    Cutting through the noise, focusing on what matters

    The “more data is better” mindset emerged when digital marketers were beginning to understand data’s potential. It seemed logical : more data should mean more opportunities to optimise, personalise, and drive results. But in practice, gathering every possible piece of data often leads to a cluttered, confusing pile of metrics that can mislead more than guide.

    This approach carries hidden costs. Excessive data collection burns resources, increases privacy concerns, and leaves teams unfocused. It’s easy to get lost trying to make sense of endless dashboards, metrics, and reports. More data doesn’t necessarily lead to better decisions ; it often just leads to more noise, hindering effective data management.

    Rethinking data management : From data overload to data mindfulness

    Data management has often prioritised comprehensive data gathering without considering the specific value of each data point. This approach has created more information, but not necessarily better insights.

    Data mindfulness is about taking a deliberate, focused approach to data collection and analysis. Instead of trying to collect everything, it emphasises gathering only what truly adds value. It’s about ensuring the data you collect serves a purpose and directly contributes to better insights and data-driven decision-making.

    Think of it like applying a “lean” methodology to data—trimming away the unnecessary and keeping only what is essential. Or consider embracing data minimalism to declutter your data warehouse, keeping only what truly sparks insight.

    Mindful data is ethical data

    Adopting a mindful approach to data can pay off in several ways :

    • Reduces overwhelm : When you reduce the clutter, you’re left with fewer, clearer metrics that lead to stronger decisions and actionable data insights.

    • Mitigates compliance risks : By collecting less, companies align better with privacy regulations and build trust with their customers. Privacy-first analytics and privacy-compliant analytics practices mean there’s no need for invasive tracking if it doesn’t add value—and customers will appreciate that.

    • Enhances data ethics : Focusing on the quality rather than the quantity of data collected ensures ethical data collection and management. Companies use data responsibly, respect user privacy, and minimise unnecessary data handling, strengthening customer relationships and brand integrity.

    • Improves data efficiency : Focused analytics means better use of resources. You’re spending less time managing meaningless metrics and more time working on meaningful insights. Many companies have found success by switching to a leaner, quality-first data approach, reporting sharper, more impactful results.

    Shifting towards simplicity and lean analytics

    If data mindfulness sounds appealing, here’s how you can get started :

    1. Ask the right questions. Before collecting any data, ask yourself : Why are we collecting this ? How will it drive value ? If you can’t answer these questions clearly, that data probably isn’t worth collecting. This is a key step in smart data management.

    2. Simplify metrics. Focus on the KPIs that truly matter for your business. Choose a handful of key metrics that reflect your goals rather than a sprawling list of nice-to-haves. Embracing data simplicity helps in targeting data collection effectively.

    3. Audit your current data. Review your existing data collection processes. Which metrics are you actively using to make decisions ? Eliminate any redundant or low-value metrics that create noise. Use ethical data management practices to ensure data efficiency and compliance. Understanding what is data management in this context is crucial.

    4. Implement lean analytics practices. Shift towards lean analytics by cutting down on unnecessary tracking. This can involve reducing reliance on multiple tracking scripts, simplifying your reporting, and setting up a streamlined dashboard focused on key outcomes. Embrace data reduction strategies to eliminate waste and boost effectiveness.

    Who should watch this bootcamp

    This bootcamp is perfect for data analysts, product managers, digital marketers and business leaders who are seeking a more streamlined approach to data measurement. If you’re interested in moving away from a chaotic “track-it-all” mentality and towards a focused, lean, and privacy-first analytics strategy, this workshop is for you.

    What you’ll discover

    • Practical steps : Learn actionable strategies to reduce data bloat and implement lean, privacy-first analytics in your organisation.

    • Real-life examples : Explore case studies of companies that have successfully adopted focused and privacy-first analytics.

    • Deep insights : Gain a deeper understanding of how to prioritise quality over quantity without sacrificing valuable insights.

    Watch the bootcamp on-demand

    For a comprehensive dive into these topics, watch the full workshop video or download the detailed transcript. Equip yourself with the knowledge and tools to transform your data management approach today.

    &lt;script&gt;<br />
    gform.initializeOnLoaded( function() {gformInitSpinner( 72, 'https://matomo.org/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery('#gform_ajax_frame_72').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') &gt;= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_72');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_72').length &gt; 0;var is_redirect = contents.indexOf('gformRedirect(){') &gt;= 0;var is_form = form_content.length &gt; 0 &amp;&amp; ! is_redirect &amp;&amp; ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_72').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_72').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_72').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */  }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_72').val();gformInitSpinner( 72, 'https://matomo.org/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [72, current_page]);window['gf_submitting_72'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_72').replaceWith(confirmation_content);jQuery(document).trigger('gform_confirmation_loaded', [72]);window['gf_submitting_72'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_72').text());}, 50);}else{jQuery('#gform_72').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger(&quot;gform_pre_post_render&quot;, [{ formId: &quot;72&quot;, currentPage: &quot;current_page&quot;, abort: function() { this.preventDefault(); } }]);                if (event.defaultPrevented) {                return;         }        const gformWrapperDiv = document.getElementById( &quot;gform_wrapper_72&quot; );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( &quot;span&quot; );            visibilitySpan.id = &quot;gform_visibility_test_72&quot;;            gformWrapperDiv.insertAdjacentElement( &quot;afterend&quot;, visibilitySpan );        }        const visibilityTestDiv = document.getElementById( &quot;gform_visibility_test_72&quot; );        let postRenderFired = false;                function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            jQuery( document ).trigger( 'gform_post_render', [72, current_page] );            gform.utils.trigger( { event: 'gform/postRender', native: false, data: { formId: 72, currentPage: current_page } } );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate &amp;&amp; !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv &amp;&amp; visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) =&gt; {                mutations.forEach( ( mutation ) =&gt; {                    if ( mutation.type === 'attributes' &amp;&amp; visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );} );<br />
    &lt;/script&gt;
  • Unwrapping Matomo 5.2.0 – Bringing you enhanced security and performance

    25 décembre 2024, par Daniel Crough — Latest Releases

     As we tie a bow on 2024, we’re delighted to share our final gift of the year. Matomo 5.2.0 comes wrapped with new security features, privacy controls, and performance improvements to enhance your analytics experience.

     Enhanced security and privacy controls

    Image that shows the This Wasn’t Me link in password reset email.

    We’ve strengthened Matomo’s security framework with several key updates :

    • A new installer timestamp mechanism for on-premise installations creates a secure 72-hour installation window, preventing unauthorised access during setup
    • Enhanced account security features including a “This Wasn’t Me” link in password reset emails and location-based login alerts
    • The new Global List of Query URL parameters feature lets you refine tracking by excluding sensitive or unnecessary parameters from collection

    Tag manager improvements for better efficiency

    The Matomo Tag Manager now includes several features to streamline your workflow :

    • New Consent Management Platform (CMP) tags for CookieYes, OneTrust, and Axeptio, simplifying consent tracking implementatio.
    • A new copy feature for containers, tags, and triggers that reduces setup time and ensures consistency across multiple properties
    • Improved management tools for maintaining standardised tracking across websites

    Performance and reliability updates

    We’ve made technical improvements to enhance Matomo’s performance :

    Important to note : This release does not require any major database upgrade, making it easier to implement these improvements.

    Looking forward to 2025

    As we prepare to enter a new year, these updates reflect our ongoing commitment to providing privacy-focused analytics. We’re grateful to all our community contributors who have helped make this release possible. Special thanks to the Matomo community for their contributions to this release.

    Ready to explore these new features ? Update to Matomo 5.2.0 today and start the new year with enhanced security, efficiency, and control over your analytics data.

    From all of us at Matomo, thank you for being part of our journey. Here’s to another year of protecting privacy and empowering insights together !


    For a detailed overview of all changes and improvements, see our complete release notes or join the discussion in our community forums. If you’d like to contribute to making Matomo even better, learn more about getting involved with our open-source project.

  • VideoJS for HLS streaming not working on iOS

    13 février 2024, par Aames

    I have a website where I stream audio using HLS (m3u8 playlist + ts files).&#xA;I use VideoJS 8.3.0 to handle the stream in the frontend side.&#xA;The streaming works in all devices (PC, Android, Mac) except in iOS where it works intermittently and often it blocks.

    &#xA;

    Here is my videojs initialization :

    &#xA;

    player = videojs(&#x27;stream-id&#x27;, {&#xA;            controls: false, autoplay: true, preload: &#x27;auto&#x27;,&#xA;            html5: {&#xA;               vhs: {overrideNative: false},&#xA;               nativeAudioTracks: true&#xA;           }&#xA;        });&#xA;&#xA;...&#xA;&#xA;player.src({ type: &#x27;application/x-mpegURL&#x27;, src: &#x27;https://.../master.m3u8&#x27; });&#xA;&#xA;

    &#xA;

    And these are the headers of the m3u8 file :

    &#xA;

    #EXTM3U&#xA;#EXT-X-VERSION:3&#xA;#EXT-X-TARGETDURATION:10&#xA;#EXT-X-PROGRAM-DATE-TIME:2024-02-13T09:00:00Z&#xA;#EXT-X-MEDIA-SEQUENCE:0&#xA;#EXT-X-DISCONTINUITY&#xA;#EXTINF:10.007800,&#xA;master0.ts&#xA;#EXTINF:7.214989,&#xA;master1.ts&#xA;....&#xA;

    &#xA;

    I use ffmpeg to create the playlist from mp3 files :

    &#xA;

    ffmpeg -i inputFileName -c:a aac -b:a 128k -ac 2 -f hls -hls_time 10 -preset ultrafast -map 0:a -flags -global_header -hls_list_size 0 -hls_flags append_list outputFileName&#xA;&#xA;

    &#xA;

    Am I doing something wrong ? Any help would be appreciated&#xA;Thanks

    &#xA;

    I tried this solution : Videojs HLS m3u8 files are not playing in iOS devices and safari browser but it does not work for me

    &#xA;