Recherche avancée

Médias (1)

Mot : - Tags -/net art

Autres articles (72)

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

  • Configurer la prise en compte des langues

    15 novembre 2010, par

    Accéder à la configuration et ajouter des langues prises en compte
    Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
    De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
    Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

Sur d’autres sites (8823)

  • FFmpeg on aws lambda - Invalid NAL unit size

    28 juin 2020, par Lina Sharifi Moghaddam

    I am trying to run below :

    



    1- generate mp4 from one png image and a mp3 file

    



    2- overlay another png image on top of the previous video

    



    A-On my local environment (mac) things work perfect :

    



    1A-

    



    ffmpeg -loop 1 -i images/01.png -i audio_123e4567-e89b-12d3-a456-426655440000.mp3 -c:v libx264 -pix_fmt yuv420p -shortest 01.mp4 -y
ffmpeg version 4.0.2 Copyright (c) 2000-2018 the FFmpeg developers
  built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.0.2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
  libpostproc    55.  1.100 / 55.  1.100
[png_pipe @ 0x7ff1ba000000] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, png_pipe, from 'images/01.png':
  Duration: N/A, bitrate: N/A
    Stream #0:0: Video: png, rgba(pc), 3360x2100 [SAR 5669:5669 DAR 8:5], 25 tbr, 25 tbn, 25 tbc
[mp3 @ 0x7ff1ba00fa00] Estimating duration from bitrate, this may be inaccurate
Input #1, mp3, from 'audio_123e4567-e89b-12d3-a456-426655440000.mp3':
  Metadata:
    encoder         : Lavf57.71.100
  Duration: 00:00:05.38, start: 0.000000, bitrate: 48 kb/s
    Stream #1:0: Audio: mp3, 22050 Hz, mono, fltp, 48 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
  Stream #1:0 -> #0:1 (mp3 (mp3float) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x7ff1ba021400] using SAR=1/1
[libx264 @ 0x7ff1ba021400] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7ff1ba021400] profile High, level 5.1
[libx264 @ 0x7ff1ba021400] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - 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 '01.mp4':
  Metadata:
    encoder         : Lavf58.12.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive), 3360x2100 [SAR 1:1 DAR 8:5], q=-1--1, 25 fps, 12800 tbn, 25 tbc
    Metadata:
      encoder         : Lavc58.18.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 69 kb/s
    Metadata:
      encoder         : Lavc58.18.100 aac
frame=  191 fps= 19 q=-1.0 Lsize=     798kB time=00:00:07.52 bitrate= 868.8kbits/s speed=0.75x     
video:744kB audio:49kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.685866%
[libx264 @ 0x7ff1ba021400] frame I:1     Avg QP:13.38  size:706076
[libx264 @ 0x7ff1ba021400] frame P:48    Avg QP:13.63  size:   516
[libx264 @ 0x7ff1ba021400] frame B:142   Avg QP:23.33  size:   210
[libx264 @ 0x7ff1ba021400] consecutive B-frames:  0.5%  1.0%  0.0% 98.4%
[libx264 @ 0x7ff1ba021400] mb I  I16..4:  5.4% 81.4% 13.2%
[libx264 @ 0x7ff1ba021400] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  0.8%  0.0%  0.0%  0.0%  0.0%    skip:99.2%
[libx264 @ 0x7ff1ba021400] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.0%  0.0%  0.0%  direct: 0.0%  skip:100.0%  L0:10.7% L1:89.3% BI: 0.0%
[libx264 @ 0x7ff1ba021400] 8x8 transform intra:81.3% inter:99.4%
[libx264 @ 0x7ff1ba021400] coded y,uvDC,uvAC intra: 97.1% 1.7% 1.4% inter: 0.1% 0.0% 0.0%
[libx264 @ 0x7ff1ba021400] i16 v,h,dc,p:  1% 21% 66% 11%
[libx264 @ 0x7ff1ba021400] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  9%  9% 45%  5%  7%  5%  5%  6%  8%
[libx264 @ 0x7ff1ba021400] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 14% 18% 10% 11%  8%  7%  6%  8%
[libx264 @ 0x7ff1ba021400] i8c dc,h,v,p: 97%  3%  1%  0%
[libx264 @ 0x7ff1ba021400] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7ff1ba021400] ref P L0: 98.3%  0.1%  1.3%  0.3%
[libx264 @ 0x7ff1ba021400] ref B L0: 35.0% 65.0%
[libx264 @ 0x7ff1ba021400] ref B L1: 94.6%  5.4%
[libx264 @ 0x7ff1ba021400] kb/s:796.51
[aac @ 0x7ff1ba022c00] Qavg: 2267.321


    



    2A-

    



    ffmpeg -i 01.mp4 -i square.png  -filter_complex "[0:v][1:v] overlay=12:12:enable='between(t,1,3)' "  -c:a copy -y temp.mp4
ffmpeg version 4.0.2 Copyright (c) 2000-2018 the FFmpeg developers
  built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.0.2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
  libpostproc    55.  1.100 / 55.  1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '01.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.12.100
  Duration: 00:00:07.64, start: 0.000000, bitrate: 855 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 3360x2100 [SAR 1:1 DAR 8:5], 797 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 73 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Input #1, png_pipe, from 'square.png':
  Duration: N/A, bitrate: N/A
    Stream #1:0: Video: png, rgba(pc), 90x90 [SAR 1:1 DAR 1:1], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
  Stream #0:0 (h264) -> overlay:main
  Stream #1:0 (png) -> overlay:overlay
  overlay -> Stream #0:0 (libx264)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[libx264 @ 0x7f8e22006e00] using SAR=1/1
[libx264 @ 0x7f8e22006e00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7f8e22006e00] profile High, level 5.1
[libx264 @ 0x7f8e22006e00] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - 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 'temp.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.12.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 3360x2100 [SAR 1:1 DAR 8:5], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
    Metadata:
      encoder         : Lavc58.18.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 73 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
frame=  191 fps= 40 q=-1.0 Lsize=     780kB time=00:00:07.52 bitrate= 849.4kbits/s speed=1.56x    
video:726kB audio:49kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.701603%
[libx264 @ 0x7f8e22006e00] frame I:1     Avg QP:13.38  size:697836
[libx264 @ 0x7f8e22006e00] frame P:48    Avg QP:15.44  size:   284
[libx264 @ 0x7f8e22006e00] frame B:142   Avg QP:23.34  size:   218
[libx264 @ 0x7f8e22006e00] consecutive B-frames:  0.5%  1.0%  0.0% 98.4%
[libx264 @ 0x7f8e22006e00] mb I  I16..4:  6.1% 81.0% 13.0%
[libx264 @ 0x7f8e22006e00] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  0.1%  0.0%  0.0%  0.0%  0.0%    skip:99.9%
[libx264 @ 0x7f8e22006e00] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.1%  0.0%  0.0%  direct: 0.0%  skip:99.9%  L0:49.9% L1:49.8% BI: 0.3%
[libx264 @ 0x7f8e22006e00] 8x8 transform intra:80.9% inter:78.2%
[libx264 @ 0x7f8e22006e00] coded y,uvDC,uvAC intra: 96.5% 1.7% 1.4% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x7f8e22006e00] i16 v,h,dc,p:  2% 28% 63%  8%
[libx264 @ 0x7f8e22006e00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  9%  9% 43%  6%  7%  6%  6%  6%  8%
[libx264 @ 0x7f8e22006e00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 13% 19% 10% 10%  8%  7%  6%  8%
[libx264 @ 0x7f8e22006e00] i8c dc,h,v,p: 96%  3%  1%  0%
[libx264 @ 0x7f8e22006e00] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7f8e22006e00] ref P L0: 64.8%  0.3% 13.8% 21.1%
[libx264 @ 0x7f8e22006e00] ref B L0: 34.0% 64.9%  1.0%
[libx264 @ 0x7f8e22006e00] ref B L1: 99.0%  1.0%
[libx264 @ 0x7f8e22006e00] kb/s:777.46


    



    B- When I try the same on aws lambda , I get encoding erros and the overlay command fails. (Tried two different ffmpeg build on lambda, local build and official static 64bit build )

    



    1B-

    



    ffmpeg version N-92107-g4901fa1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-23)
configuration: --prefix=/home/centos/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/centos/ffmpeg_build/include --extra-ldflags=-L/home/centos/ffmpeg_build/lib --extra-libs=-lpthread --extra-libs=-lm --bindir=/home/centos/bin --enable-gpl --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libvpx --enable-libx264 --enable-nonfree
libavutil 56. 19.101 / 56. 19.101
libavcodec 58. 32.100 / 58. 32.100
libavformat 58. 18.104 / 58. 18.104
libavdevice 58. 4.105 / 58. 4.105
libavfilter 7. 33.100 / 7. 33.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
[png_pipe @ 0x7f85a5b6c740] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, png_pipe, from '/tmp/01.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgba(pc), 3360x2100 [SAR 5669:5669 DAR 8:5], 25 tbr, 25 tbn, 25 tbc
[mp3 @ 0x7f85a5b6f300] Estimating duration from bitrate, this may be inaccurate
Input #1, mp3, from '/tmp/audio_123e4567-e89b-12d3-a456-426655440000.mp3':
Metadata:
encoder : Lavf57.71.100
Duration: 00:00:05.38, start: 0.000000, bitrate: 48 kb/s
Stream #1:0: Audio: mp3, 22050 Hz, mono, fltp, 48 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (mp3 (mp3float) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x7f85a5b84880] using SAR=1/1
[libx264 @ 0x7f85a5b84880] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x7f85a5b84880] profile High, level 5.1, 4:2:0, 8-bit
[libx264 @ 0x7f85a5b84880] 264 - core 157 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:-3:-3 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=2.00:0.70 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-4 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=18.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.20
Output #0, mp4, to '/tmp/01.mp4':
Metadata:
encoder : Lavf58.18.104
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive), 3360x2100 [SAR 1:1 DAR 8:5], q=-1--1, 25 fps, 12800 tbn, 25 tbc
Metadata:
encoder : Lavc58.32.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 69 kb/s
Metadata:
encoder : Lavc58.32.100 aac
frame= 6 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x 
frame= 12 fps= 11 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x 
frame= 18 fps= 11 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x 
frame= 24 fps= 11 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x 
frame= 30 fps= 11 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x 
frame= 36 fps= 11 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x 
frame= 42 fps= 11 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x 
frame= 47 fps=9.6 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x 
frame= 48 fps=7.9 q=23.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x 
frame= 51 fps=7.7 q=23.0 size= 1536kB time=00:00:00.04 bitrate=270958.1kbits/s speed=0.00697x 
frame= 51 fps=7.1 q=23.0 size= 1536kB time=00:00:00.04 bitrate=270958.1kbits/s speed=0.00645x 
frame= 53 fps=6.7 q=23.0 size= 1536kB time=00:00:00.13 bitrate=90319.4kbits/s speed=0.0176x 
frame= 55 fps=6.5 q=23.0 size= 1536kB time=00:00:00.23 bitrate=54191.6kbits/s speed=0.0273x 
frame= 57 fps=6.0 q=23.0 size= 1536kB time=00:00:00.32 bitrate=38708.4kbits/s speed=0.0344x 
frame= 60 fps=5.7 q=23.0 size= 1792kB time=00:00:00.41 bitrate=35124.1kbits/s speed=0.0397x 
frame= 62 fps=5.6 q=23.0 size= 1792kB time=00:00:00.55 bitrate=26343.1kbits/s speed=0.0505x 
frame= 64 fps=5.5 q=23.0 size= 1792kB time=00:00:00.60 bitrate=24316.7kbits/s speed=0.0522x 
frame= 66 fps=5.4 q=23.0 size= 1792kB time=00:00:00.65 bitrate=22579.8kbits/s speed=0.0532x 
frame= 67 fps=5.2 q=23.0 size= 1792kB time=00:00:00.74 bitrate=19757.3kbits/s speed=0.0582x 
frame= 69 fps=5.1 q=23.0 size= 1792kB time=00:00:00.78 bitrate=18595.1kbits/s speed=0.0579x 
frame= 71 fps=5.0 q=23.0 size= 1792kB time=00:00:00.88 bitrate=16637.7kbits/s speed=0.0616x 
frame= 73 fps=4.9 q=23.0 size= 1792kB time=00:00:00.92 bitrate=15805.9kbits/s speed=0.0627x 
frame= 75 fps=4.8 q=23.0 size= 2048kB time=00:00:01.02 bitrate=16421.6kbits/s speed=0.0654x 
frame= 77 fps=4.7 q=23.0 size= 2048kB time=00:00:01.16 bitrate=14451.0kbits/s speed=0.0709x 
frame= 80 fps=4.7 q=23.0 size= 2048kB time=00:00:01.20 bitrate=13895.2kbits/s speed=0.0713x 
frame= 81 fps=4.6 q=23.0 size= 2048kB time=00:00:01.25 bitrate=13380.6kbits/s speed=0.0707x 
frame= 83 fps=4.5 q=23.0 size= 2048kB time=00:00:01.39 bitrate=12042.5kbits/s speed=0.0757x 
frame= 85 fps=4.4 q=23.0 size= 2048kB time=00:00:01.43 bitrate=11654.0kbits/s speed=0.0748x 
frame= 88 fps=4.4 q=23.0 size= 2048kB time=00:00:01.53 bitrate=10947.7kbits/s speed=0.0771x 
frame= 89 fps=4.3 q=23.0 size= 2048kB time=00:00:01.57 bitrate=10625.7kbits/s speed=0.0764x 
frame= 92 fps=4.2 q=23.0 size= 2048kB time=00:00:01.71 bitrate=9764.2kbits/s speed=0.0789x 
frame= 95 fps=4.3 q=23.0 size= 2048kB time=00:00:01.81 bitrate=9263.5kbits/s speed=0.0811x 
frame= 96 fps=4.2 q=23.0 size= 2048kB time=00:00:01.85 bitrate=9031.9kbits/s speed=0.0809x 
frame= 97 fps=4.1 q=23.0 size= 2048kB time=00:00:01.90 bitrate=8811.6kbits/s speed=0.0811x 
frame= 99 fps=4.1 q=23.0 size= 2304kB time=00:00:01.99 bitrate=9452.0kbits/s speed=0.0831x 
frame= 102 fps=4.1 q=23.0 size= 2304kB time=00:00:02.08 bitrate=9031.9kbits/s speed=0.0849x 
frame= 102 fps=4.1 q=23.0 size= 2304kB time=00:00:02.08 bitrate=9031.9kbits/s speed=0.0831x 
frame= 104 fps=4.1 q=23.0 size= 2304kB time=00:00:02.22 bitrate=8467.4kbits/s speed=0.0868x 
frame= 106 fps=4.0 q=23.0 size= 2304kB time=00:00:02.27 bitrate=8294.6kbits/s speed=0.0859x 
frame= 109 fps=4.0 q=23.0 size= 2304kB time=00:00:02.36 bitrate=7969.3kbits/s speed=0.0873x 
frame= 109 fps=3.9 q=23.0 size= 2304kB time=00:00:02.41 bitrate=7816.0kbits/s speed=0.0872x 
frame= 112 fps=3.9 q=23.0 size= 2304kB time=00:00:02.50 bitrate=7526.6kbits/s speed=0.0877x 
frame= 114 fps=3.9 q=23.0 size= 2304kB time=00:00:02.64 bitrate=7130.4kbits/s speed=0.0904x 
frame= 117 fps=3.8 q=23.0 size= 2304kB time=00:00:02.69 bitrate=7007.5kbits/s speed=0.0884x 
frame= 119 fps=3.8 q=23.0 size= 2560kB time=00:00:02.83 bitrate=7403.2kbits/s speed=0.0913x 
frame= 120 fps=3.8 q=23.0 size= 2560kB time=00:00:02.83 bitrate=7403.2kbits/s speed=0.0898x 
frame= 122 fps=3.8 q=23.0 size= 2560kB time=00:00:02.92 bitrate=7168.1kbits/s speed=0.0913x 
frame= 124 fps=3.8 q=23.0 size= 2560kB time=00:00:02.97 bitrate=7056.1kbits/s speed=0.0911x 
frame= 125 fps=3.8 q=23.0 size= 2560kB time=00:00:03.06 bitrate=6842.3kbits/s speed=0.0924x 
frame= 127 fps=3.8 q=23.0 size= 2560kB time=00:00:03.11 bitrate=6740.2kbits/s speed=0.0923x 
frame= 128 fps=3.7 q=23.0 size= 2560kB time=00:00:03.15 bitrate=6641.1kbits/s speed=0.0919x 
frame= 131 fps=3.7 q=23.0 size= 2560kB time=00:00:03.25 bitrate=6451.3kbits/s speed=0.0923x 
frame= 133 fps=3.7 q=23.0 size= 2560kB time=00:00:03.34 bitrate=6272.1kbits/s speed=0.0929x 
frame= 135 fps=3.7 q=23.0 size= 2560kB time=00:00:03.48 bitrate=6021.2kbits/s speed=0.0954x 
frame= 138 fps=3.7 q=23.0 size= 2560kB time=00:00:03.52 bitrate=5942.0kbits/s speed=0.0945x 
frame= 139 fps=3.6 q=23.0 size= 2816kB time=00:00:03.57 bitrate=6451.3kbits/s speed=0.0937x 
frame= 142 fps=3.6 q=23.0 size= 2816kB time=00:00:03.71 bitrate=6209.4kbits/s speed=0.0951x 
frame= 145 fps=3.7 q=23.0 size= 2816kB time=00:00:03.80 bitrate=6057.9kbits/s speed=0.096x 
frame= 145 fps=3.6 q=23.0 size= 2816kB time=00:00:03.80 bitrate=6057.9kbits/s speed=0.0948x 
frame= 148 fps=3.6 q=23.0 size= 2816kB time=00:00:03.94 bitrate=5844.1kbits/s speed=0.0957x 
frame= 152 fps=3.6 q=23.0 size= 2816kB time=00:00:04.08 bitrate=5644.9kbits/s speed=0.0967x 
frame= 153 fps=3.6 q=23.0 size= 2816kB time=00:00:04.13 bitrate=5581.5kbits/s speed=0.0961x 
frame= 156 fps=3.5 q=23.0 size= 2816kB time=00:00:04.31 bitrate=5341.4kbits/s speed=0.0979x 
frame= 160 fps=3.6 q=23.0 size= 2816kB time=00:00:04.41 bitrate=5229.0kbits/s speed=0.0983x 
frame= 161 fps=3.5 q=23.0 size= 3072kB time=00:00:04.50 bitrate=5586.7kbits/s speed=0.0987x 
frame= 163 fps=3.5 q=23.0 size= 3072kB time=00:00:04.55 bitrate=5529.7kbits/s speed=0.0983x 
frame= 165 fps=3.5 q=23.0 size= 3072kB time=00:00:04.64 bitrate=5419.1kbits/s speed=0.0984x 
frame= 168 fps=3.5 q=23.0 size= 3072kB time=00:00:04.73 bitrate=5312.8kbits/s speed=0.0982x 
frame= 170 fps=3.5 q=23.0 size= 3072kB time=00:00:04.82 bitrate=5210.7kbits/s speed=0.0989x 
frame= 172 fps=3.5 q=23.0 size= 3072kB time=00:00:04.92 bitrate=5112.4kbits/s speed=0.0995x 
frame= 174 fps=3.5 q=23.0 size= 3072kB time=00:00:04.96 bitrate=5064.6kbits/s speed=0.0991x 
frame= 176 fps=3.5 q=23.0 size= 3072kB time=00:00:05.06 bitrate=4971.6kbits/s speed=0.0993x 
frame= 178 fps=3.4 q=23.0 size= 3072kB time=00:00:05.15 bitrate=4882.1kbits/s speed=0.0998x 
frame= 181 fps=3.4 q=23.0 size= 3072kB time=00:00:05.24 bitrate=4795.7kbits/s speed=0.0995x 
frame= 182 fps=2.9 q=-1.0 Lsize= 3597kB time=00:00:07.16 bitrate=4115.3kbits/s speed=0.113x 
video:3543kB audio:49kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.148349%
[libx264 @ 0x7f85a5b84880] frame I:1 Avg QP: 7.45 size:1298948
[libx264 @ 0x7f85a5b84880] frame P:46 Avg QP: 8.09 size: 44457
[libx264 @ 0x7f85a5b84880] frame B:135 Avg QP:17.27 size: 2100
[libx264 @ 0x7f85a5b84880] consecutive B-frames: 1.1% 0.0% 0.0% 98.9%
[libx264 @ 0x7f85a5b84880] mb I I16..4: 24.5% 22.8% 52.6%
[libx264 @ 0x7f85a5b84880] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 15.2% 0.1% 0.7% 0.0% 0.0% skip:84.0%
[libx264 @ 0x7f85a5b84880] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 11.9% 0.0% 0.0% direct: 0.0% skip:88.1% L0:69.1% L1:30.8% BI: 0.0%
[libx264 @ 0x7f85a5b84880] 8x8 transform intra:23.0% inter:72.2%
[libx264 @ 0x7f85a5b84880] coded y,uvDC,uvAC intra: 97.3% 2.2% 1.9% inter: 2.9% 0.0% 0.0%
[libx264 @ 0x7f85a5b84880] i16 v,h,dc,p: 1% 5% 83% 11%
[libx264 @ 0x7f85a5b84880] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 11% 12% 39% 7% 6% 6% 4% 6% 9%
[libx264 @ 0x7f85a5b84880] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 14% 12% 21% 10% 10% 8% 7% 7% 9%
[libx264 @ 0x7f85a5b84880] i8c dc,h,v,p: 96% 3% 0% 0%
[libx264 @ 0x7f85a5b84880] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7f85a5b84880] ref P L0: 47.1% 0.0% 52.2% 0.7%
[libx264 @ 0x7f85a5b84880] ref B L0: 55.4% 44.4% 0.2%
[libx264 @ 0x7f85a5b84880] ref B L1: 98.6% 1.4%
[libx264 @ 0x7f85a5b84880] kb/s:3986.16
[aac @ 0x7f85a5b95f40] Qavg: 2267.321


    



    2B-

    



        ffmpeg version N-92107-g4901fa1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-23)
configuration: --prefix=/home/centos/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/centos/ffmpeg_build/include --extra-ldflags=-L/home/centos/ffmpeg_build/lib --extra-libs=-lpthread --extra-libs=-lm --bindir=/home/centos/bin --enable-gpl --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libvpx --enable-libx264 --enable-nonfree
libavutil 56. 19.101 / 56. 19.101
libavcodec 58. 32.100 / 58. 32.100
libavformat 58. 18.104 / 58. 18.104
libavdevice 58. 4.105 / 58. 4.105
libavfilter 7. 33.100 / 7. 33.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/01.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.18.104
Duration: 00:00:07.28, start: 0.000000, bitrate: 4047 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 3360x2100 [SAR 1:1 DAR 8:5], 3986 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 73 kb/s (default)
Metadata:
handler_name : SoundHandler
Input #1, png_pipe, from '/tmp/square.png':
Duration: N/A, bitrate: N/A
Stream #1:0: Video: png, rgba(pc), 90x90 [SAR 1:1 DAR 1:1], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 (h264) -> overlay:main
Stream #1:0 (png) -> overlay:overlay
overlay -> Stream #0:0 (libx264)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[h264 @ 0x7f39d841d7c0] Invalid NAL unit size (2944577 > 11502).
[h264 @ 0x7f39d841d7c0] Error splitting the input into NAL units.
[h264 @ 0x7f39d8379a00] concealing 24601 DC, 24601 AC, 24601 MV errors in P frame
[h264 @ 0x7f39d839eec0] Invalid NAL unit size (1049345 > 4099).
[h264 @ 0x7f39d839eec0] Error splitting the input into NAL units.
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x7f39d8379a00] Invalid NAL unit size (127861151 > 1951).
[h264 @ 0x7f39d8379a00] Error splitting the input into NAL units.
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x7f39d841d7c0] Invalid NAL unit size (-1415429733 > 43938).
[h264 @ 0x7f39d841d7c0] Error splitting the input into NAL units.
Error while decoding stream #0:0: Invalid data found when processing input
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x7f39d8379a00] Invalid NAL unit size (-1582612070 > 41387).
[h264 @ 0x7f39d8379a00] Error splitting the input into NAL units.
Error while decoding stream #0:0: Invalid data found when processing input
**** lots of the same NAL issue ****
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x7f39d839eec0] Invalid NAL unit size (128188831 > 1956).
[h264 @ 0x7f39d839eec0] Error splitting the input into NAL units.
Error while decoding stream #0:0: Invalid data found when processing input
[h264 @ 0x7f39d8379a00] Invalid NAL unit size (13779355 > 210).
[h264 @ 0x7f39d8379a00] Error splitting the input into NAL units.
Error while decoding stream #0:0: Invalid data found when processing input
Last message repeated 1 times
[libx264 @ 0x7f39d838df00] using SAR=1/1
[libx264 @ 0x7f39d838df00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x7f39d838df00] profile High, level 5.1, 4:2:0, 8-bit
[libx264 @ 0x7f39d838df00] 264 - core 157 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - 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=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=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 '/tmp/temp.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.18.104
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 3360x2100 [SAR 1:1 DAR 8:5], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
Metadata:
encoder : Lavc58.32.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 73 kb/s (default)
Metadata:
handler_name : SoundHandler
frame= 5 fps=3.2 q=-1.0 Lsize= 360kB time=00:00:05.34 bitrate= 552.0kbits/s dup=3 drop=0 speed=3.44x 
video:309kB audio:49kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.543219%
[libx264 @ 0x7f39d838df00] frame I:1 Avg QP:19.79 size:301308
[libx264 @ 0x7f39d838df00] frame P:1 Avg QP:27.65 size: 4760
[libx264 @ 0x7f39d838df00] frame B:3 Avg QP:23.24 size: 3347
[libx264 @ 0x7f39d838df00] consecutive B-frames: 20.0% 0.0% 0.0% 80.0%
[libx264 @ 0x7f39d838df00] mb I I16..4: 2.3% 82.9% 14.8%
[libx264 @ 0x7f39d838df00] mb P I16..4: 0.1% 0.0% 0.0% P16..4: 5.6% 0.2% 4.5% 0.0% 0.0% skip:89.4%
[libx264 @ 0x7f39d838df00] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 16.0% 0.0% 0.0% direct: 0.0% skip:84.0% L0:13.4% L1:86.6% BI: 0.0%
[libx264 @ 0x7f39d838df00] 8x8 transform intra:82.8% inter:92.8%
[libx264 @ 0x7f39d838df00] coded y,uvDC,uvAC intra: 92.0% 1.6% 1.2% inter: 0.6% 0.0% 0.0%
[libx264 @ 0x7f39d838df00] i16 v,h,dc,p: 18% 72% 4% 6%
[libx264 @ 0x7f39d838df00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 9% 49% 6% 6% 5% 4% 5% 6%
[libx264 @ 0x7f39d838df00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 14% 26% 9% 10% 7% 6% 5% 5%
[libx264 @ 0x7f39d838df00] i8c dc,h,v,p: 96% 3% 1% 0%
[libx264 @ 0x7f39d838df00] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7f39d838df00] ref B L0: 99.8% 0.2%
[libx264 @ 0x7f39d838df00] ref B L1: 91.7% 8.3%
[libx264 @ 0x7f39d838df00] kb/s:12644.32
Conversion failed!


    


  • A Beginner’s Guide to Omnichannel Analytics

    14 avril 2024, par Erin

    Linear customer journeys are as obsolete as dial-up internet and floppy disks. As a marketing manager, you know better than anyone that customers interact with your brand hundreds of times across dozens of channels before purchasing. That can make tracking them a nightmare unless you build an omnichannel analytics solution. 

    Alas, if only it were that simple. 

    Unfortunately, it’s not enough to collect data on your customers’ complex journeys just by buying an omnichannel platform. You need to generate actionable insights by using marketing attribution to tie channels to conversions. 

    This article will explain how to build a useful omnichannel analytics solution that lets you understand and improve the customer journey.

    What is omnichannel analytics ?

    Omnichannel analytics collects and analyses customer data from every touchpoint and device. The goal is to collect all this omnichannel data in one place, creating a single, real-time, unified view of your customer’s journey.

    What is omnichannel analytics

    Unfortunately, most businesses haven’t achieved this yet. As Karen Lellouche Tordjman and Marco Bertini say :

    “Despite all the buzz around the concept of omnichannel, most companies still view customer journeys as a linear sequence of standardised touchpoints within a given channel. But the future of customer engagement transforms touchpoints from nodes along a predefined distribution path to full-blown portals that can serve as points of sale or pathways to many other digital and virtual interactions. They link to chatbots, kiosks, robo-advisors, and other tools that customers — especially younger ones — want to engage with.”

    However, doing so is more important than ever — especially when consumers have over 300 digital touchpoints, and the average number of touchpoints in the B2B buyer journey is 27.

    Not only that, but customers expect personalised experiences across every platform — that’s the kind you can only create when you have access to omnichannel data.

    A diagram showing how complex customer journeys are

    What might omnichannel analytics look like in practice for an e-commerce store ?

    An online store would integrate data from channels like its website, mobile app, social media accounts, Google Ads and customer service records. This would show how customers find its brand, how they use each channel to interact with it and which channels convert the most customers. 

    This would allow the e-commerce store to tailor marketing channels to customers’ needs. For instance, they could focus social media use on product discovery and customer support. Google Ads campaigns could target the best-converting products. While all this is happening, the store could also ensure every channel looks the same and delivers the same experience. 

    What are the benefits of omnichannel analytics ?

    Why go to all the trouble of creating a comprehensive view of the customer’s experience ? Because you stand to gain some pretty significant benefits when implementing omnichannel analytics.

    What are the benefits of omnichannel analytics?

    Understand the customer journey

    You want to understand how your customers behave, right ? No other method will allow you to fully understand your customer journey the way omnichannel analytics does. 

    It doesn’t matter how customers engage with your brand — whether that’s your website, app, social media profiles or physical stores — omnichannel analytics capture every interaction.

    With this 360-degree view of your customers, it’s easy to understand how they move between channels, where they encounter issues and what bottlenecks prevent them from converting. 

    Deliver better personalisation

    We don’t have to tell you that personalisation matters. But do you know just how important it is ? Since 56% of customers will become repeat buyers after a personalised experience, delivering them as often as possible is critical. 

    Omnichannel analytics helps in your quest for personalisation by highlighting the individual preferences of customer segments. For example, e-commerce stores can use omnichannel analytics to understand how shoppers behave across different devices and tailor their offers accordingly. 

    Upgrade the customer experience

    Omnichannel analytics gives you the insights to improve every aspect of the customer experience. 

    For starters, you can ensure a consistent brand experience across all your top channels by making sure they look and behave the same.

    Then, you can use omnichannel insights to tailor each channel to your customers’ requirements. For example, most people interacting with your brand on social media may seek support. Knowing that you can create dedicated support accounts to assist users. 

    Improve marketing campaigns

    Which marketing campaigns or traffic sources convert the most customers ? How can you improve these campaigns ? Omnichannel analytics has the answers. 

    When you implement omnichannel analytics you automatically track the performance of every marketing channel by attributing each conversion to one or more traffic sources. This lets you see whether Google Ads bring in more customers than your SEO efforts. Or whether social media ads are the most profitable acquisition channel. 

    Armed with this information, you can improve your marketing efforts — either by focusing on your profitable channels or rectifying problems that stop less profitable channels from converting.

    What are the challenges of omnichannel analytics ?

    There are three challenges when implementing an omnichannel analytics solution :

    What are the challenges of omnichannel analytics?
    • Complex customer journeys : Customer journeys aren’t linear and can be incredibly difficult to track. 
    • Regulatory and privacy issues : When you start gathering customer data, you quickly come up against consumer privacy laws. 
    • No underlying goal : There has to be a reason to go to all this effort, but brands don’t always have goals in mind before they start. 

    You can’t do anything about the first challenge. 

    After all, your customer journey will almost never be linear. And isn’t the point of implementing an omnichannel solution to understand these complex journeys in the first place ? Once you set up omnichannel analytics, these journeys will be much easier to decipher. 

    As for the other two :

    Using the right software that respects user privacy and complies with all major privacy laws will avoid regulatory issues. Take Matomo, for instance. Our software was designed with privacy in mind and is configured to follow the strictest privacy laws, such as GDPR. 

    Tying omnichannel analytics to marketing attribution will solve the final challenge by giving your omnichannel efforts a goal. When you tie omnichannel analytics to your marketing efforts, you aren’t just getting a 360-degree view of your customer journey for the sake of it. You are getting that view to improve your marketing efforts and increase sales.

    Try Matomo for Free

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

    No credit card required

    How to set up an omnichannel analytics solution

    Want to set up a seamless analytical environment that incorporates data from every possible source ? Follow these five steps :

    Choose one or more analytics providers

    You can use several tools to build an omnichannel analytics solution. These include web and app analytics tools, customer data platforms that centralise first-party data and business intelligence tools (typically used for visualisation). 

    Which tools you use will depend on your goals and your budget — the loftier your ambitions and the higher your budget, the more tools you can use. 

    Ideally, you should use as few tools as possible to capture your data. Most teams won’t need business intelligence platforms, for example. However, you may or may not need both an analytics platform and a customer data platform. Your decision will depend on how many channels your customers use and how well your analytics tool tracks everything.

    If it can capture web and app usage while integrating with third-party platforms like your back-end e-commerce platform, then it’s probably enough.

    Collect accurate data at every touchpoint 

    Your omnichannel analytics efforts hinge on the quantity and quality of data you can collect. You want to gather data from every touchpoint possible and store that data in as few places as possible. That’s why choosing as few tools as possible in the step above is so important. 

    So, where should you start ? Common data sources include :

    • Your website
    • Apps (iOS and Android)
    • Social media profiles
    • ERPs
    • PoS systems

    At the same time, make sure you’re tracking all relevant metrics. Revenue, customer engagement and conversion-focused metrics like conversion rate, dwell time, cart abandonment rate and churn rate are particularly important. 

    Set up marketing attribution

    Setting up marketing attribution (also known as multi-touch attribution) is essential to tie omnichannel data to business goals. It’s the only way to know exactly how valuable each marketing channel is and where each customer comes from. 

    You’ll want to use multi-touch attribution, given you have data from across the customer journey.

    Image of six different attribution models

    Multi-touch attribution models can include (but are not limited to) :

    • Linear : where each touchpoint is given equal weighting
    • Time decay : where touchpoints are more valuable the nearer they are to conversion
    • Position-based : where the first and last touch points are more valuable than all the others. 

    You don’t have to use just one of the models above, however. One of the benefits of using a web analytics tool like Matomo is that you can choose between different attribution models and compare them.

    Try Matomo for Free

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

    No credit card required

    Create reports that help you visualise data

    Dashboards are your friend here. They’ll let you see KPIs at a glance, allowing you to keep track of day-to-day changes in your customer journey. Ideally, you’ll want a platform that lets you customise dashboard widgets so only relevant KPIs are shown. 

    A custom graph created in Matomo

    Setting up standard and custom reports is also important. Custom reports allow you to choose metrics and dimensions that align with your goals. They will also allow you to present your data most meaningfully to your team, increasing the likelihood they act upon insights. 

    Analyse data and take action

    Now that you have customer journey data at your fingertips, it’s time to analyse it. After all, there’s no point in implementing an omnichannel analytics solution if you aren’t going to take action. 

    If you’re unsure where to start, re-read the benefits we listed at the start of this article. You could use your omnichannel insights to improve your marketing campaigns by doubling down on the channels that bring in the best customers.

    Or you could identify (and fix) bottlenecks in the customer journey so customers are less likely to fall out of your funnel between certain channels. 

    Just make sure you take action based on your data alone.

    Make the most of omnichannel analytics with Matomo

    A comprehensive web and app analytics platform is vital to any omnichannel analytics strategy. 

    But not just any solution will do. When privacy regulations impede an omnichannel analytics solution, you need a platform to capture accurate data without breaking privacy laws or your users’ trust. 

    That’s where Matomo comes in. Our privacy-friendly web analytics platform ensures accurate tracking of web traffic while keeping you compliant with even the strictest regulations. Moreover, our range of APIs and SDKs makes it easy to track interactions from all your digital products (website, apps, e-commerce back-ends, etc.) in one place. 

    Try Matomo for free for 21 days. No credit card required.

  • I want to take any Audio from a file and encode it as PCM_ALAW. My Example is a .m4a file to .wav file

    22 novembre 2023, par Clockman

    I have been working on this for a while now while am generally new to ffmpeg library, I have studied it a bit. The challenge I have that at the point of witting to file I get the following exception.

    


    "Exception thrown at 0x00007FFACA8305B3 (avformat-60.dll) in FfmpegPractice.exe : 0xC0000005 : Access violation writing location 0x0000000000000000.". I understand this means am writing to an uninitialized buffer am unable to discover why this is happening. The exception call stack shows the following

    


    avformat-60.dll!avformat_write_header() C
avformat-60.dll!ff_write_chained()  C
avformat-60.dll!ff_write_chained()  C
avformat-60.dll!av_write_frame()    C
FfmpegPractice.exe!main() Line 215  C++


    


    Some things I have tried

    


    This code is part of a larger project built with CMake but for some reason I could no step into ffmpeg library while debugging, So I recompiled ffmpeg ensured debugging was enabled so I could drill down to the root cause but I still could not step into the ffmpeg library.

    


    I then created a minimal project using visual studio c++ console project and I still could not step into the code.

    


    I have read through many ffmpeg docs and some I could find on the internet and I still could not solve it.

    


    This is the code

    


    #include <iostream>&#xA;&#xA;extern "C" {&#xA;#include <libavcodec></libavcodec>avcodec.h>&#xA;#include <libavformat></libavformat>avformat.h>&#xA;#include <libswresample></libswresample>swresample.h>&#xA;#include <libavutil></libavutil>opt.h>&#xA;#include <libavutil></libavutil>audio_fifo.h>&#xA;}&#xA;&#xA;using namespace std;&#xA;&#xA;//in audio file&#xA;string filename{ "rapid_caller_test.m4a" };&#xA;AVFormatContext* pFormatCtx{};&#xA;AVCodecContext* pCodecCtx{};&#xA;AVStream* pStream{};&#xA;&#xA;//out audio file&#xA;string outFilename{ "output.wav" };&#xA;AVFormatContext* pOutFormatCtx{ nullptr };&#xA;AVCodecContext* pOutCodecCtx{ nullptr };&#xA;AVIOContext* pOutIoContext{ nullptr };&#xA;const AVCodec* pOutCodec{ nullptr };&#xA;AVStream* pOutStream{ nullptr };&#xA;const int OUTPUT_CHANNELS = 1;&#xA;const int SAMPLE_RATE = 8000;&#xA;const int OUT_BIT_RATE = 64000;&#xA;uint8_t** convertedSamplesBuffer{ nullptr };&#xA;int64_t dstNmbrSamples{ 0 };&#xA;int dstLineSize{ 0 };&#xA;static int64_t pts{ 0 };&#xA;&#xA;//conversion context;&#xA;SwrContext* swr{};&#xA;&#xA;uint32_t i{ 0 };&#xA;int audiostream{ -1 };&#xA;&#xA;&#xA;void cleanUp() &#xA;{&#xA;  avcodec_free_context(&amp;pOutCodecCtx);;&#xA;  avio_closep(&amp;(pOutFormatCtx)->pb);&#xA;  avformat_free_context(pOutFormatCtx);&#xA;  pOutFormatCtx = nullptr;&#xA;}&#xA;&#xA;int main()&#xA;{&#xA;&#xA;/*&#xA;* section to setup input file&#xA;*/&#xA;if (avformat_open_input(&amp;pFormatCtx, filename.data(), nullptr, nullptr) != 0) {&#xA;  cout &lt;&lt; "could not open file " &lt;&lt; filename &lt;&lt; endl;&#xA;  return -1;&#xA;}&#xA;if (avformat_find_stream_info(pFormatCtx, nullptr) &lt; 0) {&#xA;  cout &lt;&lt; "Could not retrieve stream information from file " &lt;&lt; filename &lt;&lt; endl;&#xA;  return -1;&#xA;}&#xA;av_dump_format(pFormatCtx, 0, filename.c_str(), 0);&#xA;&#xA;for (i = 0; i &lt; pFormatCtx->nb_streams; i&#x2B;&#x2B;) {&#xA;  if (pFormatCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {&#xA;    audiostream = i;&#xA;    break;&#xA;  }&#xA;}&#xA;if (audiostream == -1) {&#xA;  cout &lt;&lt; "did not find audio stream" &lt;&lt; endl;&#xA;  return -1;&#xA;}&#xA;&#xA;pStream = pFormatCtx->streams[audiostream];&#xA;const AVCodec* pCodec{ avcodec_find_decoder(pStream->codecpar->codec_id) };&#xA;pCodecCtx = avcodec_alloc_context3(pCodec);&#xA;avcodec_parameters_to_context(pCodecCtx, pStream->codecpar);&#xA;if (avcodec_open2(pCodecCtx, pCodec, nullptr)) {&#xA;  cout &lt;&lt; "could not open codec" &lt;&lt; endl;&#xA;  return -1;&#xA;}&#xA;&#xA;/*&#xA;* section to set up output file which is a G711 audio&#xA;*/&#xA;if (avio_open(&amp;pOutIoContext, outFilename.data(), AVIO_FLAG_WRITE)) {&#xA;  cout &lt;&lt; "could not open out put file" &lt;&lt; endl;&#xA;  return -1;&#xA;}&#xA;if (!(pOutFormatCtx = avformat_alloc_context())) {&#xA;  cout &lt;&lt; "could not create format conext" &lt;&lt; endl;&#xA;  cleanUp();&#xA;  return -1;&#xA;}&#xA;pOutFormatCtx->pb = pOutIoContext;&#xA;if (!(pOutFormatCtx->oformat = av_guess_format(nullptr, outFilename.data(), nullptr))) {&#xA;  cout &lt;&lt; "could not find output file format" &lt;&lt; endl;&#xA;  cleanUp();&#xA;  return -1;&#xA;}&#xA;if (!(pOutFormatCtx->url = av_strdup(outFilename.data()))) {&#xA;  cout &lt;&lt; "could not allocate file name" &lt;&lt; endl;&#xA;  cleanUp();&#xA;  return -1;&#xA;}&#xA;if (!(pOutCodec = avcodec_find_encoder(AV_CODEC_ID_PCM_ALAW))) {&#xA;  cout &lt;&lt; "codec not found" &lt;&lt; endl;&#xA;  cleanUp();&#xA;  return -1;&#xA;}&#xA;if (!(pOutStream = avformat_new_stream(pOutFormatCtx, nullptr))) {&#xA;  cout &lt;&lt; "could not create new stream" &lt;&lt; endl;&#xA;  cleanUp();&#xA;  return -1;&#xA;}&#xA;if (!(pOutCodecCtx = avcodec_alloc_context3(pOutCodec))) {&#xA;  cout &lt;&lt; "could not allocate codec context" &lt;&lt; endl;&#xA;  return -1;&#xA;}&#xA;av_channel_layout_default(&amp;pOutCodecCtx->ch_layout, OUTPUT_CHANNELS);&#xA;pOutCodecCtx->sample_rate = SAMPLE_RATE;&#xA;pOutCodecCtx->sample_fmt = pOutCodec->sample_fmts[0];&#xA;pOutCodecCtx->bit_rate = OUT_BIT_RATE;&#xA;&#xA;//setting sample rate for the container&#xA;pOutStream->time_base.den = SAMPLE_RATE;&#xA;pOutStream->time_base.num = 1;&#xA;if (pOutFormatCtx->oformat->flags &amp; AVFMT_GLOBALHEADER)&#xA;  pOutCodecCtx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;&#xA;&#xA;if (avcodec_open2(pOutCodecCtx, pOutCodec, nullptr)) {&#xA;  cout &lt;&lt; "could not open output codec" &lt;&lt; endl;&#xA;  cleanUp();&#xA;  return -1;&#xA;}&#xA;if ((avcodec_parameters_from_context(pOutStream->codecpar, pOutCodecCtx)) &lt; 0) {&#xA;  cout &lt;&lt; "could not initialize stream parameters" &lt;&lt; endl;&#xA;}   &#xA;&#xA;AVPacket* packet = av_packet_alloc();&#xA;&#xA;swr = swr_alloc();&#xA;swr_alloc_set_opts2(&amp;swr, &amp;pOutCodecCtx->ch_layout, pOutCodecCtx->sample_fmt, pOutCodecCtx->sample_rate,&amp;pCodecCtx->ch_layout, pCodecCtx->sample_fmt, pCodecCtx->sample_rate, 0, nullptr);&#xA;swr_init(swr);&#xA;&#xA;int ret{};&#xA;int bSize{};&#xA;while (av_read_frame(pFormatCtx, packet) >= 0) {&#xA;  AVFrame* pFrame = av_frame_alloc();&#xA;  AVFrame* pOutFrame = av_frame_alloc();&#xA;  if (packet->stream_index == audiostream) {&#xA;    ret = avcodec_send_packet(pCodecCtx, packet);&#xA;    while (ret >= 0) {&#xA;    ret = avcodec_receive_frame(pCodecCtx, pFrame);&#xA;    if (ret == AVERROR(EAGAIN))&#xA;    continue;&#xA;    else if (ret == AVERROR_EOF)&#xA;    break;&#xA;    dstNmbrSamples = av_rescale_rnd(swr_get_delay(swr, pCodecCtx->sample_rate) &#x2B; pFrame->nb_samples, pOutCodecCtx->sample_rate, pCodecCtx->sample_rate, AV_ROUND_UP);&#xA;    if ((av_samples_alloc_array_and_samples(&amp;convertedSamplesBuffer, &amp;dstLineSize, pOutCodecCtx->ch_layout.nb_channels,dstNmbrSamples, pOutCodecCtx->sample_fmt, 0)) &lt; 0) {&#xA;    cout &lt;&lt; "coult not allocate samples array and buffer" &lt;&lt; endl;&#xA;    }&#xA;    int channel_samples_count{ 0 };&#xA;    channel_samples_count = swr_convert(swr, convertedSamplesBuffer, dstNmbrSamples, (const uint8_t**)pFrame->data, pFrame->nb_samples);&#xA;    bSize = av_samples_get_buffer_size(&amp;dstLineSize, pOutCodecCtx->ch_layout.nb_channels, channel_samples_count, pOutCodecCtx->sample_fmt, 0);&#xA;    cout &lt;&lt; "no of samples is " &lt;&lt; channel_samples_count &lt;&lt; " the buffer size " &lt;&lt; bSize &lt;&lt; endl;&#xA;    pOutFrame->nb_samples = channel_samples_count;&#xA;    av_channel_layout_copy(&amp;pOutFrame->ch_layout, &amp;pOutCodecCtx->ch_layout);&#xA;    pOutFrame->format = pOutCodecCtx->sample_fmt;&#xA;    pOutFrame->sample_rate = pOutCodecCtx->sample_rate;&#xA;    if ((av_frame_get_buffer(pOutFrame, 0)) &lt; 0) {&#xA;    cout &lt;&lt; "could not allocate output frame samples " &lt;&lt; endl;&#xA;    av_frame_free(&amp;pOutFrame);&#xA;  }&#xA;                &#xA;    //populate out frame buffer&#xA;    av_frame_make_writable(pOutFrame);&#xA;    for (int i{ 0 }; i &lt; bSize; i&#x2B;&#x2B;) {&#xA;    pOutFrame->data[0][i] = convertedSamplesBuffer[0][i];&#xA;    cout &lt;&lt; pOutFrame->data[0][i];&#xA;   }&#xA;   if (pOutFrame) {&#xA;   pOutFrame->pts = pts;&#xA;   pts &#x2B;= pOutFrame->nb_samples;&#xA;  }&#xA;   int res = avcodec_send_frame(pOutCodecCtx, pOutFrame);&#xA;    if (res &lt; 0) {&#xA;    cout &lt;&lt; "error sending frame to encoder" &lt;&lt; endl;&#xA;    cleanUp();&#xA;    return -1;&#xA;   }&#xA;   //int er = avformat_write_header(pOutFormatCtx,nullptr);&#xA;   AVPacket* pOutPacket = av_packet_alloc();&#xA;   pOutPacket->time_base.num = 1;&#xA;   pOutPacket->time_base.den = 8000;&#xA;   if (pOutPacket == nullptr) {&#xA;    cout &lt;&lt; "unable to allocate packet" &lt;&lt; endl;&#xA;  }&#xA;  while (res >= 0) {&#xA;   res = avcodec_receive_packet(pOutCodecCtx, pOutPacket);&#xA;   if (res == AVERROR(EAGAIN))&#xA;    continue;&#xA;   else if (ret == AVERROR_EOF)&#xA;    break;&#xA;   av_packet_rescale_ts(pOutPacket, pOutCodecCtx->time_base, pOutFormatCtx->streams[0]->time_base);&#xA;   //av_dump_format(pOutFormatCtx, 0, outFilename.c_str(), 1);&#xA;   if (av_write_frame(pOutFormatCtx, pOutPacket) &lt; 0) {&#xA;    cout &lt;&lt; "could not write frame" &lt;&lt; endl;&#xA;    }&#xA;   }&#xA;  }&#xA;}&#xA; av_frame_free(&amp;pFrame);&#xA; av_frame_free(&amp;pOutFrame);&#xA;}&#xA;if (av_write_trailer(pOutFormatCtx) &lt; 0) {&#xA; cout &lt;&lt; "could not write file trailer" &lt;&lt; endl;&#xA;}&#xA;swr_free(&amp;swr);&#xA;avcodec_free_context(&amp;pOutCodecCtx);&#xA;av_packet_free(&amp;packet);&#xA;}&#xA;</iostream>

    &#xA;

    Error/Exception

    &#xA;

    The exception is thrown when I call

    &#xA;

    if (av_write_frame(pOutFormatCtx, pOutPacket) &lt; 0)  {   cout &lt;&lt; "could not write frame" &lt;&lt; endl; } &#xA;I also called this line

    &#xA;

    //int er = avformat_write_header(pOutFormatCtx,nullptr);

    &#xA;

    to see if I will get an exception but it did not throw any exception.

    &#xA;

    I have spent weeks on this issue with no success.&#xA;My goal is to take any audio from a file an be able to resample it if need be, and transcode it to PCM_ALAW.&#xA;I will appreciate any help I can get.

    &#xA;