Recherche avancée

Médias (2)

Mot : - Tags -/media

Autres articles (4)

  • Menus personnalisés

    14 novembre 2010, par

    MediaSPIP utilise le plugin Menus pour gérer plusieurs menus configurables pour la navigation.
    Cela permet de laisser aux administrateurs de canaux la possibilité de configurer finement ces menus.
    Menus créés à l’initialisation du site
    Par défaut trois menus sont créés automatiquement à l’initialisation du site : Le menu principal ; Identifiant : barrenav ; Ce menu s’insère en général en haut de la page après le bloc d’entête, son identifiant le rend compatible avec les squelettes basés sur Zpip ; (...)

  • Mise à disposition des fichiers

    14 avril 2011, par

    Par défaut, lors de son initialisation, MediaSPIP ne permet pas aux visiteurs de télécharger les fichiers qu’ils soient originaux ou le résultat de leur transformation ou encodage. Il permet uniquement de les visualiser.
    Cependant, il est possible et facile d’autoriser les visiteurs à avoir accès à ces documents et ce sous différentes formes.
    Tout cela se passe dans la page de configuration du squelette. Il vous faut aller dans l’espace d’administration du canal, et choisir dans la navigation (...)

  • MediaSPIP Player : problèmes potentiels

    22 février 2011, par

    Le lecteur ne fonctionne pas sur Internet Explorer
    Sur Internet Explorer (8 et 7 au moins), le plugin utilise le lecteur Flash flowplayer pour lire vidéos et son. Si le lecteur ne semble pas fonctionner, cela peut venir de la configuration du mod_deflate d’Apache.
    Si dans la configuration de ce module Apache vous avez une ligne qui ressemble à la suivante, essayez de la supprimer ou de la commenter pour voir si le lecteur fonctionne correctement : /** * GeSHi (C) 2004 - 2007 Nigel McNie, (...)

Sur d’autres sites (2781)

  • swscale/x86/input.asm : add x86-optimized planer rgb2yuv functions

    24 novembre 2021, par Mark Reid
    swscale/x86/input.asm : add x86-optimized planer rgb2yuv functions
    

    sse2 only operates on 2 lanes per loop for to_y and to_uv functions, due
    to the lack of pmulld instruction. Emulating pmulld with 2 pmuludq and shuffles
    proved too costly and made to_uv functions slower then the c implementation.

    For to_y on sse2 only float functions are generated,
    I was are not able outperform the c implementation on the integer pixel formats.

    For to_a on see4 only the float functions are generated.
    sse2 and sse4 generated nearly identical performing code on integer pixel formats,
    so only sse2/avx2 versions are generated.

    planar_gbrp_to_y_512_c : 1197.5
    planar_gbrp_to_y_512_sse4 : 444.5
    planar_gbrp_to_y_512_avx2 : 287.5
    planar_gbrap_to_y_512_c : 1204.5
    planar_gbrap_to_y_512_sse4 : 447.5
    planar_gbrap_to_y_512_avx2 : 289.5
    planar_gbrp9be_to_y_512_c : 1380.0
    planar_gbrp9be_to_y_512_sse4 : 543.5
    planar_gbrp9be_to_y_512_avx2 : 340.0
    planar_gbrp9le_to_y_512_c : 1200.5
    planar_gbrp9le_to_y_512_sse4 : 442.0
    planar_gbrp9le_to_y_512_avx2 : 282.0
    planar_gbrp10be_to_y_512_c : 1378.5
    planar_gbrp10be_to_y_512_sse4 : 544.0
    planar_gbrp10be_to_y_512_avx2 : 337.5
    planar_gbrp10le_to_y_512_c : 1200.0
    planar_gbrp10le_to_y_512_sse4 : 448.0
    planar_gbrp10le_to_y_512_avx2 : 285.5
    planar_gbrap10be_to_y_512_c : 1380.0
    planar_gbrap10be_to_y_512_sse4 : 542.0
    planar_gbrap10be_to_y_512_avx2 : 340.5
    planar_gbrap10le_to_y_512_c : 1199.0
    planar_gbrap10le_to_y_512_sse4 : 446.0
    planar_gbrap10le_to_y_512_avx2 : 289.5
    planar_gbrp12be_to_y_512_c : 10563.0
    planar_gbrp12be_to_y_512_sse4 : 542.5
    planar_gbrp12be_to_y_512_avx2 : 339.0
    planar_gbrp12le_to_y_512_c : 1201.0
    planar_gbrp12le_to_y_512_sse4 : 440.5
    planar_gbrp12le_to_y_512_avx2 : 286.0
    planar_gbrap12be_to_y_512_c : 1701.5
    planar_gbrap12be_to_y_512_sse4 : 917.0
    planar_gbrap12be_to_y_512_avx2 : 338.5
    planar_gbrap12le_to_y_512_c : 1201.0
    planar_gbrap12le_to_y_512_sse4 : 444.5
    planar_gbrap12le_to_y_512_avx2 : 288.0
    planar_gbrp14be_to_y_512_c : 1370.5
    planar_gbrp14be_to_y_512_sse4 : 545.0
    planar_gbrp14be_to_y_512_avx2 : 338.5
    planar_gbrp14le_to_y_512_c : 1199.0
    planar_gbrp14le_to_y_512_sse4 : 444.0
    planar_gbrp14le_to_y_512_avx2 : 279.5
    planar_gbrp16be_to_y_512_c : 1364.0
    planar_gbrp16be_to_y_512_sse4 : 544.5
    planar_gbrp16be_to_y_512_avx2 : 339.5
    planar_gbrp16le_to_y_512_c : 1201.0
    planar_gbrp16le_to_y_512_sse4 : 445.5
    planar_gbrp16le_to_y_512_avx2 : 280.5
    planar_gbrap16be_to_y_512_c : 1377.0
    planar_gbrap16be_to_y_512_sse4 : 545.0
    planar_gbrap16be_to_y_512_avx2 : 338.5
    planar_gbrap16le_to_y_512_c : 1201.0
    planar_gbrap16le_to_y_512_sse4 : 442.0
    planar_gbrap16le_to_y_512_avx2 : 279.0
    planar_gbrpf32be_to_y_512_c : 4113.0
    planar_gbrpf32be_to_y_512_sse2 : 2438.0
    planar_gbrpf32be_to_y_512_sse4 : 1068.0
    planar_gbrpf32be_to_y_512_avx2 : 904.5
    planar_gbrpf32le_to_y_512_c : 3818.5
    planar_gbrpf32le_to_y_512_sse2 : 2024.5
    planar_gbrpf32le_to_y_512_sse4 : 1241.5
    planar_gbrpf32le_to_y_512_avx2 : 657.0
    planar_gbrapf32be_to_y_512_c : 3707.0
    planar_gbrapf32be_to_y_512_sse2 : 2444.0
    planar_gbrapf32be_to_y_512_sse4 : 1077.0
    planar_gbrapf32be_to_y_512_avx2 : 909.0
    planar_gbrapf32le_to_y_512_c : 3822.0
    planar_gbrapf32le_to_y_512_sse2 : 2024.5
    planar_gbrapf32le_to_y_512_sse4 : 1176.0
    planar_gbrapf32le_to_y_512_avx2 : 658.5

    planar_gbrp_to_uv_512_c : 2325.8
    planar_gbrp_to_uv_512_sse2 : 1726.8
    planar_gbrp_to_uv_512_sse4 : 771.8
    planar_gbrp_to_uv_512_avx2 : 506.8
    planar_gbrap_to_uv_512_c : 2281.8
    planar_gbrap_to_uv_512_sse2 : 1726.3
    planar_gbrap_to_uv_512_sse4 : 768.3
    planar_gbrap_to_uv_512_avx2 : 496.3
    planar_gbrp9be_to_uv_512_c : 2336.8
    planar_gbrp9be_to_uv_512_sse2 : 1924.8
    planar_gbrp9be_to_uv_512_sse4 : 852.3
    planar_gbrp9be_to_uv_512_avx2 : 552.8
    planar_gbrp9le_to_uv_512_c : 2270.3
    planar_gbrp9le_to_uv_512_sse2 : 1512.3
    planar_gbrp9le_to_uv_512_sse4 : 764.3
    planar_gbrp9le_to_uv_512_avx2 : 491.3
    planar_gbrp10be_to_uv_512_c : 2281.8
    planar_gbrp10be_to_uv_512_sse2 : 1917.8
    planar_gbrp10be_to_uv_512_sse4 : 855.3
    planar_gbrp10be_to_uv_512_avx2 : 541.3
    planar_gbrp10le_to_uv_512_c : 2269.8
    planar_gbrp10le_to_uv_512_sse2 : 1515.3
    planar_gbrp10le_to_uv_512_sse4 : 759.8
    planar_gbrp10le_to_uv_512_avx2 : 487.8
    planar_gbrap10be_to_uv_512_c : 2382.3
    planar_gbrap10be_to_uv_512_sse2 : 1924.8
    planar_gbrap10be_to_uv_512_sse4 : 855.3
    planar_gbrap10be_to_uv_512_avx2 : 540.8
    planar_gbrap10le_to_uv_512_c : 2382.3
    planar_gbrap10le_to_uv_512_sse2 : 1512.3
    planar_gbrap10le_to_uv_512_sse4 : 759.3
    planar_gbrap10le_to_uv_512_avx2 : 484.8
    planar_gbrp12be_to_uv_512_c : 2283.8
    planar_gbrp12be_to_uv_512_sse2 : 1936.8
    planar_gbrp12be_to_uv_512_sse4 : 858.3
    planar_gbrp12be_to_uv_512_avx2 : 541.3
    planar_gbrp12le_to_uv_512_c : 2278.8
    planar_gbrp12le_to_uv_512_sse2 : 1507.3
    planar_gbrp12le_to_uv_512_sse4 : 760.3
    planar_gbrp12le_to_uv_512_avx2 : 485.8
    planar_gbrap12be_to_uv_512_c : 2385.3
    planar_gbrap12be_to_uv_512_sse2 : 1927.8
    planar_gbrap12be_to_uv_512_sse4 : 855.3
    planar_gbrap12be_to_uv_512_avx2 : 539.8
    planar_gbrap12le_to_uv_512_c : 2377.3
    planar_gbrap12le_to_uv_512_sse2 : 1516.3
    planar_gbrap12le_to_uv_512_sse4 : 759.3
    planar_gbrap12le_to_uv_512_avx2 : 484.8
    planar_gbrp14be_to_uv_512_c : 2283.8
    planar_gbrp14be_to_uv_512_sse2 : 1935.3
    planar_gbrp14be_to_uv_512_sse4 : 852.3
    planar_gbrp14be_to_uv_512_avx2 : 540.3
    planar_gbrp14le_to_uv_512_c : 2276.8
    planar_gbrp14le_to_uv_512_sse2 : 1514.8
    planar_gbrp14le_to_uv_512_sse4 : 762.3
    planar_gbrp14le_to_uv_512_avx2 : 484.8
    planar_gbrp16be_to_uv_512_c : 2383.3
    planar_gbrp16be_to_uv_512_sse2 : 1881.8
    planar_gbrp16be_to_uv_512_sse4 : 852.3
    planar_gbrp16be_to_uv_512_avx2 : 541.8
    planar_gbrp16le_to_uv_512_c : 2378.3
    planar_gbrp16le_to_uv_512_sse2 : 1476.8
    planar_gbrp16le_to_uv_512_sse4 : 765.3
    planar_gbrp16le_to_uv_512_avx2 : 485.8
    planar_gbrap16be_to_uv_512_c : 2382.3
    planar_gbrap16be_to_uv_512_sse2 : 1886.3
    planar_gbrap16be_to_uv_512_sse4 : 853.8
    planar_gbrap16be_to_uv_512_avx2 : 550.8
    planar_gbrap16le_to_uv_512_c : 2381.8
    planar_gbrap16le_to_uv_512_sse2 : 1488.3
    planar_gbrap16le_to_uv_512_sse4 : 765.3
    planar_gbrap16le_to_uv_512_avx2 : 491.8
    planar_gbrpf32be_to_uv_512_c : 4863.0
    planar_gbrpf32be_to_uv_512_sse2 : 3347.5
    planar_gbrpf32be_to_uv_512_sse4 : 1800.0
    planar_gbrpf32be_to_uv_512_avx2 : 1199.0
    planar_gbrpf32le_to_uv_512_c : 4725.0
    planar_gbrpf32le_to_uv_512_sse2 : 2753.0
    planar_gbrpf32le_to_uv_512_sse4 : 1474.5
    planar_gbrpf32le_to_uv_512_avx2 : 927.5
    planar_gbrapf32be_to_uv_512_c : 4859.0
    planar_gbrapf32be_to_uv_512_sse2 : 3269.0
    planar_gbrapf32be_to_uv_512_sse4 : 1802.0
    planar_gbrapf32be_to_uv_512_avx2 : 1201.5
    planar_gbrapf32le_to_uv_512_c : 6338.0
    planar_gbrapf32le_to_uv_512_sse2 : 2756.5
    planar_gbrapf32le_to_uv_512_sse4 : 1476.0
    planar_gbrapf32le_to_uv_512_avx2 : 908.5

    planar_gbrap_to_a_512_c : 383.3
    planar_gbrap_to_a_512_sse2 : 66.8
    planar_gbrap_to_a_512_avx2 : 43.8
    planar_gbrap10be_to_a_512_c : 601.8
    planar_gbrap10be_to_a_512_sse2 : 86.3
    planar_gbrap10be_to_a_512_avx2 : 34.8
    planar_gbrap10le_to_a_512_c : 602.3
    planar_gbrap10le_to_a_512_sse2 : 48.8
    planar_gbrap10le_to_a_512_avx2 : 31.3
    planar_gbrap12be_to_a_512_c : 601.8
    planar_gbrap12be_to_a_512_sse2 : 111.8
    planar_gbrap12be_to_a_512_avx2 : 41.3
    planar_gbrap12le_to_a_512_c : 385.8
    planar_gbrap12le_to_a_512_sse2 : 75.3
    planar_gbrap12le_to_a_512_avx2 : 39.8
    planar_gbrap16be_to_a_512_c : 386.8
    planar_gbrap16be_to_a_512_sse2 : 79.8
    planar_gbrap16be_to_a_512_avx2 : 31.3
    planar_gbrap16le_to_a_512_c : 600.3
    planar_gbrap16le_to_a_512_sse2 : 40.3
    planar_gbrap16le_to_a_512_avx2 : 30.3
    planar_gbrapf32be_to_a_512_c : 1148.8
    planar_gbrapf32be_to_a_512_sse2 : 611.3
    planar_gbrapf32be_to_a_512_sse4 : 234.8
    planar_gbrapf32be_to_a_512_avx2 : 183.3
    planar_gbrapf32le_to_a_512_c : 851.3
    planar_gbrapf32le_to_a_512_sse2 : 263.3
    planar_gbrapf32le_to_a_512_sse4 : 199.3
    planar_gbrapf32le_to_a_512_avx2 : 156.8

    Reviewed-by : Paul B Mahol <onemda@gmail.com>
    Signed-off-by : James Almer <jamrial@gmail.com>

    • [DH] libswscale/x86/input.asm
    • [DH] libswscale/x86/swscale.c
    • [DH] tests/checkasm/sw_gbrp.c
  • ffmpeg chains parameters and options while being used in a loop

    10 janvier 2024, par Simon Nazarenko

    I got a code that generates videos from scratch (got gifs, captions and audio). It works amazing when done once, however, when put in a loop and it should create more than 1 video it freezes being caused by memory leak. Upon investigation I realized that ffmpeg (v1.1.0) chains the loop iterations carrying the parameters and options from the first iteration to the second. It then breaks (overwrites) the first video and infinitely writes the second.

    &#xA;

    This is my dependency

    &#xA;

    const ffmpeg = require("fluent-ffmpeg")()&#xA;  .setFfprobePath(ffprobe.path)&#xA;  .setFfmpegPath(ffmpegInstaller.path)&#xA;

    &#xA;

    It looks like this

    &#xA;

    async function convertGifToVideo(&#xA;  gifFile,&#xA;  audioFile,&#xA;  subtitlesFile,&#xA;  tempDirectory&#xA;) {&#xA;  return new Promise((resolve, reject) => {&#xA;    const outputFile = `${tempDirectory}/video_${Date.now()}.mp4`&#xA;    &#xA;    ffmpeg&#xA;      .input(gifFile)&#xA;      .inputFormat("gif")&#xA;      .inputOptions("-stream_loop -1")&#xA;      .input(audioFile)&#xA;      .outputOptions("-shortest")&#xA;      .outputOptions(`-vf subtitles=${subtitlesFile}`)&#xA;      .outputOptions("-report")&#xA;      .output(outputFile)&#xA;      .on("end", () => {&#xA;        console.log(`Combined ${gifFile} and ${audioFile} into ${outputFile}`)&#xA;        resolve(outputFile)&#xA;      })&#xA;      .on("error", (err, stdout, stderr) => {&#xA;        console.error("Error combining GIF and audio:", err)&#xA;        console.error("ffmpeg stdout:", stdout)&#xA;        console.error("ffmpeg stderr:", stderr)&#xA;        reject(err)&#xA;      })&#xA;      .run()&#xA;  })&#xA;}&#xA;

    &#xA;

    And it's called in a loop

    &#xA;

    for (const key in script) {&#xA;    if (script.hasOwnProperty(key)) {&#xA;      ...stuff&#xA;&#xA;      const videoFileName = await convertGifToVideo(&#xA;        gifFileName,&#xA;        audioFileName,&#xA;        subtitlesFileName,&#xA;        tempDirectory&#xA;      )&#xA;    }&#xA;  }&#xA;

    &#xA;

    Here is a piece of log from the first video generation

    &#xA;

    &#xA;

    ffmpeg started on 2024-01-10 at 02:58:52&#xA;Report written to "ffmpeg-20240110-025852.log"&#xA;Command line :&#xA;/home/simon/Documents/AFYTUBE/node_modules/@ffmpeg-installer/linux-x64/ffmpeg -f gif -stream_loop -1 -i ./temp/gif_funny_frogs.gif -i ./temp/funny_frogs.mp3 -y -shortest -vf "subtitles=./temp/funny_frogs.srt" -report ./temp/video_1704880732780.mp4

    &#xA;

    &#xA;

    Here is a piece of log from the second one

    &#xA;

    &#xA;

    /home/simon/Documents/AFYTUBE/node_modules/@ffmpeg-installer/linux-x64/ffmpeg -f gif -stream_loop -1 -i ./temp/gif_funny_frogs.gif -i ./temp/funny_frogs.mp3 -f gif -stream_loop -1 -i ./temp/gif_leg_exercises.gif -i ./temp/leg_exercises.mp3 -y -shortest -vf "subtitles=./temp/funny_frogs.srt" -report -shortest -vf "subtitles=./temp/leg_exercises.srt" -report ./temp/video_1704880732780.mp4 ./temp/video_1704880750879.mp4

    &#xA;

    &#xA;

    Any ideas what I am doing wrong ?

    &#xA;

  • What is a Cohort Report ? A Beginner’s Guide to Cohort Analysis

    3 janvier 2024, par Erin

    Handling your user data as a single mass of numbers is rarely conducive to figuring out meaningful patterns you can use to improve your marketing campaigns.

    A cohort report (or cohort analysis) can help you quickly break down that larger audience into sequential segments and contrast and compare based on various metrics. As such, it is a great tool for unlocking more granular trends and insights — for example, identifying patterns in engagement and conversions based on the date users first interacted with your site.

    In this guide, we explain the basics of the cohort report and the best way to set one up to get the most out of it.

    What is a cohort report ?

    In a cohort report, you divide a data set into groups based on certain criteria — typically a time-based cohort metric like first purchase date — and then analyse the data across those segments, looking for patterns.

    Date-based cohort analysis is the most common approach, often creating cohorts based on the day a user completed a particular action — signed up, purchased something or visited your website. Depending on the metric you choose to measure (like return visits), the cohort report might look something like this :

    Example of a basic cohort report

    Note that this is not a universal benchmark or anything of the sort. The above is a theoretical cohort analysis based on app users who downloaded the app, tracking and comparing the retention rates as the days go by. 

    The benchmarks will be drastically different depending on the metric you’re measuring and the basis for your cohorts. For example, if you’re measuring returning visitor rates among first-time visitors to your website, expect single-digit percentages even on the second day.

    Your industry will also greatly affect what you consider positive in a cohort report. For example, if you’re a subscription SaaS, you’d expect high continued usage rates over the first week. If you sell office supplies to companies, much less so.

    What is an example of a cohort ?

    As we just mentioned, a typical cohort analysis separates users or customers by the date they first interacted with your business — in this case, they downloaded your app. Within that larger analysis, the users who downloaded it on May 3 represent a single cohort.

    Illustration of a specific cohort

    In this case, we’ve chosen behaviour and time — the app download day — to separate the user base into cohorts. That means every specific day denotes a specific cohort within the analysis.

    Diving deeper into an individual cohort may be a good idea for important holidays or promotional events like Black Friday.

    Of course, cohorts don’t have to be based on specific behaviour within certain periods. You can also create cohorts based on other dimensions :

    • Transactional data — revenue per user
    • Churn data — date of churn
    • Behavioural cohort — based on actions taken on your website, app or e-commerce store, like the number of sessions per user or specific product pages visited
    • Acquisition cohort — which channel referred the user or customer

    For more information on different cohort types, read our in-depth guide on cohort analysis.

    How to create a cohort report (and make sense of it)

    Matomo makes it easy to view and analyse different cohorts (without the privacy and legal implications of using Google Analytics).

    Here are a few different ways to set up a cohort report in Matomo, starting with our built-in cohorts report.

    Cohort reports

    With Matomo, cohort reports are automatically compiled based on the first visit date. The default metric is the percentage of returning visitors.

    Screenshot of the cohorts report in Matomo analytics

    Changing the settings allows you to create multiple variations of cohort analysis reports.

    Break down cohorts by different metrics

    The percentage of returning visits can be valuable if you’re trying to improve early engagement in a SaaS app onboarding process. But it’s far from your only option.

    You can also compare performance by conversion, revenue, bounce rate, actions per visit, average session duration or other metrics.

    Cohort metric options in Matomo analytics

    Change the time and scope of your cohort analysis

    Splitting up cohorts by single days may be useless if you don’t have a high volume of users or visitors. If the average cohort size is only a few users, you won’t be able to identify reliable patterns. 

    Matomo lets you set any time period to create your cohort analysis report. Instead of the most recent days, you can create cohorts by week, month, year or custom date ranges. 

    Date settings in the cohorts report in Matomo analytics

    Cohort sizes will depend on your customer base. Make sure each cohort is large enough to encapsulate all the customers in that cohort and not so small that you have insignificant cohorts of only a few customers. Choose a date range that gives you that without scaling it too far so you can’t identify any seasonal trends.

    Cohort analysis can be a great tool if you’ve recently changed your marketing, product offering or onboarding. Set the data range to weekly and look for any impact in conversions and revenue after the changes.

    Using the “compare to” feature, you can also do month-over-month, quarter-over-quarter or any custom date range comparisons. This approach can help you get a rough overview of your campaign’s long-term progress without doing any in-depth analysis.

    You can also use the same approach to compare different holiday seasons against each other.

    If you want to combine time cohorts with segmentation, you can run cohort reports for different subsets of visitors instead of all visitors. This can lead to actionable insights like adjusting weekend or specific seasonal promotions to improve conversion rates.

    Try Matomo for Free

    Get the web insights you need, without compromising data accuracy.

    No credit card required

    Easily create custom cohort reports beyond the time dimension

    If you want to split your audience into cohorts by focusing on something other than time, you will need to create a custom report and choose another dimension. In Matomo, you can choose from a wide range of cohort metrics, including referrers, e-commerce signals like viewed product or product category, form submissions and more.

    Custom report options in Matomo

    Then, you can create a simple table-based report with all the insights you need by choosing the metrics you want to see. For example, you could choose average visit duration, bounce rate and other usage metrics.

    Metrics selected in a Matomo custom report

    If you want more revenue-focused insights, add metrics like conversions, add-to-cart and other e-commerce events.

    Custom reports make it easy to create cohort reports for almost any dimension. You can use any metric within demographic and behavioural analytics to create a cohort. (You can explore the complete list of our possible segmentation metrics.)

    We cover different types of custom reports (and ideas for specific marketing campaigns) in our guide on custom segmentation.

    Create your first cohort report and gain better insights into your visitors

    Cohort reports can help you identify trends and the impact of short-term marketing efforts like events and promotions.

    With Matomo cohort reports you have the power to create complex custom reports for various cohorts and segments. 

    If you’re looking for a powerful, easy-to-use web analytics solution that gives you 100% accurate data without compromising your users’ privacy, Matomo is a great fit. Get started with a 21-day free trial today. No credit card required.