Recherche avancée

Médias (2)

Mot : - Tags -/media

Autres articles (1)

  • Selection of projects using MediaSPIP

    2 mai 2011, par

    The examples below are representative elements of MediaSPIP specific uses for specific projects.
    MediaSPIP farm @ Infini
    The non profit organizationInfini develops hospitality activities, internet access point, training, realizing innovative projects in the field of information and communication technologies and Communication, and hosting of websites. It plays a unique and prominent role in the Brest (France) area, at the national level, among the half-dozen such association. Its members (...)

Sur d’autres sites (2558)

  • | NGINX | FFMPEG not creating DASH manifests or chunks in the designated DIR |

    7 avril 2020, par Mathew Knight

    Hopefully someone can help here, I have a setup that takes two input RTMP streams from two separate machines into my server. From here I am trying to serve some MPEG DASH manifests and chunks to an experimental spatial audio/360 web (.js) player.

    



    My issue is that while i can see the FFMPEG processes running and creating the Chunks the files themselves are not appearing in the specified folder and so the media player will not read the content.

    



    Is there something obvious that i am not doing that is preventing these files being written ?

    



    Any help with this would be amazing !!!

    



    Here is my config :

    



    #user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;


    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

}

rtmp {
        server {
            listen 1935;
            chunk_size 4096;

            application live {
            live on;
            record off;
            interleave off;
            wait_key on;
            meta on;
            wait_video off;
            idle_streams off;
            sync 300ms;
            session_relay on;
            #allow publish 127.0.0.1;
            #allow publish 192.168.2.0/24;
            allow publish all;
            #deny publish all;
            allow play all;    

         dash on;
            dash_nested on;
            dash_path /tmp/dash;
            dash_fragment 3;
            dash_playlist_length 120;
            dash_cleanup on;

            #dash_clock_compensation http_head;
            #dash_clock_helper_uri https://localhost/time;

    #dash_variant _low   bandwidth="500000"  width="640"  height="360";
            #dash_variant _med  bandwidth="1500000" width="1280"  height="720";
            #dash_variant _high bandwidth="5000000" width="1920" height="1080" max;

            # EDIT THESE SO THE LIVESTREAM_KEY IS REPLACED BY YOUR PERSONAL KEY THAT YOU CAN LOOK UP ON THE SITE OF THE PLATFORM
            # push rtmp://live-ams.twitch.tv/app/LIVESTREAM_KEY;
            # push rtmp://a.rtmp.youtube.com/live2/LIVESTREAM_KEY;
            # push rtmp://ingest-ams.mixer.com:1935/beam/LIVESTREAM_KEY;

         exec_push ffmpeg -re -an -i 'rtmp://localhost:1935/live/stream' -c:v libx264 -preset veryfast -s 1920x1080 -bufsize 15000k -b:v 15000k -keyint_min 150 -g 150 -tile-columns 4 -frame-parallel 1 -an -f dash -init_seg_name 'init-stream$RepresentationID$_video.webm' -media_seg_name 'chunk-stream$RepresentationID$_video-$Number%05d$.webm' 'http://localhost:1935/dash/video.mpd' 2>>/var/log/nginx/ffmpegvideo.log;




            }



    application dash {
        #TRANSCODED VIDEO/AUDIO FROM FFMPEG COMES HERE?????
        live on;
        meta copy;

        record all;
        record_path /rec;
        }

        }


    server {
            listen 1936;
            chunk_size 4096;

            application live {
            live on;
            record off;
            interleave off;
            wait_key on;
            meta on;
            wait_video off;
            idle_streams off;
            sync 300ms;
            session_relay on;
            #allow publish 127.0.0.1;
            #allow publish 192.168.2.0/24;
            allow publish all;
            #deny publish all;
            allow play all;    


            # EDIT THESE SO THE LIVESTREAM_KEY IS REPLACED BY YOUR PERSONAL KEY THAT YOU CAN LOOK UP ON THE SITE OF THE PLATFORM
            # push rtmp://live-ams.twitch.tv/app/LIVESTREAM_KEY;
            # push rtmp://a.rtmp.youtube.com/live2/LIVESTREAM_KEY;
            # push rtmp://ingest-ams.mixer.com:1935/beam/LIVESTREAM_KEY;

    exec_push ffmpeg -re -i 'rtmp://localhost:1936/live/stream' -filter 'channelmap=0|1|2|3|4|5|6|7:' -c:a libopus -b:a 512k -vn -f dash -init_seg_name 'init-stream$RepresentationID$_audio_01-08ch.webm' -media_seg_name 'chunk-stream$RepresentationID$_audio_01-08ch-$Number%05d$.webm' 'http://localhost:1936/dash/audio_01-08ch.mpd' -filter 'channelmap=8|9|10|11|12|13|14|15:' -c:a libopus -b:a 512k -vn -f dash -init_seg_name 'init-stream$RepresentationID$_audio_09-16ch.webm' -media_seg_name 'chunk-stream$RepresentationID$_audio_09-16ch-$Number%05d$.webm' 'http://localhost:1936/dash/audio_09-16ch.mpd' 2>>/var/log/nginx/ffmpegaudio.log;
            }





    application dash {
        #TRANSCODED AUDIO FROM FFMPEG COMES HERE?????
        live on;
        meta copy;
        }


}
}


    



    and here is the output from my FFMPEG logs :

    



    AUDIO :

    



    ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
  configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
[aac @ 0x55bfeaaafc60] Channel layout 'stereo' with 2 channels does not match specified number of channels 16: ignoring specified channel layout
Guessed Channel Layout for Input Stream #0.0 : hexadecagonal
Input #0, flv, from 'rtmp://localhost:1936/live/stream':
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 0
    displayHeight   : 0
    fps             : 0
    profile         : 
    level           : 
  Duration: 00:00:00.00, start: 0.042000, bitrate: N/A
    Stream #0:0: Audio: aac (LC), 48000 Hz, hexadecagonal, fltp, 512 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (aac (native) -> opus (libopus))
  Stream #0:0 -> #1:0 (aac (native) -> opus (libopus))
Press [q] to stop, [?] for help
[dash @ 0x55bfeaab43e0] Opening 'http://localhost:1936/dash/init-stream_audio_01-08ch.webm' for writing
Output #0, dash, to 'http://localhost:1936/dash/audio_01-08ch.mpd':
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 0
    displayHeight   : 0
    fps             : 0
    profile         : 
    level           : 
    encoder         : Lavf57.83.100
    Stream #0:0: Audio: opus (libopus), 48000 Hz, 7.1, flt, 512 kb/s
    Metadata:
      encoder         : Lavc57.107.100 libopus
[dash @ 0x55bfeaab43e0] Cannot use rename on non file protocol, this may lead to races and temporary partial files
[dash @ 0x55bfeaaecb00] Opening 'http://localhost:1936/dash/init-stream_audio_09-16ch.webm' for writing
Output #1, dash, to 'http://localhost:1936/dash/audio_09-16ch.mpd':
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 0
    displayHeight   : 0
    fps             : 0
    profile         : 
    level           : 
    encoder         : Lavf57.83.100
    Stream #1:0: Audio: opus (libopus), 48000 Hz, 7.1, flt, 512 kb/s
    Metadata:
      encoder         : Lavc57.107.100 libopus
size=N/A time=00:00:00.49 bitrate=N/A speed=0.986x    
size=N/A time=00:00:01.01 bitrate=N/A speed=1.01x    
size=N/A time=00:00:01.49 bitrate=N/A speed=0.993x    
size=N/A time=00:00:02.01 bitrate=N/A speed=   1x    
size=N/A time=00:00:02.49 bitrate=N/A speed=0.995x    
size=N/A time=00:00:03.01 bitrate=N/A speed=   1x    
size=N/A time=00:00:03.53 bitrate=N/A speed=   1x    
size=N/A time=00:00:04.01 bitrate=N/A speed=0.998x    
size=N/A time=00:00:04.53 bitrate=N/A speed=   1x    
[dash @ 0x55bfeaab43e0] Opening 'http://localhost:1936/dash/chunk-stream_audio_01-08ch-%05d.webm' for writing
[dash @ 0x55bfeaaecb00] Opening 'http://localhost:1936/dash/chunk-stream_audio_09-16ch-%05d.webm' for writing
size=N/A time=00:00:05.01 bitrate=N/A speed=0.997x    
size=N/A time=00:00:05.53 bitrate=N/A speed=   1x    
size=N/A time=00:00:06.03 bitrate=N/A speed=0.999x    
size=N/A time=00:00:06.55 bitrate=N/A speed=   1x    
size=N/A time=00:00:07.05 bitrate=N/A speed=0.999x    
size=N/A time=00:00:07.55 bitrate=N/A speed=0.999x    
size=N/A time=00:00:08.07 bitrate=N/A speed=   1x    
size=N/A time=00:00:08.57 bitrate=N/A speed=   1x    
size=N/A time=00:00:09.09 bitrate=N/A speed=   1x    
size=N/A time=00:00:09.59 bitrate=N/A speed=   1x    
[dash @ 0x55bfeaab43e0] Opening 'http://localhost:1936/dash/chunk-stream_audio_01-08ch-%05d.webm' for writing
[dash @ 0x55bfeaaecb00] Opening 'http://localhost:1936/dash/chunk-stream_audio_09-16ch-%05d.webm' for writing
size=N/A time=00:00:10.09 bitrate=N/A speed=0.999x    
size=N/A time=00:00:10.61 bitrate=N/A speed=   1x    
size=N/A time=00:00:11.09 bitrate=N/A speed=0.999x    
size=N/A time=00:00:11.61 bitrate=N/A speed=   1x    
size=N/A time=00:00:12.11 bitrate=N/A speed=0.999x    
size=N/A time=00:00:12.63 bitrate=N/A speed=   1x    
size=N/A time=00:00:13.13 bitrate=N/A speed=   1x    
size=N/A time=00:00:13.63 bitrate=N/A speed=0.999x    
size=N/A time=00:00:14.15 bitrate=N/A speed=   1x    
size=N/A time=00:00:14.63 bitrate=N/A speed=0.999x    
[dash @ 0x55bfeaab43e0] Opening 'http://localhost:1936/dash/chunk-stream_audio_01-08ch-%05d.webm' for writing
[dash @ 0x55bfeaaecb00] Opening 'http://localhost:1936/dash/chunk-stream_audio_09-16ch-%05d.webm' for writing
size=N/A time=00:00:15.15 bitrate=N/A speed=   1x    
size=N/A time=00:00:15.67 bitrate=N/A speed=   1x    
size=N/A time=00:00:16.15 bitrate=N/A speed=0.999x    
size=N/A time=00:00:16.67 bitrate=N/A speed=   1x    
size=N/A time=00:00:17.15 bitrate=N/A speed=0.999x    
size=N/A time=00:00:17.67 bitrate=N/A speed=   1x    
size=N/A time=00:00:18.17 bitrate=N/A speed=   1x    
size=N/A time=00:00:18.67 bitrate=N/A speed=0.999x    
size=N/A time=00:00:19.19 bitrate=N/A speed=   1x    
size=N/A time=00:00:19.69 bitrate=N/A speed=   1x    
[dash @ 0x55bfeaab43e0] Opening 'http://localhost:1936/dash/chunk-stream_audio_01-08ch-%05d.webm' for writing
[dash @ 0x55bfeaaecb00] Opening 'http://localhost:1936/dash/chunk-stream_audio_09-16ch-%05d.webm' for writing



    



    VIDEO :

    



    ffmpeg version 3.4.6-0ubuntu0.18.04.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
  configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, flv, from 'rtmp://localhost:1935/live/stream':
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 3840
    displayHeight   : 1920
    fps             : 30
    profile         : 
    level           : 
  Duration: 00:00:00.00, start: 0.033000, bitrate: N/A
    Stream #0:0: Video: h264 (High), yuv420p(tv, bt470bg/bt709/bt709, progressive), 3840x1920 [SAR 1:1 DAR 2:1], 15360 kb/s, 30 fps, 30 tbr, 1k tbn, 60 tbc
    Stream #0:1: Audio: aac (LC), 48000 Hz, 7.1, fltp, 327 kb/s
Codec AVOption tile-columns (Number of tile columns to use, log2) specified for output file #0 (http://localhost:1935/dash/video.mpd) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Codec AVOption frame-parallel (Enable frame parallel decodability features) specified for output file #0 (http://localhost:1935/dash/video.mpd) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x55e24ea47f40] VBV maxrate unspecified, assuming CBR
[libx264 @ 0x55e24ea47f40] using SAR=9/8
[libx264 @ 0x55e24ea47f40] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x55e24ea47f40] profile High, level 4.0
[libx264 @ 0x55e24ea47f40] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=6 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=1 keyint=150 keyint_min=76 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=cbr mbtree=1 bitrate=15000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=15000 vbv_bufsize=15000 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/init-stream_video.webm' for writing
Output #0, dash, to 'http://localhost:1935/dash/video.mpd':
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 3840
    displayHeight   : 1920
    fps             : 30
    profile         : 
    level           : 
    encoder         : Lavf57.83.100
    Stream #0:0: Video: h264 (libx264), yuv420p, 1920x1080 [SAR 9:8 DAR 2:1], q=-1--1, 15000 kb/s, 30 fps, 15360 tbn, 30 tbc
    Metadata:
      encoder         : Lavc57.107.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/15000000 buffer size: 15000000 vbv_delay: -1
frame=   11 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x    
[dash @ 0x55e24ea4b640] Cannot use rename on non file protocol, this may lead to races and temporary partial files
frame=   26 fps= 26 q=19.0 size=N/A time=00:00:00.10 bitrate=N/A speed=0.0997x    
frame=   42 fps= 28 q=17.0 size=N/A time=00:00:00.63 bitrate=N/A speed=0.421x    
frame=   57 fps= 28 q=14.0 size=N/A time=00:00:01.13 bitrate=N/A speed=0.565x    
frame=   72 fps= 29 q=15.0 size=N/A time=00:00:01.63 bitrate=N/A speed=0.65x    
frame=   87 fps= 29 q=14.0 size=N/A time=00:00:02.13 bitrate=N/A speed=0.706x    
frame=  102 fps= 29 q=16.0 size=N/A time=00:00:02.63 bitrate=N/A speed=0.746x    
frame=  118 fps= 29 q=16.0 size=N/A time=00:00:03.16 bitrate=N/A speed=0.785x    
frame=  133 fps= 29 q=17.0 size=N/A time=00:00:03.66 bitrate=N/A speed=0.807x    
frame=  148 fps= 29 q=15.0 size=N/A time=00:00:04.16 bitrate=N/A speed=0.826x    
frame=  163 fps= 29 q=18.0 size=N/A time=00:00:04.66 bitrate=N/A speed=0.841x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame=  178 fps= 29 q=17.0 size=N/A time=00:00:05.16 bitrate=N/A speed=0.854x    
frame=  193 fps= 29 q=18.0 size=N/A time=00:00:05.66 bitrate=N/A speed=0.864x    
frame=  208 fps= 29 q=15.0 size=N/A time=00:00:06.16 bitrate=N/A speed=0.873x    
frame=  224 fps= 30 q=15.0 size=N/A time=00:00:06.70 bitrate=N/A speed=0.885x    
frame=  239 fps= 30 q=16.0 size=N/A time=00:00:07.20 bitrate=N/A speed=0.892x    
frame=  254 fps= 30 q=15.0 size=N/A time=00:00:07.70 bitrate=N/A speed=0.898x    
frame=  269 fps= 30 q=17.0 size=N/A time=00:00:08.20 bitrate=N/A speed=0.903x    
frame=  284 fps= 30 q=16.0 size=N/A time=00:00:08.70 bitrate=N/A speed=0.908x    
frame=  299 fps= 30 q=16.0 size=N/A time=00:00:09.20 bitrate=N/A speed=0.912x    
frame=  314 fps= 30 q=18.0 size=N/A time=00:00:09.70 bitrate=N/A speed=0.916x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame=  330 fps= 30 q=17.0 size=N/A time=00:00:10.23 bitrate=N/A speed=0.922x    
frame=  345 fps= 30 q=17.0 size=N/A time=00:00:10.73 bitrate=N/A speed=0.925x    
frame=  360 fps= 30 q=15.0 size=N/A time=00:00:11.23 bitrate=N/A speed=0.928x    
frame=  375 fps= 30 q=15.0 size=N/A time=00:00:11.73 bitrate=N/A speed=0.931x    
frame=  390 fps= 30 q=16.0 size=N/A time=00:00:12.23 bitrate=N/A speed=0.933x    
frame=  405 fps= 30 q=17.0 size=N/A time=00:00:12.73 bitrate=N/A speed=0.935x    
frame=  420 fps= 30 q=14.0 size=N/A time=00:00:13.23 bitrate=N/A speed=0.937x    
frame=  435 fps= 30 q=16.0 size=N/A time=00:00:13.73 bitrate=N/A speed=0.94x    
frame=  450 fps= 30 q=16.0 size=N/A time=00:00:14.23 bitrate=N/A speed=0.941x    
frame=  465 fps= 30 q=18.0 size=N/A time=00:00:14.73 bitrate=N/A speed=0.943x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame=  481 fps= 30 q=16.0 size=N/A time=00:00:15.26 bitrate=N/A speed=0.946x    
frame=  496 fps= 30 q=17.0 size=N/A time=00:00:15.76 bitrate=N/A speed=0.947x    
frame=  511 fps= 30 q=16.0 size=N/A time=00:00:16.26 bitrate=N/A speed=0.949x    
frame=  526 fps= 30 q=16.0 size=N/A time=00:00:16.76 bitrate=N/A speed=0.95x    
frame=  541 fps= 30 q=16.0 size=N/A time=00:00:17.26 bitrate=N/A speed=0.951x    
frame=  557 fps= 30 q=16.0 size=N/A time=00:00:17.80 bitrate=N/A speed=0.953x    
frame=  572 fps= 30 q=15.0 size=N/A time=00:00:18.30 bitrate=N/A speed=0.954x    
frame=  587 fps= 30 q=16.0 size=N/A time=00:00:18.80 bitrate=N/A speed=0.955x    
frame=  602 fps= 30 q=16.0 size=N/A time=00:00:19.30 bitrate=N/A speed=0.956x    
frame=  618 fps= 30 q=18.0 size=N/A time=00:00:19.83 bitrate=N/A speed=0.958x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame=  633 fps= 30 q=17.0 size=N/A time=00:00:20.33 bitrate=N/A speed=0.959x    
frame=  648 fps= 30 q=16.0 size=N/A time=00:00:20.83 bitrate=N/A speed=0.96x    
frame=  663 fps= 30 q=16.0 size=N/A time=00:00:21.33 bitrate=N/A speed=0.961x    
frame=  678 fps= 30 q=16.0 size=N/A time=00:00:21.83 bitrate=N/A speed=0.961x    
frame=  693 fps= 30 q=16.0 size=N/A time=00:00:22.33 bitrate=N/A speed=0.962x    
frame=  708 fps= 30 q=16.0 size=N/A time=00:00:22.83 bitrate=N/A speed=0.962x    
frame=  723 fps= 30 q=17.0 size=N/A time=00:00:23.33 bitrate=N/A speed=0.963x    
frame=  739 fps= 30 q=17.0 size=N/A time=00:00:23.86 bitrate=N/A speed=0.965x    
frame=  754 fps= 30 q=16.0 size=N/A time=00:00:24.36 bitrate=N/A speed=0.965x    
frame=  769 fps= 30 q=18.0 size=N/A time=00:00:24.86 bitrate=N/A speed=0.966x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame=  784 fps= 30 q=15.0 size=N/A time=00:00:25.36 bitrate=N/A speed=0.966x    
frame=  799 fps= 30 q=15.0 size=N/A time=00:00:25.86 bitrate=N/A speed=0.967x    
frame=  814 fps= 30 q=15.0 size=N/A time=00:00:26.36 bitrate=N/A speed=0.967x    
frame=  829 fps= 30 q=16.0 size=N/A time=00:00:26.86 bitrate=N/A speed=0.968x    
frame=  844 fps= 30 q=15.0 size=N/A time=00:00:27.36 bitrate=N/A speed=0.968x    
frame=  860 fps= 30 q=15.0 size=N/A time=00:00:27.90 bitrate=N/A speed=0.97x    
frame=  875 fps= 30 q=15.0 size=N/A time=00:00:28.40 bitrate=N/A speed=0.97x    
frame=  890 fps= 30 q=15.0 size=N/A time=00:00:28.90 bitrate=N/A speed=0.971x    
frame=  905 fps= 30 q=16.0 size=N/A time=00:00:29.40 bitrate=N/A speed=0.971x    
frame=  920 fps= 30 q=18.0 size=N/A time=00:00:29.90 bitrate=N/A speed=0.971x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame=  935 fps= 30 q=16.0 size=N/A time=00:00:30.40 bitrate=N/A speed=0.971x    
frame=  950 fps= 30 q=16.0 size=N/A time=00:00:30.90 bitrate=N/A speed=0.972x    
frame=  966 fps= 30 q=15.0 size=N/A time=00:00:31.43 bitrate=N/A speed=0.973x    
frame=  981 fps= 30 q=15.0 size=N/A time=00:00:31.93 bitrate=N/A speed=0.973x    
frame=  996 fps= 30 q=16.0 size=N/A time=00:00:32.43 bitrate=N/A speed=0.974x    
frame= 1011 fps= 30 q=15.0 size=N/A time=00:00:32.93 bitrate=N/A speed=0.974x    
frame= 1026 fps= 30 q=16.0 size=N/A time=00:00:33.43 bitrate=N/A speed=0.974x    
frame= 1041 fps= 30 q=16.0 size=N/A time=00:00:33.93 bitrate=N/A speed=0.974x    
frame= 1057 fps= 30 q=16.0 size=N/A time=00:00:34.46 bitrate=N/A speed=0.975x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing
frame= 1072 fps= 30 q=18.0 size=N/A time=00:00:34.96 bitrate=N/A speed=0.976x    
frame= 1087 fps= 30 q=18.0 size=N/A time=00:00:35.46 bitrate=N/A speed=0.976x    
frame= 1102 fps= 30 q=15.0 size=N/A time=00:00:35.96 bitrate=N/A speed=0.976x    
frame= 1117 fps= 30 q=15.0 size=N/A time=00:00:36.46 bitrate=N/A speed=0.976x    
frame= 1132 fps= 30 q=16.0 size=N/A time=00:00:36.96 bitrate=N/A speed=0.976x    
frame= 1148 fps= 30 q=16.0 size=N/A time=00:00:37.50 bitrate=N/A speed=0.977x    
frame= 1163 fps= 30 q=17.0 size=N/A time=00:00:38.00 bitrate=N/A speed=0.978x    
frame= 1178 fps= 30 q=15.0 size=N/A time=00:00:38.50 bitrate=N/A speed=0.978x    
frame= 1193 fps= 30 q=15.0 size=N/A time=00:00:39.00 bitrate=N/A speed=0.978x    
frame= 1208 fps= 30 q=18.0 size=N/A time=00:00:39.50 bitrate=N/A speed=0.978x    
[dash @ 0x55e24ea4b640] Opening 'http://localhost:1935/dash/chunk-stream_video-%05d.webm' for writing  


    


  • 12 ways Matomo Analytics helps you to protect your visitor’s privacy

    5 mai 2020, par InnoCraft — Analytics Tips, Privacy, Security

    This post was originally published on January 11, 2017, and updated on May, 2020.

    At Matomo we think privacy matters. From the beginning, Matomo has had a strong focus on privacy and ensuring the privacy of your visitors and analytics data. 

    Here are some ways how you can ensure your users and visitors privacy by using Matomo (Piwik).

    1. Owning the data gives you power to protect user privacy

    Whether you host Matomo on-premises yourself, or whether you use Matomo’s cloud, YOU keep control of your data and nobody else. By knowing exactly where your data is stored and having full control over what happens to it, you have the power to protect your user’s privacy. No-one else can claim ownership. 

    2. GDPR compliance

    GDPR is one of the most important privacy laws to have come out in the last few years. As such, Matomo takes GDPR compliance very seriously. There’s even a 12-step checklist for you to follow to ensure your Matomo is GDPR compliant. Not only that Matomo is HIPAA, CCPA, LGPD, and PECR compliant.

    3. Data anonymization

    For better privacy by default, Matomo implements a range of data anonymization techniques. One of the main techniques is not recording the full IP address of your visitors. Some countries even require you to anonymize additional info considered Personally Identifiable Information (PII).

    To change the IP anonymization settings go to “Administration > Privacy”. 

    anonymize ip

    4. Configuring Matomo to not process personal data or personally identifiable information (PII)

    To further protect the privacy of your visitors, you can learn how to not process any personal information or PII

    5. Deleting old visitor logs

    The is important because visitor logs contain information all the collected raw data about every visitor and every action. You can configure Matomo to automatically delete logs from the database. When you delete old logs, only the real time and visitor log reports will no longer work for this old time period, all other aggregated reports will still work.

    For privacy reasons, we highly recommend that you keep the detailed Matomo logs for only 3 to 6 months and delete older log data. This has one other nice side effect : it will free significant database space, which will, in turn, slightly increase performance !

    6. Supporting the Do Not Track preference

    Do Not Track enables users to opt out of any tracking by websites they do not visit, including analytics services, advertising networks, and social platforms. By default, Matomo respects users preference and will not track visitors which have specified “I do not want to be tracked” in their web browsers. Get more information about DoNotTrack.

    To make sure Do Not Track is respected, go to “Administration => Privacy”.

    7. Including an Opt-Out Feature on your website or app

    By embedding the Opt-Out feature in your website, you give your visitors the possibility to opt-out of the tracking. When you go to “Administration > Privacy”, you will be able to copy and paste an HTML Iframe code to embed the opt-out feature for example into your privacy policy page or in your ‘Legal’ page. Your users can then click on a link to opt-out.

    On the Matomo Marketplace there are also some plugins available to customize the Opt-Out experience. For example AjaxOptOut and CustomOptOut.

    8. Disabling Live features

    The Real-Time, Visitor Log and Visitor Profile features give you insights into the tracked raw data by showing you details about every visitor and every action they performed. To protect the privacy of your visitors you may decide to prevent access to such features by disabling the “Live” plugin in “Administration => Plugins”. This way only aggregated reports will be shown in your Matomo.

    9. Disabling fingerprinting across websites

    By default, when one of your visitors visits several of your websites, Matomo will create a fingerprint for this user that will be different across the websites to increase the visitors’ privacy. You can make sure that this feature is disabled by going to “Administration => Config file” and verifying that the value of “enable_fingerprinting_across_websites” is set to zero.

    10. Disabling tracking cookies

    Matomo uses first-party cookies to store some information about visitors between visits. In some countries, the legislation requires websites to provide a way for users to opt-out of all tracking, in particular tracking cookies. You can disable cookies by adding one line in the Matomo Javascript code.

    11. Creating the tool of your dreams by developing your own plugins and getting access to the API

    Matomo is an open platform that lets you extend and customise the tracking ; reporting ; and user interface to your needs and to protect your visitors’ privacy the way you want or need it. Learn more in the Matomo Developer Zone. You may also have a look at our Matomo Marketplace where you can find several free and premium features to extend your Matomo.

    12. Transparency

    By default, all information and all collected data in your Matomo server are protected and nobody can access it. However, Matomo allows you to optionally make your collected data public and you can export any Matomo report including the whole dashboard to embed it into your website. This way you can show your users exactly which information you track. When you decide to make reports public, we do our best to protect privacy and automatically hide any Personally Identifiable Information such as the Visitor Profile and we make sure to not show any Visitor IP address and the Visitor ID.

    Bonus tip – A privacy policy template for you

    When you use Matomo to track your visitors, we recommend you update your Privacy Policy to explain how Matomo is used and what data it gathers. Here’s a Privacy Policy template for you to copy on your site.

    Continuous privacy improvements

    We are always interested in improving the privacy. If you miss any feature or have an idea on how to improve the privacy, please let us know.

    More information about all the Matomo features

    If you want to learn more about all the features in Matomo, have a look at our User Guides and FAQ entries.

  • CJEU rules US cloud servers don’t comply with GDPR and what this means for web analytics

    17 juillet 2020, par Jake Thornton

    Breaking news : On July 16, 2020, the Court of Justice of the European Union (CJEU) has ruled that any cloud services hosted in the US are incapable of complying with the GDPR and EU privacy laws.

    In August 2016, the EU-US Privacy Shield framework came into effect, which “protects the fundamental rights of anyone in the EU whose personal data is transferred to the United States for commercial purposes. It allows the free transfer of data to companies that are certified in the US under the Privacy Shield.” – European Commission website

    However after today’s CJEU ruling, this Privacy Shield framework became invalidated due to significant differences between EU and US privacy laws.

    European privacy law activist Max Schrems summarises with “The Court clarified for a second time now that there is a clash between EU privacy law and US surveillance law. As the EU will not change its fundamental rights to please the NSA, the only way to overcome this clash is for the US to introduce solid privacy rights for all people – including foreigners. Surveillance reform thereby becomes crucial for the business interests of Silicon Valley.” – noyb website

    Today’s ruling also continues to spark concern into the legitimacy of US privacy laws which doesn’t fully protect people’s personal data when hosted on cloud servers based in the US.

    Web analytics hosted on US cloud servers don’t comply with GDPR

    How will this affect you ?

    For any business operating a website in the EU or if you have traffic coming to your website from EU visitors, you need to know what data you’re capturing and where this data is being stored.

    Here’s what Maja Smoltczyk (Berlin’s Commissioner for Data Protection and Freedom of Information) says :

    Controllers who transfer personal data to the USA, especially when using cloud-based services, are now required to switch immediately to service providers based in the European Union or a country that can
    ensure an adequate level of data protection. 
    The CJEU has made it refreshingly clear that data exports are not just financial decisions, as people’s fundamental rights must also be considered as a matter of priority. This ruling will put
    an end to the transfer of personal data to the USA
    for the sake of convenience or to cut costs.

    The controller is you (not Google) and by transferring data to the US you are at risk of being fined up to €20 million or 4% of your annual worldwide turnover for not being GDPR compliant. 

    It’s you who has to take action, not Google or other US companies. The court’s decision has immediate effect. While we assume there will be a grace period, companies should act now as finding and implementing alternatives solution can take a while. 

    Can no data be exported outside the EU anymore ?

    Data can still be exported outside the EU if an adequate level of data protection is guaranteed. This is the case for some trading partners of the EU such as New Zealand, Japan, Switzerland, and Canada. They have been certified by the EU as having a comparable level of privacy protection and therefore demonstrate adequacy at a country level.

    Necessary data can still flow to countries like the US too. This is for example the case when someone books a hotel in the US or when sending an email to someone in the US. Backups for disaster recovery and most other reasons don’t qualify as necessary.

    In all other cases you can still send data to countries like the US if you get explicit and informed consent from a user. Meaning the user has been informed about all possible risks of sending the data to the US and who can access the data (for example the US government).

    How this affects Google Analytics and Google Tag Manager users

    If your website is using Google Analytics, the safest bet is to deactivate it immediately. Otherwise, you must ask for consent from everyone who visits your website and inform them that the data will be processed in the United States under less strict privacy laws and all associated risks. If you don’t, you could be liable to privacy law infringements and face being fined for not complying with the GDPR. This also applies to Google Tag Manager as it transfers the IP address to the US which is considered personal data under the GDPR.

    Consent needs to be :

    • Freely given (the user must have a choice to not give consent and be able to opt out at any time) 
    • Informed (you need to disclose who is processing the data, what data is processed, where the data will be stored and how to opt out) 
    • Specific (consent is only valid for the specific informed purpose) 
    • Unambiguous (for example pre-ticked boxes or similar aren’t allowed)
    Web analytics that complies with GDPR

    If users don’t give you consent, you are not allowed to track them using Google Analytics or any other US based cloud solution.

    Update August 19, 2020

    A month after this ruling, over 100 complaints have been filed against websites for continuing to send data to the US via Google Analytics or Facebook, by the European privacy campaign group noyb. It’s clear Google and Facebook fall under US surveillance laws such as FISA 702 and the court clearly ruled these companies cannot rely on SCCs to transfer data to the US. Anyone still using Google Analytics is now at risk of facing fines and compensation damages

    How this affects Matomo users

    Our cloud servers are based in Germany.

    Matomo On-Premise users choose the location of their data themselves. If the servers are located in the EU nothing changes. If the servers are located outside the EU and the website targets EU users and tracks personal data, then you need to assess whether you are required to ask for tracking consent.

    If the data is stored inside the EU you can use Matomo without asking for any consent and you can continue tracking users even if they reject a consent screen which greatly increases the quality of your data.

    Want to avoid informing users about transferring their data to the US and all associated risks ?

    Try Matomo now for free ! No credit card required.