Recherche avancée

Médias (91)

Autres articles (41)

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

  • MediaSPIP Init et Diogène : types de publications de MediaSPIP

    11 novembre 2010, par

    À l’installation d’un site MediaSPIP, le plugin MediaSPIP Init réalise certaines opérations dont la principale consiste à créer quatre rubriques principales dans le site et de créer cinq templates de formulaire pour Diogène.
    Ces quatre rubriques principales (aussi appelées secteurs) sont : Medias ; Sites ; Editos ; Actualités ;
    Pour chacune de ces rubriques est créé un template de formulaire spécifique éponyme. Pour la rubrique "Medias" un second template "catégorie" est créé permettant d’ajouter (...)

Sur d’autres sites (3785)

  • What is Behavioural Segmentation and Why is it Important ?

    28 septembre 2023, par Erin — Analytics Tips

    Amidst the dynamic landscape of web analytics, understanding customers has grown increasingly vital for businesses to thrive. While traditional demographic-focused strategies possess merit, they need to uncover the nuanced intricacies of individual online behaviours and preferences. As customer expectations evolve in the digital realm, enterprises must recalibrate their approaches to remain relevant and cultivate enduring digital relationships.

    In this context, the surge of technology and advanced data analysis ushers in a marketing revolution : behavioural segmentation. Businesses can unearth invaluable insights by meticulously scrutinising user actions, preferences and online interactions. These insights lay the foundation for precisely honed, high-performing, personalised campaigns. The era dominated by blanket, catch-all marketing strategies is yielding to an era of surgical precision and tailored engagement. 

    While the insights from user behaviours empower businesses to optimise customer experiences, it’s essential to strike a delicate balance between personalisation and respecting user privacy. Ethical use of behavioural data ensures that the power of segmentation is wielded responsibly and in compliance, safeguarding user trust while enabling businesses to thrive in the digital age.

    What is behavioural segmentation ?

    Behavioural segmentation is a crucial concept in web analytics and marketing. It involves categorising individuals or groups of users based on their online behaviour, actions and interactions with a website. This segmentation method focuses on understanding how users engage with a website, their preferences and their responses to various stimuli. Behavioural segmentation classifies users into distinct segments based on their online activities, such as the pages they visit, the products they view, the actions they take and the time they spend on a site.

    Behavioural segmentation plays a pivotal role in web analytics for several reasons :

    1. Enhanced personalisation :

    Understanding user behaviour enables businesses to personalise online experiences. This aids with delivering tailored content and recommendations to boost conversion, customer loyalty and customer satisfaction.

    2. Improved user experience :

    Behavioural segmentation optimises user interfaces (UI) and navigation by identifying user paths and pain points, enhancing the level of engagement and retention.

    3. Targeted marketing :

    Behavioural segmentation enhances marketing efficiency by tailoring campaigns to user behaviour. This increases the likelihood of interest in specific products or services.

    4. Conversion rate optimisation :

    Analysing behavioural data reveals factors influencing user decisions, enabling website optimisation for a streamlined purchasing process and higher conversion rates.

    5. Data-driven decision-making :

    Behavioural segmentation empowers data-driven decisions. It identifies trends, behavioural patterns and emerging opportunities, facilitating adaptation to changing user preferences and market dynamics.

    6. Ethical considerations :

    Behavioural segmentation provides valuable insights but raises ethical concerns. User data collection and use must prioritise transparency, privacy and responsible handling to protect individuals’ rights.

    The significance of ethical behavioural segmentation will be explored more deeply in a later section, where we will delve into the ethical considerations and best practices for collecting, storing and utilising behavioural data in web analytics. It’s essential to strike a balance between harnessing the power of behavioural segmentation for business benefits and safeguarding user privacy and data rights in the digital age.

    A woman surrounded by doors shaped like heads of different

    Different types of behavioural segments with examples

    1. Visit-based segments : These segments hinge on users’ visit patterns. Analyse visit patterns, compare first-time visitors to returning ones, or compare users landing on specific pages to those landing on others.
      • Example : The real estate website Zillow can analyse how first-time visitors and returning users behave differently. By understanding these patterns, Zillow can customise its website for each group. For example, they can highlight featured listings and provide navigation tips for first-time visitors while offering personalised recommendations and saved search options for returning users. This could enhance user satisfaction and boost the chances of conversion.
    2. Interaction-based segments : Segments can be created based on user interactions like special events or goals completed on the site.
      • Example : Airbnb might use this to understand if users who successfully book accommodations exhibit different behaviours than those who don’t. This insight could guide refinements in the booking process for improved conversion rates.
    3. Campaign-based segments : Beyond tracking visit numbers, delve into usage differences of visitors from specific sources or ad campaigns for deeper insights.
      • Example : Nike might analyse user purchase behaviour from various traffic sources (referral websites, organic, direct, social media and ads). This informs marketing segmentation adjustments, focusing on high-performance channels. It also customises the website experience for different traffic sources, optimising content, promotions and navigation. This data-driven approach could boost user experiences and maximise marketing impact for improved brand engagement and sales conversions.
    4. Ecommerce segments : Separate users based on purchases, even examining the frequency of visits linked to specific products. Segment heavy users versus light users. This helps uncover diverse customer types and browsing behaviours.
      • Example : Amazon could create segments to differentiate between visitors who made purchases and those who didn’t. This segmentation could reveal distinct usage patterns and preferences, aiding Amazon in tailoring its recommendations and product offerings.
    5. Demographic segments : Build segments based on browser language or geographic location, for instance, to comprehend how user attributes influence site interactions.
      • Example : Netflix can create user segments based on demographic factors like geographic location to gain insight into how a visitor’s location can influence content preferences and viewing behaviour. This approach could allow for a more personalised experience.
    6. Technographic segments : Segment users by devices or browsers, revealing variations in site experience and potential platform-specific issues or user attitudes.
      • Example : Google could create segments based on users’ devices (e.g., mobile, desktop) to identify potential issues in rendering its search results. This information could be used to guide Google in providing consistent experiences regardless of device.
    A group of consumers split into different segments based on their behaviour

    The importance of ethical behavioural segmentation

    Respecting user privacy and data protection is crucial. Matomo offers features that align with ethical segmentation practices. These include :

    • Anonymization : Matomo allows for data anonymization, safeguarding individual identities while providing valuable insights.
    • GDPR compliance : Matomo is GDPR compliant, ensuring that user data is handled following European data protection regulations.
    • Data retention and deletion : Matomo enables businesses to set data retention policies and delete user data when it’s no longer needed, reducing the risk of data misuse.
    • Secured data handling : Matomo employs robust security measures to protect user data, reducing the risk of data breaches.

    Real-world examples of ethical behavioural segmentation :

    1. Content publishing : A leading news website could utilise data anonymization tools to ethically monitor user engagement. This approach allows them to optimise content delivery based on reader preferences while ensuring the anonymity and privacy of their target audience.
    2. Non-profit organisations : A charity organisation could embrace granular user control features. This could be used to empower its donors to manage their data preferences, building trust and loyalty among supporters by giving them control over their personal information.
    Person in a suit holding a red funnel that has data flowing through it into a file

    Examples of effective behavioural segmentation

    Companies are constantly using behavioural insights to engage their audiences effectively. In this section, we’ll delve into real-world examples showcasing how top companies use behavioural segmentation to enhance their marketing efforts.

    A woman standing in front of a pie chart pointing to the top right-hand section of customers in that segment
    1. Coca-Cola’s behavioural insights for marketing strategy : Coca-Cola employs behavioural segmentation to evaluate its advertising campaigns. Through analysing user engagement across TV commercials, social media promotions and influencer partnerships, Coca-Cola’s marketing team can discover that video ads shared by influencers generate the highest ROI and web traffic.

      This insight guides the reallocation of resources, leading to increased sales and a more effective advertising strategy.

    2. eBay’s custom conversion approach : eBay excels in conversion optimisation through behavioural segmentation. When users abandon carts, eBay’s dynamic system sends personalised email reminders featuring abandoned items and related recommendations tailored to user interests and past purchase decisions.

      This strategy revives sales, elevates conversion rates and sparks engagement. eBay’s adeptness in leveraging behavioural insights transforms user experience, steering a customer journey toward conversion.

    3. Sephora’s data-driven conversion enhancement : Data analysts can use Sephora’s behavioural segmentation strategy to fuel revenue growth through meticulous data analysis. By identifying a dedicated subset of loyal customers who exhibit a consistent preference for premium skincare products, data analysts enable Sephora to customise loyalty programs.

      These personalised rewards programs provide exclusive discounts and early access to luxury skincare releases, resulting in heightened customer engagement and loyalty. The data-driven precision of this approach directly contributes to amplified revenue from this specific customer segment.

    Examples of the do’s and don’ts of behavioural segmentation 

    Happy woman surrounded by icons of things and activities she enjoys

    Behavioural segmentation is a powerful marketing and data analysis tool, but its success hinges on ethical and responsible practices. In this section, we will explore real-world examples of the do’s and don’ts of behavioural segmentation, highlighting companies that have excelled in their approach and those that have faced challenges due to lapses in ethical considerations.

    Do’s of behavioural segmentation :

    • Personalised messaging :
      • Example : Spotify
        • Spotify’s success lies in its ability to use behavioural data to curate personalised playlists and user recommendations, enhancing its music streaming experience.
    • Transparency :
      • Example : Basecamp
        • Basecamp’s transparency in sharing how user data is used fosters trust. They openly communicate data practices, ensuring users are informed and comfortable.
    • Anonymization
      • Example : Matomo’s anonymization features
        • Matomo employs anonymization features to protect user identities while providing valuable insights, setting a standard for responsible data handling.
    • Purpose limitation :
      • Example : Proton Mail
        • Proton Mail strictly limits the use of user data to email-related purposes, showcasing the importance of purpose-driven data practices.
    • Dynamic content delivery : 
      • Example : LinkedIn
        • LinkedIn uses behavioural segmentation to dynamically deliver job recommendations, showcasing the potential for relevant content delivery.
    • Data security :
      • Example : Apple
        • Apple’s stringent data security measures protect user information, setting a high bar for safeguarding sensitive data.
    • Adherence to regulatory compliance : 
      • Example : Matomo’s regulatory compliance features
        • Matomo’s regulatory compliance features ensure that businesses using the platform adhere to data protection regulations, further promoting responsible data usage.

    Don’ts of behavioural segmentation :

    • Ignoring changing regulations
      • Example : Equifax
        • Equifax faced major repercussions for neglecting evolving regulations, resulting in a data breach that exposed the sensitive information of millions.
    • Sensitive attributes
      • Example : Twitter
        • Twitter faced criticism for allowing advertisers to target users based on sensitive attributes, sparking concerns about user privacy and data ethics.
    • Data sharing without consent
      • Example : Meta & Cambridge Analytica
        • The Cambridge Analytica scandal involving Meta (formerly Facebook) revealed the consequences of sharing user data without clear consent, leading to a breach of trust.
    • Lack of control
      • Example : Uber
        • Uber faced backlash for its poor data security practices and a lack of control over user data, resulting in a data breach and compromised user information.
    • Don’t be creepy with invasive personalisation
      • Example : Offer Moment
        • Offer Moment’s overly invasive personalisation tactics crossed ethical boundaries, unsettling users and eroding trust.

    These examples are valuable lessons, emphasising the importance of ethical and responsible behavioural segmentation practices to maintain user trust and regulatory compliance in an increasingly data-driven world.

    Continue the conversation

    Diving into customer behaviours, preferences and interactions empowers businesses to forge meaningful connections with their target audience through targeted marketing segmentation strategies. This approach drives growth and fosters exceptional customer experiences, as evident from the various common examples spanning diverse industries.

    In the realm of ethical behavioural segmentation and regulatory compliance, Matomo is a trusted partner. Committed to safeguarding user privacy and data integrity, our advanced web analytics solution empowers your business to harness the power of behavioral segmentation, all while upholding the highest standards of compliance with stringent privacy regulations.

    To gain deeper insight into your visitors and execute impactful marketing campaigns, explore how Matomo can elevate your efforts. Try Matomo free for 21-days, no credit card required. 

  • CRO Audit : Increase Your Conversions in 10 Simple Steps

    25 mars 2024, par Erin

    You have two options if you’re unhappy with your website’s conversion rates.

    The first is to implement a couple of random tactics you heard on that marketing podcast, which worked for a business completely unrelated to yours. 

    The other is to take a more systematic, measured approach. An approach that finds specific problems with the pages on your site and fixes them one by one. 

    You’re choosing the second option, right ?

    Good, then let’s explain what a conversion rate optimisation audit is and how you can complete one using our step-by-step process.

    What is a CRO audit ?

    A conversion rate optimisation audit (CRO audit) systematically evaluates your website. It identifies opportunities to enhance your website’s performance and improve conversion rates. 

    During the audit, you’ll analyse your website’s entire customer journey, collect valuable user behaviour data and cross reference that with web analytics to find site elements (forms, calls-to-actions, etc.) that you can optimise.

    What is a CRO audit

    It’s one (and usually the first) part of a wider CRO strategy. 

    For example, an online retailer might run a CRO audit to discover why cart abandonment rates are high. The audit may throw up several potential problems (like a confusing checkout form and poor navigation), which the retailer can then spend time optimising using A/B tests

    Why run a CRO audit ?

    A CRO audit can be a lot of work, but it’s well worth the effort. Here are the benefits you can expect from running one.

    Generate targeted and relevant insights

    You’ve probably already tested some “best practice” conversion rate optimisations, like changing the colour of your CTA button, adding social proof or highlighting benefits to your headlines. 

    These are great, but they aren’t tailored to your audience. Running a CRO audit will ensure you find (and rectify) the conversion bottlenecks and barriers that impact your users, not someone else’s.

    Improve conversion rates

    Ultimately, CRO audits are about improving conversion rates and increasing revenue. Finding and eliminating barriers to conversion makes it much more likely that users will convert. 

    But that’s not all. CRO audits also improve the user experience and customer satisfaction. The audit process will help you understand how users behave on your website, allowing you to create a more user-friendly customer experience. 

    A 10-step process for running your first CRO audit 

    Want to conduct your first CRO audit ? Follow the ten-step process we outline below :

    A 10-step process for running your first CRO audit

    1. Define your goals

    Start your CRO audit by setting conversion goals that marry with the wider goals of your business. The more clearly you define your goals, the easier it will be to evaluate your website for opportunities. 

    Your goals could include :

    • Booking more trials
    • Getting more email subscribers
    • Reducing cart abandonments

    You should also define the specific actions users need to take for you to achieve these goals. For example, users will have to click on your call-to-action and complete a form to book more trials. On the other hand, reducing cart abandonments requires users to add items to their cart and click through all of the forms during the checkout process. 

    If you’re unsure where to start, we recommend reading our CRO statistics roundup to see how your site compares to industry averages for metrics like conversion and click-through rates. 

    You’ll also want to ensure you track these conversion goals in your web analytics software. In Matomo, it only takes a few minutes to set up a new conversion goal, and the goals dashboard makes it easy to see your performance at a glance. 

    Try Matomo for Free

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

    No credit card required

    2. Review your analytics

    With your goals in mind, the next step is to dive into your website analytics and identify pages that need improvement.

    Consider the following conversion metrics when analysing pages :

    • Conversion rate
    • Average time on page
    • Average order value
    • Click-through rate

    Ensure you’re analysing metrics aligning with the goals you set in step one. Average order value could be a great metric to track if you want to reduce cart abandonments, for example, but it’s unsuitable to get more email subscribers.

    3. Research the user experience

    Next, you’ll want to gather user experience data to better understand how potential customers use your website and why they aren’t converting as often as you’d like. 

    You can use several tools for user behaviour analysis, but we recommend heatmaps and session recordings.

    Heatmaps visually represent how users click, move and scroll your website. It will show where visitors place their attention and which page elements are ignored. 

    Take a look at this example below from our website. As you can see, the navigation, headline and CTA get the most attention. If we weren’t seeing as many conversions as we liked and our CTAs were getting ignored, that might be a sign to change their colour or placement. 

    Screenshot of Matomo heatmap feature

    Session recordings capture the actions users take as they browse your website. They let you watch a video playback of how visitors behave, capturing clicks and scrolls so you can see each visitor’s steps in order. 

    Session recordings will show you how users navigate and where they drop off. 

    4. Analyse your forms

    Whether your forms are too confusing or too long, there are plenty of reasons for users to abandon your forms. 

    But how many forms are they abandoning exactly and which forms are there ?

    That’s what form analysis is for. 

    Running a form analysis will highlight which forms need work and reveal whether forms could be contributing to a page’s poor conversion rate. It’s how Concrete CMS tripled its leads in just a few days.

    Matomo’s Form Analytics feature makes running form analysis easy.

    A screenshot of Matomo's form analysis dashboard

    Just open up the forms dashboard to get a snapshot of your forms’ key metrics, including average hesitation time, starter rate and submission rates. 

    Try Matomo for Free

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

    No credit card required

    5. Analyse your conversion funnel

    Next, analyse the conversion funnel to see if there’s an obvious bottleneck or several pages where visitors abandon your desired action. Common conversion abandonment points are shopping carts and forms.

    A website conversion funnel

    For example, you could find there is a drop-off in conversions between checking out and making a purchase or between booking a demo and signing up for a subscription. Understanding where these drop-offs occur lets you dig deeper and make targeted improvements.

    Don’t worry if you’ve got a very long funnel. Start at the bottom and work backward. Problems with the pages at the very end of your funnel tasked with converting customers (landing pages, checkout pages, etc.) will have the biggest impact on your conversion rate. So, it makes sense to start there. 

    6. Analyse campaigns and traffic sources (marketing attribution)

    It’s now time to analyse traffic quality to ensure you’re powering your conversion optimisation efforts with the best traffic possible. 

    This can also help you find your best customers so you can focus on acquiring more of them and tailoring your optimisation efforts to their preferences. 

    Run a marketing attribution report to see which traffic sources generate the most conversions and have the highest conversion rates. 

    Matomo comparing linear, first click, and last click attribution models in the marketing attribution dashboard

    Using marketing attribution is crucial here because it gives a fuller picture of how customers move through their journey, recognising the impact of various touchpoints in making a decision, unlike last-click attribution, which only credits the final touchpoint before a conversion.

    7. Use surveys and other qualitative data sources

    Increase the amount of qualitative data you have access to by speaking directly to customers. Surveys, interviews and other user feedback methods add depth and context to your user behaviour research.

    Sure, you aren’t getting feedback from hundreds of customers like you do with heatmaps or session recordings, but the information can sometimes be much richer. Users will often tell you outright why they didn’t take a specific action in a survey response (or what convinced them to convert). 

    Running surveys is now even easier in Matomo, thanks to the Matomo Surveys third-party plugin. This lets you add a customisable survey popup to your site, the data from which is automatically added to Matomo and can be combined with Matomo segments.

    8. Develop a conversion hypothesis

    Using all of the insights you’ve gathered up to this point, you can now hypothesise what’s wrong and how you can fix it. 

    Here’s a template you can use :

    Conversion Hypothesis Template

    This could end up looking something like the following :

    Based on evidence gathered from web analytics and heatmaps, moving our signup form above the fold will fix our lack of free trial signups, improving signups by 50%.

    A hypothesis recorded in Matomo

    Make sure you write your hypothesis down somewhere. Matomo lets you document your hypothesis when creating an A/B test, so it’s easy to reflect on when the test finishes. 

    9. Run A/B tests

    Now, it’s time to put your theory into practice by running an A/B test.

    Create an experiment using a platform like Matomo that creates two different versions of your page : the original and one with the change you mentioned in your hypothesis. 

    There’s no set time for you to run an A/B test. Just keep running it until the outcome is statistically significant. This is something your A/B testing platform should do automatically. 

    A statistically significant result means it would be very unlikely the outcome doesn’t happen in the long term.

    A screenshot of an A/B test

    As you can see in the image above, the wide header variation has significantly outperformed both the original and the other variation. So we can be pretty confident about making the change permanent. 

    If the outcome of your A/B test also validates your conversion hypothesis, you can implement the change. If not, analyse the data, brainstorm another hypothesis and run another A/B test. 

    Try Matomo for Free

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

    No credit card required

    10. Monitor and iterate

    You need to develop a culture of continuous improvement to succeed with conversion rate optimisation. That means constantly monitoring your conversion goals and running tests to improve your metrics. 

    While you don’t need to run a conversion audit every month, you should run audits regularly throughout the year.

    How often should you conduct a CRO audit ? 

    You should conduct a CRO audit fairly regularly. 

    We recommend creating a CRO schedule that sees you run a CRO audit every six to 12 months. That will ensure you continue identifying problem pages and keeping your conversion rates competitive. 

    Regular CRO audits will also account for evolving consumer behaviours, changes in your industry and your own business goals, all of which can impact your approach conversion rate optimisation. 

    Run your CRO audit with Matomo

    A CRO audit process is the only way you can identify conversion optimisation methods that will work for your site and your target audience. It’s a methodical, data-backed strategy for making targeted improvements to send conversion rates soaring. 

    There are a lot of steps to complete, but you don’t need dozens of tools to run a CRO audit process. 

    Just one : Matomo.

    Unlike other web analytics platforms, like Google Analytics, Matomo has the built-in tools and plugins to help with every step of the CRO audit process, from web analytics to conversion funnel analysis and A/B testing. With its accurate, unsampled data and privacy-friendly tracking, Matomo is the ideal choice for optimising conversions. 

    Learn how to increase your conversions with Matomo, and start a free 21-day trial today. No credit card required.

  • Error transcoding with FFmpeg : Error : Output format hls is not available

    6 mai 2024, par asif mohmd

    I am using FFmpeg library to transcode a video file into multiple resolutions and create an HLS (HTTP Live Streaming) master playlist.

    


    It takes a video file as input but its does give me the output with HLS playlist.I got a error called "Output format hls is not available". Only the Output directory is creating

    


    I am using FFMpeg 7.0 full build version and also tried older versions and ffmpeg essentials and also tried chocolatey.

    


    if i remove the implementation of HLS from this code.it will create 4 different resolution videos in my output.

    


    Note:I just tried this same code on my friend MAC Book by only changing the setffmpegPath : "ffmpeg.setFfmpegPath("C :\ffmpeg\bin\ffmpeg.exe") ;" to his ffmpeg directory.
Its working perfectly in his mac book

    


    import "dotenv/config";&#xA;import * as fs from "fs";&#xA;import * as path from "path";&#xA;import ffmpeg from "fluent-ffmpeg";&#xA;import crypto from "crypto";&#xA;&#xA;ffmpeg.setFfmpegPath("C:\\ffmpeg\\bin\\ffmpeg.exe");&#xA;&#xA;export const FFmpegTranscoder = async (file: any): Promise<any> => {&#xA;  try {&#xA;    console.log("Starting script");&#xA;    console.time("req_time");&#xA;&#xA;    const randomName = (bytes = 32) =>&#xA;      crypto.randomBytes(bytes).toString("hex");&#xA;    const fileName = randomName();&#xA;    const directoryPath = path.join(__dirname, "..", "..", "input");&#xA;    const filePath = path.join(directoryPath, `${fileName}.mp4`);&#xA;&#xA;    if (!fs.existsSync(directoryPath)) {&#xA;      fs.mkdirSync(directoryPath, { recursive: true });&#xA;    }&#xA;&#xA;    const paths = await new Promise<any>((resolve, reject) => {&#xA;      fs.writeFile(filePath, file, async (err) => {&#xA;        if (err) {&#xA;          console.error("Error saving file:", err);&#xA;          throw err;&#xA;        }&#xA;        console.log("File saved successfully:", filePath);&#xA;&#xA;        try {&#xA;          const outputDirectoryPath = await transcodeWithFFmpeg(&#xA;            fileName,&#xA;            filePath&#xA;          );&#xA;          resolve({ directoryPath, filePath, fileName, outputDirectoryPath });&#xA;        } catch (error) {&#xA;          console.error("Error transcoding with FFmpeg:", error);&#xA;        }&#xA;      });&#xA;    });&#xA;    return paths;&#xA;  } catch (e: any) {&#xA;    console.log(e);&#xA;  }&#xA;};&#xA;&#xA;const transcodeWithFFmpeg = async (fileName: string, filePath: string) => {&#xA;  const directoryPath = path.join(&#xA;    __dirname,&#xA;    "..",&#xA;    "..",&#xA;    `output/hls/${fileName}`&#xA;  );&#xA;&#xA;  if (!fs.existsSync(directoryPath)) {&#xA;    fs.mkdirSync(directoryPath, { recursive: true });&#xA;  }&#xA;&#xA;  const resolutions = [&#xA;    {&#xA;      resolution: "256x144",&#xA;      videoBitrate: "200k",&#xA;      audioBitrate: "64k",&#xA;    },&#xA;    {&#xA;      resolution: "640x360",&#xA;      videoBitrate: "800k",&#xA;      audioBitrate: "128k",&#xA;    },&#xA;    {&#xA;      resolution: "1280x720",&#xA;      videoBitrate: "2500k",&#xA;      audioBitrate: "192k",&#xA;    },&#xA;    {&#xA;      resolution: "1920x1080",&#xA;      videoBitrate: "5000k",&#xA;      audioBitrate: "256k",&#xA;    },&#xA;  ];&#xA;&#xA;  const variantPlaylists: { resolution: string; outputFileName: string }[] = [];&#xA;&#xA;  for (const { resolution, videoBitrate, audioBitrate } of resolutions) {&#xA;    console.log(`HLS conversion starting for ${resolution}`);&#xA;    const outputFileName = `${fileName}_${resolution}.m3u8`;&#xA;    const segmentFileName = `${fileName}_${resolution}_%03d.ts`;&#xA;&#xA;    await new Promise<void>((resolve, reject) => {&#xA;      ffmpeg(filePath)&#xA;        .outputOptions([&#xA;          `-c:v h264`,&#xA;          `-b:v ${videoBitrate}`,&#xA;          `-c:a aac`,&#xA;          `-b:a ${audioBitrate}`,&#xA;          `-vf scale=${resolution}`,&#xA;          `-f hls`,&#xA;          `-hls_time 10`,&#xA;          `-hls_list_size 0`,&#xA;          `-hls_segment_filename ${directoryPath}/${segmentFileName}`,&#xA;        ])&#xA;        .output(`${directoryPath}/${outputFileName}`)&#xA;        .on("end", () => resolve())&#xA;        .on("error", (err) => reject(err))&#xA;        .run();&#xA;    });&#xA;    const variantPlaylist = {&#xA;      resolution,&#xA;      outputFileName,&#xA;    };&#xA;    variantPlaylists.push(variantPlaylist);&#xA;    console.log(`HLS conversion done for ${resolution}`);&#xA;  }&#xA;  console.log(`HLS master m3u8 playlist generating`);&#xA;&#xA;  let masterPlaylist = variantPlaylists&#xA;    .map((variantPlaylist) => {&#xA;      const { resolution, outputFileName } = variantPlaylist;&#xA;      const bandwidth =&#xA;        resolution === "256x144"&#xA;          ? 264000&#xA;          : resolution === "640x360"&#xA;          ? 1024000&#xA;          : resolution === "1280x720"&#xA;          ? 3072000&#xA;          : 5500000;&#xA;      ``;&#xA;      return `#EXT-X-STREAM-INF:BANDWIDTH=${bandwidth},RESOLUTION=${resolution}\n${outputFileName}`;&#xA;    })&#xA;    .join("\n");&#xA;  masterPlaylist = `#EXTM3U\n` &#x2B; masterPlaylist;&#xA;&#xA;  const masterPlaylistFileName = `${fileName}_master.m3u8`;&#xA;&#xA;  const masterPlaylistPath = `${directoryPath}/${masterPlaylistFileName}`;&#xA;  fs.writeFileSync(masterPlaylistPath, masterPlaylist);&#xA;  console.log(`HLS master m3u8 playlist generated`);&#xA;  return directoryPath;&#xA;};&#xA;</void></any></any>

    &#xA;

    My console.log is :

    &#xA;

        Starting script&#xA;    HLS conversion starting for 256x144&#xA;    Error transcoding with FFmpeg: Error: Output format hls is not available&#xA;        at C:\Users\asifa\Desktop\Genius Grid\Transcode-service\node_modules\fluent-ffmpeg\lib\capabilities.js:589:21&#xA;        at nextTask (C:\Users\asifa\Desktop\Genius Grid\Transcode-service\node_modules\async\dist\async.js:5791:13)&#xA;        at next (C:\Users\asifa\Desktop\Genius Grid\Transcode-service\node_modules\async\dist\async.js:5799:13)&#xA;        at C:\Users\asifa\Desktop\Genius Grid\Transcode-service\node_modules\async\dist\async.js:329:20&#xA;        at C:\Users\asifa\Desktop\Genius Grid\Transcode-service\node_modules\fluent-ffmpeg\lib\capabilities.js:549:7&#xA;        at handleExit (C:\Users\asifa\Desktop\Genius Grid\Transcode-service\node_modules\fluent-ffmpeg\lib\processor.js:170:11)&#xA;        at ChildProcess.<anonymous> (C:\Users\asifa\Desktop\Genius Grid\Transcode-service\node_modules\fluent-ffmpeg\lib\processor.js:184:11)&#xA;        at ChildProcess.emit (node:events:518:28)&#xA;        at ChildProcess.emit (node:domain:488:12)&#xA;        at Process.ChildProcess._handle.onexit (node:internal/child_process:294:12) &#xA;</anonymous>

    &#xA;

    I am using Windows 11 and FFMpeg version 7.0. I repeatedly checked, using CMD commands, that my FFMpeg was installed correctly and confirmed the environment variables path, experimented with various FFMpeg versions, and tried with FFMpeg full build Chocolatey package.

    &#xA;

    In Command Line its working perfectly :

    &#xA;

    PS C:\Users\asifa\Desktop\test fmmpeg> ffmpeg -hide_banner -y -i .\SampleVideo_1280x720_30mb.mp4 -vf scale=w=640:h=360:force_original_aspect_ratio=decrease -c:a aac -b:v 800k -c:v h264 -b:a 128k -f hls -hls_time 14 -hls_list_size 0 -hls_segment_filename beach/480p_%03d.ts beach/480p.m3u8&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;.\SampleVideo_1280x720_30mb.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    creation_time   : 1970-01-01T00:00:00.000000Z&#xA;    encoder         : Lavf53.24.2&#xA;  Duration: 00:02:50.86, start: 0.000000, bitrate: 1474 kb/s&#xA;  Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 1086 kb/s, 25 fps, 25 tbr, 12800 tbn (default)&#xA;      Metadata:&#xA;        creation_time   : 1970-01-01T00:00:00.000000Z&#xA;        handler_name    : VideoHandler&#xA;        vendor_id       : [0][0][0][0]&#xA;  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 383 kb/s (default)&#xA;      Metadata:&#xA;        creation_time   : 1970-01-01T00:00:00.000000Z&#xA;        handler_name    : SoundHandler&#xA;        vendor_id       : [0][0][0][0]&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))&#xA;  Stream #0:1 -> #0:1 (aac (native) -> aac (native))&#xA;Press [q] to stop, [?] for help&#xA;[libx264 @ 000001ef1288ec00] using SAR=1/1&#xA;[libx264 @ 000001ef1288ec00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2&#xA;[libx264 @ 000001ef1288ec00] profile High, level 3.0, 4:2:0, 8-bit&#xA;[libx264 @ 000001ef1288ec00] 264 - core 164 r3190 7ed753b - H.264/MPEG-4 AVC codec - Copyleft 2003-2024 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=11 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=800 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00&#xA;Output #0, hls, to &#x27;beach/480p.m3u8&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf61.1.100&#xA;  Stream #0:0(und): Video: h264, yuv420p(progressive), 640x360 [SAR 1:1 DAR 16:9], q=2-31, 800 kb/s, 25 fps, 90k tbn (default)&#xA;      Metadata:&#xA;        creation_time   : 1970-01-01T00:00:00.000000Z&#xA;        handler_name    : VideoHandler&#xA;        vendor_id       : [0][0][0][0]&#xA;        encoder         : Lavc61.3.100 libx264&#xA;      Side data:&#xA;        cpb: bitrate max/min/avg: 0/0/800000 buffer size: 0 vbv_delay: N/A&#xA;  Stream #0:1(und): Audio: aac (LC), 48000 Hz, 5.1, fltp, 128 kb/s (default)&#xA;      Metadata:&#xA;        creation_time   : 1970-01-01T00:00:00.000000Z&#xA;        handler_name    : SoundHandler&#xA;        vendor_id       : [0][0][0][0]&#xA;        encoder         : Lavc61.3.100 aac&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p_000.ts&#x27; for writing speed=15.5x&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p.m3u8.tmp&#x27; for writing&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p_001.ts&#x27; for writing speed=17.9x&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p.m3u8.tmp&#x27; for writing&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p_002.ts&#x27; for writing speed=17.3x&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p.m3u8.tmp&#x27; for writing&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p_003.ts&#x27; for writing speed=19.4x&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p.m3u8.tmp&#x27; for writing&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p_004.ts&#x27; for writing speed=19.3x&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p.m3u8.tmp&#x27; for writing&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p_005.ts&#x27; for writing speed=19.2x&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p.m3u8.tmp&#x27; for writing&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p_006.ts&#x27; for writing&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p.m3u8.tmp&#x27; for writing&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p_007.ts&#x27; for writing speed=19.4x&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p.m3u8.tmp&#x27; for writing&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p_008.ts&#x27; for writing speed=19.5x&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p.m3u8.tmp&#x27; for writing&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p_009.ts&#x27; for writing speed=19.5x&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p.m3u8.tmp&#x27; for writing&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p_010.ts&#x27; for writing speed=19.4x&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p.m3u8.tmp&#x27; for writing&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p_011.ts&#x27; for writing/A    =19.4x&#xA;[hls @ 000001ef12482040] Opening &#x27;beach/480p.m3u8.tmp&#x27; for writing&#xA;[out#0/hls @ 000001ef11d4e880] video:17094KiB audio:2680KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown&#xA;frame= 4271 fps=485 q=-1.0 Lsize=N/A time=00:02:50.76 bitrate=N/A speed=19.4x&#xA;[libx264 @ 000001ef1288ec00] frame I:45    Avg QP:10.29  size: 60418&#xA;[libx264 @ 000001ef1288ec00] frame P:1914  Avg QP:14.53  size:  5582&#xA;[libx264 @ 000001ef1288ec00] frame B:2312  Avg QP:20.63  size:  1774&#xA;[libx264 @ 000001ef1288ec00] consecutive B-frames: 22.9% 11.9%  8.6% 56.6%&#xA;[libx264 @ 000001ef1288ec00] mb I  I16..4: 15.6% 32.1% 52.2%&#xA;[libx264 @ 000001ef1288ec00] mb P  I16..4:  0.3%  3.4%  1.2%  P16..4: 20.3% 10.0% 13.1%  0.0%  0.0%    skip:51.8%&#xA;[libx264 @ 000001ef1288ec00] mb B  I16..4:  0.1%  0.9%  0.4%  B16..8: 17.2%  5.6%  2.8%  direct: 2.0%  skip:71.0%  L0:41.5% L1:44.1% BI:14.4%&#xA;[libx264 @ 000001ef1288ec00] final ratefactor: 16.13&#xA;[libx264 @ 000001ef1288ec00] 8x8 transform intra:58.4% inter:51.7%&#xA;[libx264 @ 000001ef1288ec00] coded y,uvDC,uvAC intra: 86.7% 94.3% 78.8% inter: 12.6% 15.0% 4.5%&#xA;[libx264 @ 000001ef1288ec00] i16 v,h,dc,p: 17% 42% 14% 28%&#xA;[libx264 @ 000001ef1288ec00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 19% 11%  6%  7%  8%  8%  9%  9%&#xA;[libx264 @ 000001ef1288ec00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 18% 12%  6%  9%  9%  8%  8%  7%&#xA;[libx264 @ 000001ef1288ec00] i8c dc,h,v,p: 44% 24% 20% 12%&#xA;[libx264 @ 000001ef1288ec00] Weighted P-Frames: Y:0.0% UV:0.0%&#xA;[libx264 @ 000001ef1288ec00] ref P L0: 78.3%  9.7%  8.8%  3.2%&#xA;[libx264 @ 000001ef1288ec00] ref B L0: 92.5%  6.0%  1.5%&#xA;[libx264 @ 000001ef1288ec00] ref B L1: 97.1%  2.9%&#xA;[libx264 @ 000001ef1288ec00] kb/s:819.63&#xA;[aac @ 000001ef128f7c80] Qavg: 452.137&#xA;

    &#xA;

    When I use the .on(&#x27;start&#x27;, (cmdline) => console.log(cmdline))} code with the -f hls command, the error "Output format hls is not available" appears, as previously mentioned. But my Console.log looks like this if I run my code without using -f hls command :

    &#xA;

    Without -f hls command

    &#xA;

    await new Promise<void>((resolve, reject) => {&#xA;  ffmpeg(filePath)&#xA;    .outputOptions([&#xA;      `-c:v h264`,&#xA;      `-b:v ${videoBitrate}`,&#xA;      `-c:a aac`,&#xA;      `-b:a ${audioBitrate}`,&#xA;      `-vf scale=${resolution}`,&#xA; &#xA;      `-hls_time 10`,&#xA;      `-hls_list_size 0`,&#xA;      `-hls_segment_filename ${directoryPath}/${segmentFileName}`,&#xA;    ])&#xA;    .output(`${directoryPath}/${outputFileName}`)&#xA;    .on(&#x27;start&#x27;, (cmdline) => console.log(cmdline)) &#xA;    .on("end", () => resolve())&#xA;    .on("error", (err) => reject(err))&#xA;    .run();&#xA;});&#xA;</void>

    &#xA;

    Console.log is :

    &#xA;

    `Starting script&#xA;File saved successfully: C:\Users\asifa\Desktop\Genius Grid\Transcode-service\input\c9fcf43726e617a295b203d5acb7b81658b5f05f80eafc74cee21b053422fef1.mp4&#xA;HLS conversion starting for 256x144&#xA;ffmpeg -i C:\Users\asifa\Desktop\Genius Grid\Transcode-service\input\c9fcf43726e617a295b203d5acb7b81658b5f05f80eafc74cee21b053422fef1.mp4 -y -c:v h264 -b:v 200k -c:a aac -b:a 64k -vf scale=256x144 -hls_time 10 -hls_list_size 0 -hls_segment_filename C:\Users\asifa\Desktop\Genius Grid\Transcode-service\output\hls\c9fcf43726e617a295b203d5acb7b81658b5f05f80eafc74cee21b053422fef1/c9fcf43726e617a295b203d5acb7b81658b5f05f80eafc74cee21b053422fef1_256x144_%03d.ts C:\Users\asifa\Desktop\Genius Grid\Transcode-service\output\hls\c9fcf43726e617a295b203d5acb7b81658b5f05f80eafc74cee21b053422fef1/c9fcf43726e617a295b203d5acb7b81658b5f05f80eafc74cee21b053422fef1_256x144.m3u8&#xA;Error transcoding with FFmpeg: Error: ffmpeg exited with code 2880417800: Unrecognized option &#x27;hls_segment_filename C:\Users\asifa\Desktop\Genius Grid\Transcode-service\output\hls\c9fcf43726e617a295b203d5acb7b81658b5f05f80eafc74cee21b053422fef1/c9fcf43726e617a295b203d5acb7b81658b5f05f80eafc74cee21b053422fef1_256x144_%03d.ts&#x27;.&#xA;Error splitting the argument list: Option not found`&#xA;

    &#xA;