Recherche avancée

Médias (21)

Mot : - Tags -/Nine Inch Nails

Autres articles (37)

  • XMP PHP

    13 mai 2011, par

    Dixit Wikipedia, XMP signifie :
    Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
    Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
    XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)

  • Participer à sa documentation

    10 avril 2011

    La documentation est un des travaux les plus importants et les plus contraignants lors de la réalisation d’un outil technique.
    Tout apport extérieur à ce sujet est primordial : la critique de l’existant ; la participation à la rédaction d’articles orientés : utilisateur (administrateur de MediaSPIP ou simplement producteur de contenu) ; développeur ; la création de screencasts d’explication ; la traduction de la documentation dans une nouvelle langue ;
    Pour ce faire, vous pouvez vous inscrire sur (...)

  • Encodage et transformation en formats lisibles sur Internet

    10 avril 2011

    MediaSPIP transforme et ré-encode les documents mis en ligne afin de les rendre lisibles sur Internet et automatiquement utilisables sans intervention du créateur de contenu.
    Les vidéos sont automatiquement encodées dans les formats supportés par HTML5 : MP4, Ogv et WebM. La version "MP4" est également utilisée pour le lecteur flash de secours nécessaire aux anciens navigateurs.
    Les documents audios sont également ré-encodés dans les deux formats utilisables par HTML5 :MP3 et Ogg. La version "MP3" (...)

Sur d’autres sites (6178)

  • ffmpeg when asked to map a .mov file's streams 0,1,3 actually maps streams 0,1,2

    15 septembre 2023, par user2258729

    I'm trying the following :

    


    Start with in.mov which has 4 streams 0:0 - 0:3.

    


    Audio, Video, Data (unknown), and mJpeg.

    


    Trying to map 0:0, 0:1, and 0:3 into out013.mov.

    


    ffmpeg -i in.mov -map 0 -map -0:2 -c copy out013.mov

    


    or

    


    ffmpeg -i in.mov -map 0:0 -map 0:1 -map 0:2 -c copy out013.mov

    


    ffmpeg tells me that 3 streams are mapped :

    


      Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
  Stream #0:3 -> #0:2 (copy)


    


    ffprobe disagrees. According to it what really happened was :

    


      Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
  Stream #0:2 -> #0:2 (copy)


    


    "Who needs a thumbnail image anyways, screw it !" I said. "Let's just get rid of the data."

    


    ffmpeg -i out013.mov -map 0:0 -map 0:1 -c copy out01.mov

    


    ffmpeg tells me that 2 streams are mapped :

    


      Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)


    


    ffprobe disagrees. According to it what really happened was :

    


      Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
  Stream #0:2 -> #0:2 (copy)


    


    Seems like I can't rid myself of that data stream (0:2).

    


    Below is the output from the ffprobe and ffmpeg for the first scenario.

    


    Any ideas ?

    



    


    ffprobe in.mov

    


    ffprobe version 2023-09-07-git-9c9f48e7f2-essentials_build-www.gyan.dev Copyright (c) 2007-2023 the FFmpeg developers
  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      58. 19.100 / 58. 19.100
  libavcodec     60. 26.100 / 60. 26.100
  libavformat    60. 11.100 / 60. 11.100
  libavdevice    60.  2.101 / 60.  2.101
  libavfilter     9. 11.100 /  9. 11.100
  libswscale      7.  3.100 /  7.  3.100
  libswresample   4. 11.100 /  4. 11.100
  libpostproc    57.  2.100 / 57.  2.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000023b088f3300] stream 0, timescale not set
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'in.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 0
    compatible_brands: qt
    creation_time   : 2023-08-22T21:23:09.000000Z
    title           : Redacted
    com.apple.quicktime.displayname: Redacted
    com.apple.quicktime.title: Redacted
  Duration: 00:00:30.03, start: 0.000000, bitrate: 152583 kb/s
  Stream #0:0[0x1](eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, 2 channels, s32 (24 bit), 2304 kb/s (default)
    Metadata:
      creation_time   : 2023-08-22T21:23:09.000000Z
      handler_name    : Core Media Audio
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Video: prores (Standard) (apcn / 0x6E637061), yuv422p10le(bt709, progressive), 1920x1080, 150213 kb/s, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 30k tbn (default)
    Metadata:
      creation_time   : 2023-08-22T21:23:09.000000Z
      handler_name    : Core Media Video
      vendor_id       : [0][0][0][0]
      encoder         : Apple ProRes 422
      timecode        : 00:00:00:00
  Stream #0:2[0x3](und): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
    Metadata:
      creation_time   : 2023-08-22T21:23:09.000000Z
      handler_name    : Core Media Time Code
      timecode        : 00:00:00:00
  Stream #0:3[0x0]: Video: mjpeg (Progressive), yuvj420p(pc, bt470bg/unknown/unknown), 1920x1080 [SAR 72:72 DAR 16:9], 90k tbr, 90k tbn (attached pic)
Unsupported codec with id 0 for input stream 2


    



    


    ffmpeg -i in.mov -map 0:0 -map 0:1 -map 0:3 -c copy out013.mov

    


    ffmpeg version 2023-09-07-git-9c9f48e7f2-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      58. 19.100 / 58. 19.100
  libavcodec     60. 26.100 / 60. 26.100
  libavformat    60. 11.100 / 60. 11.100
  libavdevice    60.  2.101 / 60.  2.101
  libavfilter     9. 11.100 /  9. 11.100
  libswscale      7.  3.100 /  7.  3.100
  libswresample   4. 11.100 /  4. 11.100
  libpostproc    57.  2.100 / 57.  2.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001f92e383880] stream 0, timescale not set
[aist#0:0/pcm_s24le @ 000001f92e50f400] Guessed Channel Layout: stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'in.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 0
    compatible_brands: qt
    creation_time   : 2023-08-22T21:23:09.000000Z
    title           : Redacted
    com.apple.quicktime.displayname: Redacted
    com.apple.quicktime.title: Redacted
  Duration: 00:00:30.03, start: 0.000000, bitrate: 152583 kb/s
  Stream #0:0[0x1](eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, 2 channels, s32 (24 bit), 2304 kb/s (default)
    Metadata:
      creation_time   : 2023-08-22T21:23:09.000000Z
      handler_name    : Core Media Audio
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Video: prores (Standard) (apcn / 0x6E637061), yuv422p10le(bt709, progressive), 1920x1080, 150213 kb/s, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 30k tbn (default)
    Metadata:
      creation_time   : 2023-08-22T21:23:09.000000Z
      handler_name    : Core Media Video
      vendor_id       : [0][0][0][0]
      encoder         : Apple ProRes 422
      timecode        : 00:00:00:00
  Stream #0:2[0x3](und): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
    Metadata:
      creation_time   : 2023-08-22T21:23:09.000000Z
      handler_name    : Core Media Time Code
      timecode        : 00:00:00:00
  Stream #0:3[0x0]: Video: mjpeg (Progressive), yuvj420p(pc, bt470bg/unknown/unknown), 1920x1080 [SAR 72:72 DAR 16:9], 90k tbr, 90k tbn (attached pic)
Output #0, mov, to 'out013.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 0
    compatible_brands: qt
    com.apple.quicktime.title: Redacted
    title           : Redacted
    com.apple.quicktime.displayname: Redacted
    encoder         : Lavf60.11.100
  Stream #0:0(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, stereo, s32 (24 bit), 2304 kb/s (default)
    Metadata:
      creation_time   : 2023-08-22T21:23:09.000000Z
      handler_name    : Core Media Audio
      vendor_id       : [0][0][0][0]
  Stream #0:1(und): Video: prores (Standard) (apcn / 0x6E637061), yuv422p10le(bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 150213 kb/s, 29.97 fps, 29.97 tbr, 30k tbn (default)
    Metadata:
      creation_time   : 2023-08-22T21:23:09.000000Z
      handler_name    : Core Media Video
      vendor_id       : [0][0][0][0]
      encoder         : Apple ProRes 422
      timecode        : 00:00:00:00
  Stream #0:2: Video: mjpeg (Progressive) (jpeg / 0x6765706A), yuvj420p(pc, bt470bg/unknown/unknown), 1920x1080 [SAR 72:72 DAR 16:9], q=2-31, 90k tbr, 90k tbn (attached pic)
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
  Stream #0:3 -> #0:2 (copy)
Press [q] to stop, [?] for help
[out#0/mov @ 000001f92e398340] video:550881kB audio:8446kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
frame=  900 fps=0.0 q=-1.0 Lq=-1.0 size=  559116kB time=00:00:30.02 bitrate=152567.6kbits/s speed= 117x


    



    


    ffprobe out013.mov

    


    ffprobe version 2023-09-07-git-9c9f48e7f2-essentials_build-www.gyan.dev Copyright (c) 2007-2023 the FFmpeg developers
  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-dxva2 --enable-d3d11va --enable-libvpl --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      58. 19.100 / 58. 19.100
  libavcodec     60. 26.100 / 60. 26.100
  libavformat    60. 11.100 / 60. 11.100
  libavdevice    60.  2.101 / 60.  2.101
  libavfilter     9. 11.100 /  9. 11.100
  libswscale      7.  3.100 /  7.  3.100
  libswresample   4. 11.100 /  4. 11.100
  libpostproc    57.  2.100 / 57.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'out013.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 512
    compatible_brands: qt
    title           : Redacted
    encoder         : Lavf60.11.100
    timecode        : 00:00:00:00
  Duration: 00:00:30.03, start: 0.000000, bitrate: 152523 kb/s
  Stream #0:0[0x1](eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, stereo, s32 (24 bit), 2304 kb/s (default)
    Metadata:
      handler_name    : Core Media Audio
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2]: Video: prores (Standard) (apcn / 0x6E637061), yuv422p10le(bt709, progressive), 1920x1080, 150213 kb/s, SAR 1:1 DAR 16:9, 29.97 fps, 29.97 tbr, 30k tbn (default)
    Metadata:
      handler_name    : Core Media Video
      vendor_id       : FFMP
      encoder         : Apple ProRes 422
      timecode        : 00:00:00:00
  Stream #0:2[0x4](eng): Data: none (tmcd / 0x64636D74), 0 kb/s
    Metadata:
      handler_name    : Core Media Video
      timecode        : 00:00:00:00
Unsupported codec with id 0 for input stream 2



    


  • GDPR Compliance Checklist : A Detailed Walkthrough

    14 septembre 2023, par Erin — GDPR

    As digital transformation drives global economies, data has become a valuable currency to businesses of all shapes and sizes. As a result, the complex issue of data privacy is often in the spotlight.

    The General Data Protection Regulation (GDPR) is the key legal framework in the European Union to protect individual privacy and regulate business data handling. 

    Compliance with the GDPR is not just a legal mandate, it’s also good business. An 86% majority of users want more control over their data and 47% of users have switched providers over data privacy concerns.

    To help guide your business decisions around user privacy, this article will cover the key principles of GDPR, including a comprehensive GDPR compliance checklist.

    The key principles and requirements of GDPR

    Before we can translate GDPR’s objectives into practical steps, let’s begin with the defining features and key principles.

    GDPR : An overview

    The GDPR bolsters and unifies data protection standards for everyone within the EU. Enacted in 2018, it represented a seismic shift for companies and public authorities alike in protecting personal information. Its primary objective is to offer greater control to individuals over their data and to hold organisations accountable for its protection.

    GDPR establishes a legal framework that mandates corporate compliance with key principles to ensure user data security, transparency and choice. It sets the terms for your organisation’s privacy practices and the landscape of legal obligations you must navigate in data handling. 

    Key principles of GDPR

    There are seven core principles pivotal to GDPR compliance, which provide a roadmap for ethical and legal data practices.

    An infographic showing the 7 core principles of GDPR which are
    • Lawfulness, fairness and transparency : This principle demands lawful and fair processing of personal data. Companies should be transparent about their data processing activities, providing clear information in an accessible form.
    • Purpose limitation : Personal data should be collected for explicit, legitimate purposes and not further processed in a way incompatible with those purposes. This demands careful planning of data processing activities.
    • Data minimisation : Companies should only collect personal data that are necessary for their specified purposes, as anything more than this is illegal. This principle emphasises the importance of limiting scope, rather than performing blanket data collection.
    • Accuracy : This principle calls for maintaining data that is accurate, up-to-date and not misleading. Regular internal audits and updates are crucial to following this principle.
    • Storage limitation : Personal data should only be kept for as long as necessary for the purposes for which it was collected. This underscores the need for a detailed retention policy in your GDPR compliance efforts.
    • Integrity and confidentiality : Companies should protect personal data from unauthorised or unlawful processing and accidental loss or damage. Your organisation’s technical security measures play a vital role in this.
    • Accountability : Organisations should be able to demonstrate their compliance with GDPR principles. This underscores the importance of records of processing activities and regular audits as part of your compliance checklist.

    The importance of GDPR compliance for businesses

    Embracing GDPR compliance isn’t merely a matter of avoiding penalties — it’s a commitment to principles that reflect integrity, transparency and respect for personal data. At Matomo, we champion these principles, empowering companies with powerful and compliant web analytics. We make the compliance journey accessible and straightforward, making sure website analytics aligns with legal obligations and ethical practices.

    The implications of non-compliance

    It’s easy to highlight the dramatic fines imposed on tech giants such as Google and Meta. However, it’s essential to recognise that GDPR compliance extends to all companies, including small businesses — for whom even smaller fines can have a significant impact.

    The implications of non-compliance aren’t limited to financial penalties alone, either. Failing to meet obligations can tarnish reputations, erode trust and hinder business activities. Non-compliance could lead to a breach of privacy policy, causing a ripple effect that may be challenging to overcome.

    The potential benefits of being GDPR compliant

    Adhering to GDPR regulations is more than a checkbox on a form — it’s a comprehensive approach to handling personal data responsibly. It fosters trust, opens doors to European customers and builds enduring relationships with individuals whose rights are protected. In fulfilling these obligations and practices, businesses not only meet legal requirements but also foster a culture of ethical conduct and business success.

    Comprehensive GDPR compliance checklist

    Ensuring GDPR compliance may seem like a complex task, but this detailed checklist will simplify your journey. From consent management to data security, we’ve got you covered.

    A sample of a GDPR compliance checklist, created by summarizing the points in this section of this article.

    Establish personal data collection and consent management

    When it comes to GDPR compliance, not all consent is created equal. Two distinct forms exist : explicit consent and implied consent. But what exactly sets them apart, and why does it matter to your organisational measures ?

    Explicit consent from users means that the individual has unequivocally agreed to the processing of personal data. It’s an unambiguous agreement, often obtained through a deliberate action like ticking a box. Details are paramount, as the person giving consent must be fully informed about the processing activities.

    • Inform clearly : Use plain language to explain how data will be used and be transparent about processing practices.
    • Obtain active agreement : Use forms or checkboxes (not pre-ticked boxes) to ensure active participation and that you are obtaining explicit user consent.
    • Document it : Keep records of consent, including when and how it was obtained, as a crucial part of your compliance efforts.
    • Facilitate withdrawal : Use consent mechanisms that allow for easy withdrawal of consent for users who decide to opt out.
    • Manage consent forms : Tools like Matomo’s Consent Management Platform can provide accessible forms that not only enhance transparency but also empower individuals, allowing them to feel in control of their details and rights.

    Facilitate data subject rights and access requests

    GDPR emphasises individual rights by empowering users with control over their personal data processing. Here’s a succinct breakdown :

    • Know the rights of individuals : GDPR outlines individual rights such as data access, error rectification, erasure and data portability, allowing individuals to guide how their details are used, processed or shared.
    • Simplify complying with access requests : Companies must respond to access requests efficiently, usually within one month, without undue delay, reflecting organisational measures of respect.
    • Employ ethical and compliant digital analytics : As a leader in ethical web analytics, Matomo subtly aids in compliance efforts, protecting privacy without compromising functionality.

    These practices align with a modern understanding of privacy, emphasising more than legal obligations. By employing Matomo, companies simplify the processing of access requests, which fosters transparency and user control over personal data.

    Implement clear data privacy practices

    Data privacy and consent mechanisms are key tools for compliance. Crafting a comprehensive privacy policy helps protect individuals’ rights and provides integrity in personal data processing. Designing sites and applications with data protection in mind ensures your compliance from the ground-up.

    • Create an easy to understand privacy policy : Create a clear, GDPR-compliant privacy policy that details processing activities, storage limitations and organisational measures, all in plain language. 

    By implementing these steps, companies not only adhere to their legal obligations but also foster an inclusive community that values privacy and ethics. Whether you’re an IT professional or marketer, Matomo’s platform can guide you through the maze of GDPR complexities, inspiring positive change towards responsible data handling.

    Implement data storage limitations and robust security

    Data storage and security are foundational elements of compliance efforts. Companies must foster a proactive approach to preventing data breaches by understanding potential cyberthreats and enforcing appropriate security controls across applications and infrastructures.

    An infographic of a statistic from the General Data Protection Regulation
    • Implement storage limitations : Define limitations on time and scope to avert undue retention and protect personal details.
    • Embrace technical security : Utilise secure processes like encryption, access controls, firewalls and so on, bolstering protection by design.
    • Establish a comprehensive security policy : Align security practices with privacy laws and regulations, including GDPR.
    • React swiftly to personal data breaches : A security breach requires an immediate response, without undue delay, to honour legal obligations and maintain customer trust. Develop a plan for notifying supervisory authorities and affected individuals promptly in the event of a personal data breach.

    Security measures for personal data are about more than just fulfilling legal obligations — they’re about building a safe and ethical digital ecosystem that instils confidence in customers.

    Keep cross-border data transfers in mind

    Cross-border data transfers present a unique challenge, with increased complexity due to varying data privacy laws across regions. You must understand the respective regulations of participating countries and align your compliance practices appropriately to respect all that are relevant to your organisation. 

    For example, data privacy laws in the US are generally more lax than the GDPR so US companies taking on EU customers must hold themselves to a higher standard, with stricter controls placed on their data processing practices.

    • Evaluate third-party services : For companies utilising global networks of third-party services, be sure to select providers that maintain ongoing knowledge and vigilance towards privacy law compliance. Platforms like Matomo that innately prioritise transparency and privacy, have implemented robust security measures, and document transfers diligently are worth considering. 

    Conduct internal audits and compliance checks

    Compliance is not a “one and done” setup, but an ongoing journey requiring regular internal audits. Systems settings can drift over time, and datasets can become increasingly complex as companies scale. Human error happens, too. Audits identify gaps in your compliance efforts to guide actionable improvements. 

    • Conduct regular audits : Stay proactive with internal audits and systematic monitoring, adapting policies to align with privacy laws. Clarity in privacy notices and cookie banners fosters confidence, while regular assessments ensure alignment with GDPR requirements.
    • Ensure transparency : Platforms like Matomo simplify audits, offering valuable insights and support for ethical web analytics and transparency. The right platform can increase visibility and make generating your reports easier. Integrating these processes guarantees GDPR-aligned measures while emphasising data ownership and customer-centric values.
    • Educate and train staff : Engage in ongoing staff education and training on GDPR compliance, privacy policies, and their related responsibilities.

    Case study : GDPR compliance in action

    Achieving compliance with the General Data Protection Regulation (GDPR) stands as a paramount concern for businesses worldwide. Both small and large companies have embarked on this journey, implementing measures and revising privacy policies to conform to these regulations.

    Typeform

    Based in Ireland, Typeform, a company dealing with online forms, took GDPR compliance very seriously. Here’s how they achieved it :

    1. Conducting a data protection impact assessment (DPIA) : This vital step helped them assess personal data breach risks and enabled systematic monitoring of potential challenges.
    2. Implementing technical and organisational measures : Security measures such as encryption, access control and drafting a security policy reinforced their personal data processing mechanisms.
    3. Revamping privacy policy : They transformed their privacy policy with accessible, plain language, making it clear and user-friendly.
    4. Appointing a data protection officer (DPO) : This aligned with their core activities and strengthened their compliance efforts.

    The benefits for Typeform were profound :

    • Enhanced customer trust and confidence
    • Reduced risk of fines and penalties
    • Bolstered data security and privacy
    • Improved brand reputation, positioning them favourably among European customers

    Ensuring GDPR Compliance with Matomo Analytics

    Matomo is more than just an analytics platform ; it is a trusted guide in the realm of data privacy. Our mission is to empower users with full data ownership, fostering an inclusive digital community built on trust and transparency. Our suite of features has been meticulously designed to align with GDPR regulations, ensuring that businesses can navigate the complexities of compliance with ease and confidence.

    1. Data Anonymisation

    Matomo’s focus on ethical digital analytics means the platform allows for the anonymisation of user data, ensuring that individual identities remain protected.

    2. Robust GDPR Management

    Beyond just a GDPR Manager, Matomo provides an encompassing framework to streamline compliance activities. From managing user consent to meticulous record-keeping of processing activities, Matomo ensures you are always a step ahead.

    3. User Empowerment with Opt-Out Capabilities

    Matomo respects user choices. The platform offers users an easy way to opt-out of all tracking, giving them control over their data.

    4. First-party Cookies as the Standard

    By using first-party cookies by default, Matomo ensures data remains with the website owner, minimising potential breaches or misuse.

    5. Transparent Data Collection Practices

    Users have the right to know their data. With Matomo, they can view the exact data being collected, reinforcing a transparent relationship between businesses and their users.

    6. Visitor Data Management

    Upon request, Matomo offers capabilities to delete visitor data, aligning with the GDPR’s right to be forgotten.

    7. Data Ownership and Privacy Assurance

    Unlike other web analytics platforms, with Matomo, you retain full ownership of your data and can rest assured that it is not being used for other purposes such as advertising.

    8. IP Anonymisation

    Protecting user location details, Matomo anonymises IP addresses, adding an additional layer of privacy.

    9. Customisable Data Visualisation

    Recognising that not all data is essential, Matomo allows the disabling of visitor logs and profiles, giving businesses the flexibility to decide what data they track.

    By taking a holistic approach to GDPR compliance, Matomo streamlines the processes for you and ensures you follow the legal and ethical best practices.

    Screenshot showing the advanced GDPR manager in the Matomo dashboard

    Start your GDPR compliance journey today

    The global focus on data privacy requires using a GDPR compliance checklist. With 137 countries implementing data protection laws (UN), companies must align with international standards. Compliance, after all, goes beyond avoiding breaches— it’s about upholding privacy and building trust.

    As your trusted guide, Matomo invites you on this GDPR journey. With us, you’ll uphold privacy obligations and manage your processing activities effectively. Compliance isn’t a one-time task but a continuous journey to enhance practices and align with individual rights. Start this vital journey with Matomo today. Try it free for 21-days. No credit card required.

    Disclaimer

    We are not lawyers and don’t claim to be. The information provided here is to help give an introduction to GDPR. We encourage every business and website to take data privacy seriously and discuss these issues with your lawyer if you have any concerns.

  • FFMPEG error submitting a packet to the muxer

    27 juillet 2024, par Badgio10177

    I am attempting to stream video frames to a RTSP server using FFMPEG. I instantiate an ffmpeg pipeline in c++. There are times when the process works perfectly and other times I get the error Error submitting a packet to the muxer : Broken pipe. Error muxing a packet. What uis strange is that there are times when the stream works and times when it does not which leads me to believe that the FFMPEG parameters that I set are not necessarily incorrect.

    


    I am using a mex function within MATLAB to take in a frame and stream it.

    


    // Global variables&#xA;FILE* openPipeLine = NULL;&#xA;&#xA;void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[], int frameWidth, int frameHeight)&#xA;{&#xA;&#xA;    Ptr<mat> inputFrame = ocvMxArrayToImage_uint8(prhs[0], true);&#xA;    Mat processedFrame = *inputFrame;&#xA;&#xA;    // Check if FFMPEG process has been started&#xA;    if (!openPipeLine)&#xA;    {&#xA;        openPipeLine = _popen("ffmpeg -report -f rawvideo -r 10 -video_size 1280x720 -pixel_format bgr24 -i pipe: -vcodec libx264 -pix_fmt yuv420p -f rtsp rtsp://localhost:8554/mystream 2> log.txt", "wb");&#xA;&#xA;    }&#xA;&#xA;    // Write the frame data to the pipeline&#xA;    fwrite(processedFrame.data, 1, frameWidth * frameHeight * 3, openPipeLine);&#xA;    mexAtExit(exitFcn);&#xA;}&#xA;</mat>

    &#xA;

    Below is the full report from the ffmpeg process. Do my operating system variables change from time to time which cause the stream to work at times and break at others ? I am using Windows 10.

    &#xA;

    Log level: 48&#xA;Command line:&#xA;ffmpeg -report -f rawvideo -r 10 -video_size 1280x720 -pixel_format bgr24 -i pipe: -vcodec libx264 -pix_fmt yuv420p -f rtsp rtsp://localhost:8554/mystream&#xA;&#xA;  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)&#xA;  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-lib  libavutil      58. 16.101 / 58. 16.101&#xA;  libavcodec     60. 23.100 / 60. 23.100&#xA;  libavformat    60. 10.100 / 60. 10.100&#xA;  libavdevice    60.  2.101 / 60.  2.101&#xA;  libavfilter     9. 11.100 /  9. 11.100&#xA;  libswscale      7.  3.100 /  7.  3.100&#xA;  libswresample   4. 11.100 /  4. 11.100&#xA;  libpostproc    57.  2.100 / 57.  2.100&#xA;Splitting the commandline.&#xA;&#xA;Successfully parsed a group of options.&#xA;Opening an input file: pipe:.&#xA;[rawvideo @ 00000182dba5efc0] Opening &#x27;pipe:&#x27; for reading&#xA;[pipe @ 00000182dba611c0] Setting default whitelist &#x27;crypto,data&#x27;&#xA;[rawvideo @ 00000182dba5efc0] Before avformat_find_stream_info() pos: 0 bytes read:65536 seeks:0 nb_streams:1&#xA;[rawvideo @ 00000182dba5efc0] All info found&#xA;[rawvideo @ 00000182dba5efc0] After avformat_find_stream_info() pos: 2764800 bytes read:2764800 seeks:0 frames:1&#xA;Input #0, rawvideo, from &#x27;pipe:&#x27;:&#xA;  Duration: N/A, start: 0.000000, bitrate: 221184 kb/s&#xA;  Stream #0:0, 1, 1/10: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 1280x720, 221184 kb/s, 10 tbr, 10 tbn&#xA;Successfully opened the file.&#xA;Parsing a group of options: output url rtsp://192.168.0.2:8554/mystream.&#xA;Applying option vcodec (force video codec (&#x27;copy&#x27; to copy stream)) with argument libx264.&#xA;Applying option pix_fmt (set pixel format) with argument yuv420p.&#xA;Applying option f (force format) with argument rtsp.&#xA;Successfully parsed a group of options.&#xA;Opening an output file: rtsp://192.168.0.2:8554/mystream.&#xA;[out#0/rtsp @ 00000182dba72c00] No explicit maps, mapping streams automatically...&#xA;[vost#0:0/libx264 @ 00000182dba75cc0] Created video stream from input stream 0:0&#xA;Successfully opened the file.&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))&#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;detected 16 logical cores&#xA;[graph 0 input from stream 0:0 @ 00000182dba86180] Setting &#x27;video_size&#x27; to value &#x27;1280x720&#x27;&#xA;[graph 0 input from stream 0:0 @ 00000182dba86180] Setting &#x27;pix_fmt&#x27; to value &#x27;3&#x27;&#xA;[graph 0 input from stream 0:0 @ 00000182dba86180] Setting &#x27;time_base&#x27; to value &#x27;1/10&#x27;&#xA;[graph 0 input from stream 0:0 @ 00000182dba86180] Setting &#x27;pixel_aspect&#x27; to value &#x27;0/1&#x27;&#xA;[graph 0 input from stream 0:0 @ 00000182dba86180] Setting &#x27;frame_rate&#x27; to value &#x27;10/1&#x27;&#xA;[graph 0 input from stream 0:0 @ 00000182dba86180] w:1280 h:720 pixfmt:bgr24 tb:1/10 fr:10/1 sar:0/1&#xA;[format @ 00000182dba86540] Setting &#x27;pix_fmts&#x27; to value &#x27;yuv420p&#x27;&#xA;[auto_scale_0 @ 00000182dba869c0] w:iw h:ih flags:&#x27;&#x27; interl:0&#xA;[format @ 00000182dba86540] auto-inserting filter &#x27;auto_scale_0&#x27; between the filter &#x27;Parsed_null_0&#x27; and the filter &#x27;format&#x27;&#xA;[AVFilterGraph @ 00000182dba49040] query_formats: 4 queried, 2 merged, 1 already done, 0 delayed&#xA;[auto_scale_0 @ 00000182dba869c0] w:1280 h:720 fmt:bgr24 sar:0/1 -> w:1280 h:720 fmt:yuv420p sar:0/1 flags:0x00000004&#xA;[libx264 @ 00000182dba76080] using mv_range_thread = 24&#xA;[libx264 @ 00000182dba76080] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512&#xA;[libx264 @ 00000182dba76080] profile High, level 3.1, 4:2:0, 8-bit&#xA;[libx264 @ 00000182dba76080] 264 - core 164 r3107 a8b68eb - H.264/MPEG-4 AVC codec - Copyleft 2003-2023 - 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=22 lookahead_threads=3 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=10 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00&#xA;[tcp @ 00000182dc5ce480] No default whitelist set&#xA;[tcp @ 00000182dc5ce480] Original list of addresses:&#xA;[tcp @ 00000182dc5ce480] Address 192.168.0.2 port 8554&#xA;[tcp @ 00000182dc5ce480] Interleaved list of addresses:&#xA;[tcp @ 00000182dc5ce480] Address 192.168.0.2 port 8554&#xA;[tcp @ 00000182dc5ce480] Starting connection attempt to 192.168.0.2 port 8554&#xA;[tcp @ 00000182dc5ce480] Successfully connected to 192.168.0.2 port 8554&#xA;[rtsp @ 00000182dba72d00] SDP:&#xA;v=0&#xA;&#xA;o=- 0 0 IN IP4 127.0.0.1&#xA;&#xA;s=No Name&#xA;&#xA;c=IN IP4 192.168.0.2&#xA;&#xA;t=0 0&#xA;&#xA;a=tool:libavformat 60.10.100&#xA;&#xA;m=video 0 RTP/AVP 96&#xA;&#xA;a=rtpmap:96 H264/90000&#xA;&#xA;a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z2QAH6zZQFAFuhAAAAMAEAAAAwFA8YMZYA==,aOvjyyLA; profile-level-id=64001F&#xA;&#xA;a=control:streamid=0&#xA;&#xA;&#xA;[rtp @ 00000182dc5cd040] No default whitelist set&#xA;[udp @ 00000182dba4b140] No default whitelist set&#xA;[udp @ 00000182dba4b140] end receive buffer size reported is 393216&#xA;[udp @ 00000182dc9bf040] No default whitelist set&#xA;[udp @ 00000182dc9bf040] end receive buffer size reported is 393216&#xA;Output #0, rtsp, to &#x27;rtsp://192.168.0.2:8554/mystream&#x27;:&#xA;  Metadata:&#xA;    encoder         : Lavf60.10.100&#xA;  Stream #0:0, 0, 1/90000: Video: h264, yuv420p(tv, progressive), 1280x720, q=2-31, 10 fps, 90k tbn&#xA;    Metadata:&#xA;      encoder         : Lavc60.23.100 libx264&#xA;    Side data:&#xA;      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A&#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840   &#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;[libx264 @ 00000182dba76080] frame=   0 QP=21.34 NAL=3 Slice:I Poc:0   I:3600 P:0    SKIP:0    size=135901 bytes&#xA;frame=    0 fps=0.0 q=25.0 size=       0kB time=-00:00:00.20 bitrate=  -0.0kbits/s speed=N/A    &#xA;[vost#0:0/libx264 @ 00000182dba75cc0] Error submitting a packet to the muxer: Broken pipe&#xA;[out#0/rtsp @ 00000182dba72c00] Error muxing a packet&#xA;[out#0/rtsp @ 00000182dba72c00] Terminating muxer thread&#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;[libx264 @ 00000182dba76080] frame=   1 QP=18.29 NAL=2 Slice:P Poc:2   I:2662 P:866  SKIP:72   size=54835 bytes&#xA;frame=    1 fps=0.0 q=25.0 size=N/A time=-00:00:00.10 bitrate=N/A speed=N/A    &#xA;No more output streams to write to, finishing.&#xA;&#xA;Conversion failed!&#xA;&#xA;

    &#xA;