Recherche avancée

Médias (0)

Mot : - Tags -/xmlrpc

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

Autres articles (54)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 est la première version de MediaSPIP stable.
    Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

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

Sur d’autres sites (6916)

  • WIndows findstr

    6 juillet 2015, par Brett

    I want to search a text file for a string with this command

    findstr silence_start:* test.txt

    here is the out put

    C:\Users\brett\Desktop\masterpuppets>findstr  ilence_start:* test.txt
    [silencedetect @ 00000000042eb5c0] silence_start: -0.00260771
    [silencedetect @ 00000000042eb5c0] silence_start: 310.019
    [silencedetect @ 00000000042eb5c0] silence_start: 822.097
    [silencedetect @ 00000000042eb5c0] silence_start: 1211.84
    [silencedetect @ 00000000042eb5c0] silence_start: 1605.72
    [silencedetect @ 00000000042eb5c0] silence_start: 2443.7
    [silencedetect @ 00000000042eb5c0] silence_start: 2946.45
    [silencedetect @ 00000000042eb5c0] silence_start: 2955.28
    [silencedetect @ 00000000042eb5c0] silence_start: 3279.93

    What i need are the numbers after silence_start : and i want to store them in an array. Ive never tried this in windows and are stumped can this be done from the command line of batch file ? Any help would be great. Im attempting to slice up the mp3 at the silences...

    Updated output and the content of the test file..
    First the test file im getting the information from

    ffmpeg version N-63968-g73d820e Copyright (c) 2000-2014 the FFmpeg developers
     built on Jun 15 2014 00:52:21 with gcc 4.8.3 (GCC)
     configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-decklink --enable-zlib
     libavutil      52. 89.100 / 52. 89.100
     libavcodec     55. 66.101 / 55. 66.101
     libavformat    55. 43.100 / 55. 43.100
     libavdevice    55. 13.101 / 55. 13.101
     libavfilter     4.  8.100 /  4.  8.100
     libswscale      2.  6.100 /  2.  6.100
     libswresample   0. 19.100 /  0. 19.100
     libpostproc    52.  3.100 / 52.  3.100
    Input #0, mp3, from 'mp.mp3':
     Metadata:
       major_brand     : dash
       minor_version   : 0
       compatible_brands: iso6mp41
       encoder         : Lavf55.43.100
     Duration: 00:55:00.08, start: 0.025057, bitrate: 320 kb/s
       Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
    Output #0, null, to 'pipe:':
     Metadata:
       major_brand     : dash
       minor_version   : 0
       compatible_brands: iso6mp41
       encoder         : Lavf55.43.100
       Stream #0:0: Audio: pcm_s16le, 44100 Hz, stereo, s16, 1411 kb/s
       Metadata:
         encoder         : Lavc55.66.101 pcm_s16le
    Stream mapping:
     Stream #0:0 -> #0:0 (mp3 (native) -> pcm_s16le (pcm_s16le))
    Press [q] to stop, [?] for help
    [silencedetect @ 00000000042eb5c0] silence_start: -0.00260771
    [silencedetect @ 00000000042eb5c0] silence_end: 0.601882 | silence_duration: 0.60449
    size=N/A time=00:03:00.19 bitrate=N/A    
    [silencedetect @ 00000000042eb5c0] silence_start: 310.019
    [silencedetect @ 00000000042eb5c0] silence_end: 311.772 | silence_duration: 1.75388
    size=N/A time=00:05:46.04 bitrate=N/A    
    size=N/A time=00:08:28.29 bitrate=N/A    
    size=N/A time=00:11:17.04 bitrate=N/A    
    [silencedetect @ 00000000042eb5c0] silence_start: 822.097
    [silencedetect @ 00000000042eb5c0] silence_end: 827.064 | silence_duration: 4.96694
    size=N/A time=00:14:09.05 bitrate=N/A    
    size=N/A time=00:16:46.36 bitrate=N/A    
    size=N/A time=00:19:36.63 bitrate=N/A    
    [silencedetect @ 00000000042eb5c0] silence_start: 1211.84
    [silencedetect @ 00000000042eb5c0] silence_end: 1214.96 | silence_duration: 3.11224
    size=N/A time=00:22:34.29 bitrate=N/A    
    size=N/A time=00:25:28.00 bitrate=N/A    
    [silencedetect @ 00000000042eb5c0] silence_start: 1605.72
    [silencedetect @ 00000000042eb5c0] silence_end: 1610.21 | silence_duration: 4.49673
    size=N/A time=00:28:29.95 bitrate=N/A    
    size=N/A time=00:31:33.69 bitrate=N/A    
    size=N/A time=00:34:28.03 bitrate=N/A    
    size=N/A time=00:37:29.50 bitrate=N/A    
    size=N/A time=00:40:09.74 bitrate=N/A    
    [silencedetect @ 00000000042eb5c0] silence_start: 2443.7
    [silencedetect @ 00000000042eb5c0] silence_end: 2445.32 | silence_duration: 1.62327
    size=N/A time=00:43:07.09 bitrate=N/A    
    size=N/A time=00:45:56.28 bitrate=N/A    
    size=N/A time=00:48:43.67 bitrate=N/A    
    [silencedetect @ 00000000042eb5c0] silence_start: 2946.45
    [silencedetect @ 00000000042eb5c0] silence_end: 2953.51 | silence_duration: 7.05673
    [silencedetect @ 00000000042eb5c0] silence_start: 2955.28
    [silencedetect @ 00000000042eb5c0] silence_end: 2955.83 | silence_duration: 0.552245
    size=N/A time=00:51:42.79 bitrate=N/A    
    [silencedetect @ 00000000042eb5c0] silence_start: 3279.93
    size=N/A time=00:54:45.44 bitrate=N/A    
    size=N/A time=00:55:00.05 bitrate=N/A    

    video:0kB audio:568485kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

    Next is my batch file with Michaels example

    @ECHO OFF
    SETLOCAL ENABLEDELAYEDEXPANSION
    SET count=0
    FOR /F "tokens=*" %%a IN ('findstr silence_start:* test.txt') DO (
       FOR /F "tokens=2 delims=:" %%b IN ("%%a") DO (
           SET number=%%b
           SET number=!number:~1!
           ECHO !number!
       )

    )

    running a test command from command line

    C:\Users\brett\Desktop\masterpuppets>findstr silence_start: test.txt
    [silencedetect @ 00000000042eb5c0] silence_start: -0.00260771
    [silencedetect @ 00000000042eb5c0] silence_start: 310.019
    [silencedetect @ 00000000042eb5c0] silence_start: 822.097
    [silencedetect @ 00000000042eb5c0] silence_start: 1211.84
    [silencedetect @ 00000000042eb5c0] silence_start: 1605.72
    [silencedetect @ 00000000042eb5c0] silence_start: 2443.7
    [silencedetect @ 00000000042eb5c0] silence_start: 2946.45
    [silencedetect @ 00000000042eb5c0] silence_start: 2955.28
    [silencedetect @ 00000000042eb5c0] silence_start: 3279.93

    Output from mybat.bat

    C:\Users\brett\Desktop\masterpuppets>mybat.bat
    -0.00260771
    3
    5
    4
    2
    8
    3
    2955.28
    1
  • FFMPEG - Why can't i record a video for more than 10 seconds ?

    12 février 2020, par gabriel

    I’m developing a screen recorder for windows with python but for some reason i can’t record the video for more than 10 seconds.However i can record the audio for more than 10 seconds.
    Also i’m using :

    FFMPEG - to record the video with mp4 extension

    PYAUDIO - to record the sound

    TKINTER - to design the GUI

    Since the problem is with the video recording i will leave the code that i used with ffmpeg :

    """
    cmdGen.py generates ffmpeg commands to record your screen

    """
    import os

    class cmdGen:
       def __init__(self):
           self.fps = 60
           self.source = "desktop"
           self.encoder = 'mpeg4'
           self.hwaccel = None
           self.drawMouse = 1
           self.enableWebcam = False
           self.audList = 0
       def config(self,
                   fps=None,source=None,encoder=None,
                   hwaccel='unchanged',drawMouse=None,
                   webcam=None,audList=None):
           if fps: self.fps = fps
           if source: self.source = source
           if encoder: self.encoder = encoder
           if hwaccel != 'unchanged': self.hwaccel = hwaccel
           if drawMouse: self.drawMouse = 0 if not self.drawMouse else 1
           if webcam: self.enableWebcam = bool(webcam)
           if audList: self.audList = audList
       def setSource(self,isWindow,windowName=""):
           if not isWindow:
               self.source = "desktop"
           else:
               self.source = "title="+windowName
       def setFps(self,fps):
           self.fps = fps
       def setEncode(self,encoder):
           self.encoder = encoder
       def getCmd(self,filename):
           print("ACK")
           finalCmd = ["ffmpeg.exe","-f","gdigrab"]
           finalCmd.extend(['-i',self.source])
           finalCmd.extend(['-framerate',str(self.fps)])
           finalCmd.extend(['-c:v',self.encoder])
           if self.encoder == 'mpeg4':
               finalCmd.extend(['-q:v','7'])
           if self.hwaccel:
               finalCmd.extend(['-hwaccel',self.hwaccel])
           finalCmd.extend(['-draw_mouse',str(self.drawMouse)])
           finalCmd.extend(["-y", filename])
           print(finalCmd)
           return finalCmd
       def getCvtCmd(self,filename):
               # if self.rcchecked.get():
               #     self.mergeProcess = subprocess.Popen(args= ["ffmpeg","-i",'tmp/tmp.mkv','-i','tmp/tmp.wav','-i','tmp/webcamtmp.mkv','-filter_complex','[2:v] scale=640:-1 [inner]; [0:0][inner] overlay=0:0 [out]',"-shortest",'-map','[out]','-y',"ScreenCaptures/"+self.filename])
               # else:
               #     self.mergeProcess = subprocess.Popen(args= ["ffmpeg","-i",'tmp/tmp.mkv','-i','tmp/tmp.wav',"-shortest",'-y',"ScreenCaptures/"+self.filename], startupinfo=startupinfo)
           print("ACK")
           finalCmd = ["ffmpeg.exe"]
           finalCmd.extend(['-i','tmp/tmp.mkv'])
           for i in range(len(self.audList)):
               finalCmd.extend(['-i','tmp/tmp_'+str(i)+'.wav'])
           if len(self.audList) > 0:
               finalCmd.extend(['-filter_complex','amerge=inputs='+str(len(self.audList)),'-ac',str(len(self.audList))])
           # finalCmd.extend(['-c:v',self.encoder])
           if self.enableWebcam:
               finalCmd.extend(['-i','tmp/webcamtmp.mkv','-filter_complex','[2:v] scale=640:-1 [inner]; [0:0][inner] '
                                                                           'overlay=0:0 [out]','-map','[out]'])

           #finalCmd.extend(['-shortest'])
           finalCmd.extend(["-y", filename])
           print(finalCmd)
           return finalCmd

    if __name__ == "__main__":
       cg = cmdGen()
       cg.setEncode("h264_nvenc")
       cg.setFps(60)
       cg.setSource(False)
       print(cg.getCmd("tmp"))

    Thanks guys

    Full log trying to record 1 minute :

    C:\Users\FabianoFreitas\AppData\Local\Programs\Python\Python37\python.exe C:/Users/FabianoFreitas/Desktop/PowerShare-v2.0/screenRecorder.py
    ACK
    ['ffmpeg.exe', '-f', 'gdigrab', '-i', 'desktop', '-framerate', '60', '-c:v', 'mpeg4', '-q:v', '7', '-draw_mouse', '1', '-y', 'tmp/tmp.mkv']
    * recording
    ACK
    ['ffmpeg.exe', '-i', 'tmp/tmp.mkv', '-i', 'tmp/tmp_0.wav', '-filter_complex', 'amerge=inputs=1', '-ac', '1', '-y', 'Videos/ScreenCapture24.mp4']
    * done recording
    ffmpeg version git-2020-02-05-e6891d1 Copyright (c) 2000-2020 the FFmpeg developers
     built with gcc 9.2.1 (GCC) 20200122
     configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
     libavutil      56. 39.100 / 56. 39.100
     libavcodec     58. 67.101 / 58. 67.101
     libavformat    58. 37.100 / 58. 37.100
     libavdevice    58.  9.103 / 58.  9.103
     libavfilter     7. 74.100 /  7. 74.100
     libswscale      5.  6.100 /  5.  6.100
     libswresample   3.  6.100 /  3.  6.100
     libpostproc    55.  6.100 / 55.  6.100
    Input #0, matroska,webm, from 'tmp/tmp.mkv':
     Metadata:
       ENCODER         : Lavf58.37.100
     Duration: N/A, start: 0.000000, bitrate: N/A
       Stream #0:0: Video: mpeg4 (Simple Profile), yuv420p, 2560x1080 [SAR 1:1 DAR 64:27], 29.97 fps, 29.97 tbr, 1k tbn, 30k tbc (default)
       Metadata:
         ENCODER         : Lavc58.67.101 mpeg4
    Guessed Channel Layout for Input Stream #1.0 : stereo
    Input #1, wav, from 'tmp/tmp_0.wav':
     Duration: 00:01:09.08, bitrate: 1411 kb/s
       Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
    Stream mapping:
     Stream #1:0 (pcm_s16le) -> amerge (graph 0)
     amerge (graph 0) -> Stream #0:0 (aac)
     Stream #0:0 -> #0:1 (mpeg4 (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    [Parsed_amerge_0 @ 00000218cb4c1640] No channel layout for input 1
    [libx264 @ 00000218cb4acdc0] using SAR=1/1
    [libx264 @ 00000218cb4acdc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
    [libx264 @ 00000218cb4acdc0] profile High, level 5.0, 4:2:0, 8-bit
    [libx264 @ 00000218cb4acdc0] 264 - core 159 - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - 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=12 lookahead_threads=2 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=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to 'Videos/ScreenCapture24.mp4':
     Metadata:
       encoder         : Lavf58.37.100
       Stream #0:0: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s
       Metadata:
         encoder         : Lavc58.67.101 aac
       Stream #0:1: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 2560x1080 [SAR 1:1 DAR 64:27], q=-1--1, 29.97 fps, 30k tbn, 29.97 tbc (default)
       Metadata:
         encoder         : Lavc58.67.101 libx264
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
    [matroska,webm @ 00000218cb44af00] File ended prematurely
    frame=  297 fps=113 q=-1.0 Lsize=    2325kB time=00:01:09.07 bitrate= 275.8kbits/s dup=22 drop=0 speed=26.2x    
    video:1713kB audio:591kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.900237%
    [aac @ 00000218cb4ab780] Qavg: 24995.135
    [libx264 @ 00000218cb4acdc0] frame I:4     Avg QP:15.13  size:199596
    [libx264 @ 00000218cb4acdc0] frame P:85    Avg QP:21.15  size:  9466
    [libx264 @ 00000218cb4acdc0] frame B:208   Avg QP:24.93  size:   725
    [libx264 @ 00000218cb4acdc0] consecutive B-frames:  5.1%  2.7%  6.1% 86.2%
    [libx264 @ 00000218cb4acdc0] mb I  I16..4: 48.0% 45.3%  6.7%
    [libx264 @ 00000218cb4acdc0] mb P  I16..4:  1.6%  1.9%  0.8%  P16..4:  1.4%  0.4%  0.3%  0.0%  0.0%    skip:93.7%
    [libx264 @ 00000218cb4acdc0] mb B  I16..4:  0.1%  0.1%  0.0%  B16..8:  3.0%  0.1%  0.0%  direct: 0.0%  skip:96.6%  L0:51.2% L1:48.3% BI: 0.6%
    [libx264 @ 00000218cb4acdc0] 8x8 transform intra:44.4% inter:69.1%
    [libx264 @ 00000218cb4acdc0] coded y,uvDC,uvAC intra: 23.8% 27.4% 19.5% inter: 0.2% 0.3% 0.1%
    [libx264 @ 00000218cb4acdc0] i16 v,h,dc,p: 54% 45%  1%  0%
    [libx264 @ 00000218cb4acdc0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 20% 41%  2%  2%  1%  2%  1%  5%
    [libx264 @ 00000218cb4acdc0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 35% 17%  2%  3%  3%  4%  2%  4%
    [libx264 @ 00000218cb4acdc0] i8c dc,h,v,p: 61% 25% 11%  2%
    [libx264 @ 00000218cb4acdc0] Weighted P-Frames: Y:0.0% UV:0.0%
    [libx264 @ 00000218cb4acdc0] ref P L0: 68.0%  6.3% 16.6%  9.1%
    [libx264 @ 00000218cb4acdc0] ref B L0: 70.2% 23.7%  6.1%
    [libx264 @ 00000218cb4acdc0] ref B L1: 91.1%  8.9%
    [libx264 @ 00000218cb4acdc0] kb/s:1415.80
  • What is data anonymization in web analytics ?

    11 février 2020, par Joselyn Khor — Analytics Tips, Privacy

    Collecting information via web analytics platforms is needed to help a website grow and improve. When doing so, it’s best to strike a balance between getting valuable insights, and keeping the trust of your users by protecting their privacy.

    This means not collecting or processing any personally identifiable information (PII). But what if your organisation requires you to collect PII ?

    That’s where data anonymization comes in.

    What is data anonymization ?

    Data anonymization makes identifiable information unidentifiable. This is done through data processing techniques which remove or modify PII data. So data becomes anonymous and can’t be linked to any individual.

    In the context of web analytics, data anonymization is handy because you can collect useful data while protecting the privacy of website visitors.

    Why is data anonymization important ?

    Through modern threats of identity theft, credit card fraud and the like, data anonymization is a way to protect the identity and privacy of individuals. As well as protect private and sensitive information of organisations. 

    Data anonymization lets you follow the many laws around the world which protect user privacy. These laws provide safeguards around collecting personal data or personally identifiable information (PII), so data anonymization is a good solution to ensure you’re not processing such sensitive information.

    In some cases, implementing data anonymization techniques means you can avoid having to show your users a consent screen. Which means you may not need to ask for consent in order to track data. This is a bonus as consent screens can annoy and stop people from engaging with your site.

    GDPR and data anonymization

    Matomo Analytics GDPR Google Analytics

    The GDPR is a law in the EU that limits the collection and processing of personal data. The aim is to give people more control over their online personal information. Which is why website owners need to follow certain rules to become GDPR compliant and protect user privacy. According to the GDPR, you can be fined up to 4% of your yearly revenue for data breaches or non-compliance. 

    In the case of web analytics, tools can be easily made compliant by following a number of steps

    This is why anonymizing data is a big deal.

    Anonymized data isn’t personal data according to the GDPR : 

    “The principles of data protection should therefore not apply to anonymous information, namely information which does not relate to an identified or identifiable natural person or to personal data rendered anonymous in such a manner that the data subject is not or no longer identifiable.”

    This means, you still get the best of both worlds. By anonymizing data, you’re still able to collect useful information like visitor behavioural data.

    US privacy laws and data anonymization

    In the US, there isn’t one single law that governs the protection of personal data, called personally identifiable information (PII). There are hundreds of federal and state laws that protect the personal data of US residents. As well as, industry-specific statutes related to data privacy, like the California Consumer Privacy Act (CCPA) and the Health Insurance Portability and Accountability Act (HIPAA).

    Website owners in the US need to know exactly what laws govern their area of business in order to follow them.

    A general guideline is to protect user privacy regardless of whether you are or aren’t allowed to collect PII. This means anonymizing identifiable information so your website users aren’t put at risk.

    Data anonymization techniques in Matomo Analytics

    If you carry these out, you won’t need to ask your website visitors for tracking consent since anonymized data is no longer considered personal data under the GDPR.

    The techniques listed above make it easy for you when using a tool like Matomo, as they are automatically anonymized.

    Tools like Google Analytics on the other hand don’t provide some of the privacy options and leave it up to you to take on the burden of implementation without providing steps.

    Data anonymization tools

    If you’re a website owner who wants to grow your business or learn more about your website visitors, privacy-friendly tools like Matomo Analytics are a great option. By following the easy steps to be GDPR compliant, you can anonymize all data that could put your visitors at risk.