Recherche avancée

Médias (91)

Autres articles (97)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • Multilang : améliorer l’interface pour les blocs multilingues

    18 février 2011, par

    Multilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
    Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela.

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

Sur d’autres sites (10474)

  • FFMPEG Output File is Empty Nothing was Encoded (for a Picture) ?

    4 mars 2023, par Sarah Szabo

    I have a strange issue effecting one of my programs that does bulk media conversions using ffmpeg from the command line, however this effects me using it directly from the shell as well :

    


    ffmpeg -i INPUT.mkv -ss 0:30 -y -qscale:v 2 -frames:v 1 -f image2 -huffman optimal "OUTPUT.png"
fails every run with the error message :
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)

    


    This only happens with very specific videos, and seemingly no other videos. File type is usually .webm. These files have been downloaded properly (usually from yt-dlp), and I have tried re-downloading them just to verify their integrity.

    


    One such file from a colleague was : https://www.dropbox.com/s/xkucr2z5ra1p2oh/Triggerheart%20Execlica%20OST%20%28Arrange%29%20-%20Crueltear%20Ending.mkv?dl=0

    


    Is there a subtle issue with the command string ?

    


    Notes :

    


    removing -huffman optimal had no effect

    


    moving -ss to before -i had no effect

    


    removing -f image2 had no effect

    


    Full Log :

    


    sarah@MidnightStarSign:~/Music/Playlists/Indexing/Indexing Temp$ ffmpeg -i Triggerheart\ Execlica\ OST\ \(Arrange\)\ -\ Crueltear\ Ending.mkv -ss 0:30 -y -qscale:v 2 -frames:v 1 -f image2 -huffman optimal "TEST.png"
ffmpeg version n5.1.2 Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 12.2.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-version3 --enable-vulkan
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
[matroska,webm @ 0x55927f484740] Could not find codec parameters for stream 2 (Attachment: none): unknown codec
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, matroska,webm, from 'Triggerheart Execlica OST (Arrange) - Crueltear Ending.mkv':
  Metadata:
    title           : TriggerHeart Exelica PS2 & 360 Arrange ー 16 - Crueltear Ending
    PURL            : https://www.youtube.com/watch?v=zJ0bEa_8xEg
    COMMENT         : https://www.youtube.com/watch?v=zJ0bEa_8xEg
    ARTIST          : VinnyVynce
    DATE            : 20170905
    ENCODER         : Lavf59.27.100
  Duration: 00:00:30.00, start: -0.007000, bitrate: 430 kb/s
  Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709), 720x720, SAR 1:1 DAR 1:1, 25 fps, 25 tbr, 1k tbn (default)
    Metadata:
      DURATION        : 00:00:29.934000000
  Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      DURATION        : 00:00:30.001000000
  Stream #0:2: Attachment: none
    Metadata:
      filename        : cover.webp
      mimetype        : image/webp
Codec AVOption huffman (Huffman table strategy) specified for output file #0 (TEST.png) 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 (vp9 (native) -> png (native))
Press [q] to stop, [?] for help
Output #0, image2, to 'TEST.png':
  Metadata:
    title           : TriggerHeart Exelica PS2 & 360 Arrange ー 16 - Crueltear Ending
    PURL            : https://www.youtube.com/watch?v=zJ0bEa_8xEg
    COMMENT         : https://www.youtube.com/watch?v=zJ0bEa_8xEg
    ARTIST          : VinnyVynce
    DATE            : 20170905
    encoder         : Lavf59.27.100
  Stream #0:0(eng): Video: png, rgb24, 720x720 [SAR 1:1 DAR 1:1], q=2-31, 200 kb/s, 25 fps, 25 tbn (default)
    Metadata:
      DURATION        : 00:00:29.934000000
      encoder         : Lavc59.37.100 png
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A speed=   0x    
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)


    


    Manjaro OS System Specs :

    


    System:&#xA;  Kernel: 6.1.12-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 12.2.1&#xA;    parameters: BOOT_IMAGE=/@/boot/vmlinuz-6.1-x86_64&#xA;    root=UUID=f11386cf-342d-47ac-84e6-484b7b2f377d rw rootflags=subvol=@&#xA;    radeon.modeset=1 nvdia-drm.modeset=1 quiet&#xA;    cryptdevice=UUID=059df4b4-5be4-44d6-a23a-de81135eb5b4:luks-disk&#xA;    root=/dev/mapper/luks-disk apparmor=1 security=apparmor&#xA;    resume=/dev/mapper/luks-swap udev.log_priority=3&#xA;  Desktop: KDE Plasma v: 5.26.5 tk: Qt v: 5.15.8 wm: kwin_x11 vt: 1 dm: SDDM&#xA;    Distro: Manjaro Linux base: Arch Linux&#xA;Machine:&#xA;  Type: Desktop Mobo: ASUSTeK model: PRIME X570-PRO v: Rev X.0x&#xA;    serial: <superuser required="required"> UEFI: American Megatrends v: 4408&#xA;    date: 10/27/2022&#xA;Battery:&#xA;  Message: No system battery data found. Is one present?&#xA;Memory:&#xA;  RAM: total: 62.71 GiB used: 27.76 GiB (44.3%)&#xA;  RAM Report: permissions: Unable to run dmidecode. Root privileges required.&#xA;CPU:&#xA;  Info: model: AMD Ryzen 9 5950X bits: 64 type: MT MCP arch: Zen 3&#x2B; gen: 4&#xA;    level: v3 note: check built: 2022 process: TSMC n6 (7nm) family: 0x19 (25)&#xA;    model-id: 0x21 (33) stepping: 0 microcode: 0xA201016&#xA;  Topology: cpus: 1x cores: 16 tpc: 2 threads: 32 smt: enabled cache:&#xA;    L1: 1024 KiB desc: d-16x32 KiB; i-16x32 KiB L2: 8 MiB desc: 16x512 KiB&#xA;    L3: 64 MiB desc: 2x32 MiB&#xA;  Speed (MHz): avg: 4099 high: 4111 min/max: 2200/6358 boost: disabled&#xA;    scaling: driver: acpi-cpufreq governor: schedutil cores: 1: 4099 2: 4095&#xA;    3: 4102 4: 4100 5: 4097 6: 4100 7: 4110 8: 4111 9: 4083 10: 4099 11: 4100&#xA;    12: 4094 13: 4097 14: 4101 15: 4100 16: 4099 17: 4100 18: 4097 19: 4098&#xA;    20: 4095 21: 4100 22: 4099 23: 4099 24: 4105 25: 4098 26: 4100 27: 4100&#xA;    28: 4092 29: 4103 30: 4101 31: 4100 32: 4099 bogomips: 262520&#xA;  Flags: 3dnowprefetch abm adx aes aperfmperf apic arat avic avx avx2 bmi1&#xA;    bmi2 bpext cat_l3 cdp_l3 clflush clflushopt clwb clzero cmov cmp_legacy&#xA;    constant_tsc cpb cpuid cqm cqm_llc cqm_mbm_local cqm_mbm_total&#xA;    cqm_occup_llc cr8_legacy cx16 cx8 de decodeassists erms extapic&#xA;    extd_apicid f16c flushbyasid fma fpu fsgsbase fsrm fxsr fxsr_opt ht&#xA;    hw_pstate ibpb ibrs ibs invpcid irperf lahf_lm lbrv lm mba mca mce&#xA;    misalignsse mmx mmxext monitor movbe msr mtrr mwaitx nonstop_tsc nopl npt&#xA;    nrip_save nx ospke osvw overflow_recov pae pat pausefilter pclmulqdq&#xA;    pdpe1gb perfctr_core perfctr_llc perfctr_nb pfthreshold pge pku pni popcnt&#xA;    pse pse36 rapl rdpid rdpru rdrand rdseed rdt_a rdtscp rep_good sep sha_ni&#xA;    skinit smap smca smep ssbd sse sse2 sse4_1 sse4_2 sse4a ssse3 stibp succor&#xA;    svm svm_lock syscall tce topoext tsc tsc_scale umip v_spec_ctrl&#xA;    v_vmsave_vmload vaes vgif vmcb_clean vme vmmcall vpclmulqdq wbnoinvd wdt&#xA;    x2apic xgetbv1 xsave xsavec xsaveerptr xsaveopt xsaves&#xA;  Vulnerabilities:&#xA;  Type: itlb_multihit status: Not affected&#xA;  Type: l1tf status: Not affected&#xA;  Type: mds status: Not affected&#xA;  Type: meltdown status: Not affected&#xA;  Type: mmio_stale_data status: Not affected&#xA;  Type: retbleed status: Not affected&#xA;  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via&#xA;    prctl&#xA;  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer&#xA;    sanitization&#xA;  Type: spectre_v2 mitigation: Retpolines, IBPB: conditional, IBRS_FW,&#xA;    STIBP: always-on, RSB filling, PBRSB-eIBRS: Not affected&#xA;  Type: srbds status: Not affected&#xA;  Type: tsx_async_abort status: Not affected&#xA;Graphics:&#xA;  Device-1: NVIDIA GA104 [GeForce RTX 3070] vendor: ASUSTeK driver: nvidia&#xA;    v: 525.89.02 alternate: nouveau,nvidia_drm non-free: 525.xx&#x2B;&#xA;    status: current (as of 2023-02) arch: Ampere code: GAxxx&#xA;    process: TSMC n7 (7nm) built: 2020-22 pcie: gen: 4 speed: 16 GT/s lanes: 8&#xA;    link-max: lanes: 16 bus-ID: 0b:00.0 chip-ID: 10de:2484 class-ID: 0300&#xA;  Device-2: AMD Cape Verde PRO [Radeon HD 7750/8740 / R7 250E]&#xA;    vendor: VISIONTEK driver: radeon v: kernel alternate: amdgpu arch: GCN-1&#xA;    code: Southern Islands process: TSMC 28nm built: 2011-20 pcie: gen: 3&#xA;    speed: 8 GT/s lanes: 8 link-max: lanes: 16 ports: active: DP-3,DP-4&#xA;    empty: DP-1, DP-2, DP-5, DP-6 bus-ID: 0c:00.0 chip-ID: 1002:683f&#xA;    class-ID: 0300 temp: 54.0 C&#xA;  Device-3: Microdia USB 2.0 Camera type: USB driver: snd-usb-audio,uvcvideo&#xA;    bus-ID: 9-2:3 chip-ID: 0c45:6367 class-ID: 0102 serial: <filter>&#xA;  Display: x11 server: X.Org v: 21.1.7 with: Xwayland v: 22.1.8&#xA;    compositor: kwin_x11 driver: X: loaded: modesetting,nvidia dri: radeonsi&#xA;    gpu: radeon display-ID: :0 screens: 1&#xA;  Screen-1: 0 s-res: 5760x2160 s-dpi: 80 s-size: 1829x686mm (72.01x27.01")&#xA;    s-diag: 1953mm (76.91")&#xA;  Monitor-1: DP-1 pos: 1-2 res: 1920x1080 dpi: 93&#xA;    size: 527x296mm (20.75x11.65") diag: 604mm (23.8") modes: N/A&#xA;  Monitor-2: DP-1-3 pos: 2-1 res: 1920x1080 dpi: 82&#xA;    size: 598x336mm (23.54x13.23") diag: 686mm (27.01") modes: N/A&#xA;  Monitor-3: DP-1-4 pos: 1-1 res: 1920x1080 dpi: 93&#xA;    size: 527x296mm (20.75x11.65") diag: 604mm (23.8") modes: N/A&#xA;  Monitor-4: DP-3 pos: primary,2-2 res: 1920x1080 dpi: 82&#xA;    size: 598x336mm (23.54x13.23") diag: 686mm (27.01") modes: N/A&#xA;  Monitor-5: DP-4 pos: 2-4 res: 1920x1080 dpi: 82&#xA;    size: 598x336mm (23.54x13.23") diag: 686mm (27.01") modes: N/A&#xA;  Monitor-6: HDMI-0 pos: 1-3 res: 1920x1080 dpi: 93&#xA;    size: 527x296mm (20.75x11.65") diag: 604mm (23.8") modes: N/A&#xA;  API: OpenGL v: 4.6.0 NVIDIA 525.89.02 renderer: NVIDIA GeForce RTX&#xA;    3070/PCIe/SSE2 direct-render: Yes&#xA;Audio:&#xA;  Device-1: NVIDIA GA104 High Definition Audio vendor: ASUSTeK&#xA;    driver: snd_hda_intel bus-ID: 5-1:2 v: kernel chip-ID: 30be:1019 pcie:&#xA;    class-ID: 0102 gen: 4 speed: 16 GT/s lanes: 8 link-max: lanes: 16&#xA;    bus-ID: 0b:00.1 chip-ID: 10de:228b class-ID: 0403&#xA;  Device-2: AMD Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000&#xA;    Series] vendor: VISIONTEK driver: snd_hda_intel v: kernel pcie: gen: 3&#xA;    speed: 8 GT/s lanes: 8 link-max: lanes: 16 bus-ID: 0c:00.1&#xA;    chip-ID: 1002:aab0 class-ID: 0403&#xA;  Device-3: AMD Starship/Matisse HD Audio vendor: ASUSTeK&#xA;    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16&#xA;    bus-ID: 0e:00.4 chip-ID: 1022:1487 class-ID: 0403&#xA;  Device-4: Schiit Audio Unison Universal Dac type: USB driver: snd-usb-audio&#xA;  Device-5: JMTek LLC. Plugable USB Audio Device type: USB&#xA;    driver: hid-generic,snd-usb-audio,usbhid bus-ID: 5-2:3 chip-ID: 0c76:120b&#xA;    class-ID: 0300 serial: <filter>&#xA;  Device-6: ASUSTek ASUS AI Noise-Cancelling Mic Adapter type: USB&#xA;    driver: hid-generic,snd-usb-audio,usbhid bus-ID: 5-4:4 chip-ID: 0b05:194e&#xA;    class-ID: 0300 serial: <filter>&#xA;  Device-7: Microdia USB 2.0 Camera type: USB driver: snd-usb-audio,uvcvideo&#xA;    bus-ID: 9-2:3 chip-ID: 0c45:6367 class-ID: 0102 serial: <filter>&#xA;  Sound API: ALSA v: k6.1.12-1-MANJARO running: yes&#xA;  Sound Interface: sndio v: N/A running: no&#xA;  Sound Server-1: PulseAudio v: 16.1 running: no&#xA;  Sound Server-2: PipeWire v: 0.3.65 running: yes&#xA;Network:&#xA;  Device-1: Intel I211 Gigabit Network vendor: ASUSTeK driver: igb v: kernel&#xA;    pcie: gen: 1 speed: 2.5 GT/s lanes: 1 port: f000 bus-ID: 07:00.0&#xA;    chip-ID: 8086:1539 class-ID: 0200&#xA;  IF: enp7s0 state: up speed: 1000 Mbps duplex: full mac: <filter>&#xA;  IP v4: <filter> type: dynamic noprefixroute scope: global&#xA;    broadcast: <filter>&#xA;  IP v6: <filter> type: noprefixroute scope: link&#xA;  IF-ID-1: docker0 state: down mac: <filter>&#xA;  IP v4: <filter> scope: global broadcast: <filter>&#xA;  WAN IP: <filter>&#xA;Bluetooth:&#xA;  Device-1: Cambridge Silicon Radio Bluetooth Dongle (HCI mode) type: USB&#xA;    driver: btusb v: 0.8 bus-ID: 5-5.3:7 chip-ID: 0a12:0001 class-ID: e001&#xA;  Report: rfkill ID: hci0 rfk-id: 0 state: up address: see --recommends&#xA;Logical:&#xA;  Message: No logical block device data found.&#xA;  Device-1: luks-c847cf9f-c6b5-4624-a25e-4531e318851a maj-min: 254:2&#xA;    type: LUKS dm: dm-2 size: 3.64 TiB&#xA;  Components:&#xA;  p-1: sda1 maj-min: 8:1 size: 3.64 TiB&#xA;  Device-2: luks-swap maj-min: 254:1 type: LUKS dm: dm-1 size: 12 GiB&#xA;  Components:&#xA;  p-1: nvme0n1p2 maj-min: 259:2 size: 12 GiB&#xA;  Device-3: luks-disk maj-min: 254:0 type: LUKS dm: dm-0 size: 919.01 GiB&#xA;  Components:&#xA;  p-1: nvme0n1p3 maj-min: 259:3 size: 919.01 GiB&#xA;RAID:&#xA;  Message: No RAID data found.&#xA;Drives:&#xA;  Local Storage: total: 9.1 TiB used: 2.79 TiB (30.6%)&#xA;  SMART Message: Unable to run smartctl. Root privileges required.&#xA;  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Western Digital&#xA;    model: WDS100T3X0C-00SJG0 size: 931.51 GiB block-size: physical: 512 B&#xA;    logical: 512 B speed: 31.6 Gb/s lanes: 4 type: SSD serial: <filter>&#xA;    rev: 111110WD temp: 53.9 C scheme: GPT&#xA;  ID-2: /dev/nvme1n1 maj-min: 259:4 vendor: Western Digital&#xA;    model: WDS100T2B0C-00PXH0 size: 931.51 GiB block-size: physical: 512 B&#xA;    logical: 512 B speed: 31.6 Gb/s lanes: 4 type: SSD serial: <filter>&#xA;    rev: 211070WD temp: 46.9 C scheme: GPT&#xA;  ID-3: /dev/sda maj-min: 8:0 vendor: Western Digital&#xA;    model: WD4005FZBX-00K5WB0 size: 3.64 TiB block-size: physical: 4096 B&#xA;    logical: 512 B speed: 6.0 Gb/s type: HDD rpm: 7200 serial: <filter>&#xA;    rev: 1A01 scheme: GPT&#xA;  ID-4: /dev/sdb maj-min: 8:16 vendor: Western Digital&#xA;    model: WD4005FZBX-00K5WB0 size: 3.64 TiB block-size: physical: 4096 B&#xA;    logical: 512 B speed: 6.0 Gb/s type: HDD rpm: 7200 serial: <filter>&#xA;    rev: 1A01 scheme: GPT&#xA;  ID-5: /dev/sdc maj-min: 8:32 type: USB vendor: SanDisk&#xA;    model: Gaming Xbox 360 size: 7.48 GiB block-size: physical: 512 B&#xA;    logical: 512 B type: N/A serial: <filter> rev: 8.02 scheme: MBR&#xA;  SMART Message: Unknown USB bridge. Flash drive/Unsupported enclosure?&#xA;  Message: No optical or floppy data found.&#xA;Partition:&#xA;  ID-1: / raw-size: 919.01 GiB size: 919.01 GiB (100.00%)&#xA;    used: 611.14 GiB (66.5%) fs: btrfs dev: /dev/dm-0 maj-min: 254:0&#xA;    mapped: luks-disk label: N/A uuid: N/A&#xA;  ID-2: /boot/efi raw-size: 512 MiB size: 511 MiB (99.80%)&#xA;    used: 40.2 MiB (7.9%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1 label: EFI&#xA;    uuid: 8922-E04D&#xA;  ID-3: /home raw-size: 919.01 GiB size: 919.01 GiB (100.00%)&#xA;    used: 611.14 GiB (66.5%) fs: btrfs dev: /dev/dm-0 maj-min: 254:0&#xA;    mapped: luks-disk label: N/A uuid: N/A&#xA;  ID-4: /run/media/sarah/ConvergentRefuge raw-size: 3.64 TiB&#xA;    size: 3.64 TiB (100.00%) used: 2.19 TiB (60.1%) fs: btrfs dev: /dev/dm-2&#xA;    maj-min: 254:2 mapped: luks-c847cf9f-c6b5-4624-a25e-4531e318851a&#xA;    label: ConvergentRefuge uuid: 7d295e73-4143-4eb1-9d22-75a06b1d2984&#xA;  ID-5: /run/media/sarah/MSS_EXtended raw-size: 475.51 GiB&#xA;    size: 475.51 GiB (100.00%) used: 1.48 GiB (0.3%) fs: btrfs&#xA;    dev: /dev/nvme1n1p1 maj-min: 259:5 label: MSS EXtended&#xA;    uuid: f98b3a12-e0e4-48c7-91c2-6e3aa6dcd32c&#xA;Swap:&#xA;  Kernel: swappiness: 60 (default) cache-pressure: 100 (default)&#xA;  ID-1: swap-1 type: partition size: 12 GiB used: 6.86 GiB (57.2%)&#xA;    priority: -2 dev: /dev/dm-1 maj-min: 254:1 mapped: luks-swap label: SWAP&#xA;    uuid: c8991364-85a7-4e6c-8380-49cd5bd7a873&#xA;Unmounted:&#xA;  ID-1: /dev/nvme1n1p2 maj-min: 259:6 size: 456 GiB fs: ntfs label: N/A&#xA;    uuid: 5ECA358FCA356485&#xA;  ID-2: /dev/sdb1 maj-min: 8:17 size: 3.64 TiB fs: ntfs&#xA;    label: JerichoVariance uuid: 1AB22D5664889CBD&#xA;  ID-3: /dev/sdc1 maj-min: 8:33 size: 3.57 GiB fs: iso9660&#xA;  ID-4: /dev/sdc2 maj-min: 8:34 size: 4 MiB fs: vfat label: MISO_EFI&#xA;    uuid: 5C67-4BF8&#xA;USB:&#xA;  Hub-1: 1-0:1 info: Hi-speed hub with single TT ports: 4 rev: 2.0&#xA;    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900&#xA;  Hub-2: 1-2:2 info: Hitachi ports: 4 rev: 2.1 speed: 480 Mb/s&#xA;    chip-ID: 045b:0209 class-ID: 0900&#xA;  Device-1: 1-2.4:3 info: Microsoft Xbox One Controller (Firmware 2015)&#xA;    type: <vendor specific="specific"> driver: xpad interfaces: 3 rev: 2.0 speed: 12 Mb/s&#xA;    power: 500mA chip-ID: 045e:02dd class-ID: ff00 serial: <filter>&#xA;  Hub-3: 2-0:1 info: Super-speed hub ports: 4 rev: 3.0 speed: 5 Gb/s&#xA;    chip-ID: 1d6b:0003 class-ID: 0900&#xA;  Hub-4: 2-2:2 info: Hitachi ports: 4 rev: 3.0 speed: 5 Gb/s&#xA;    chip-ID: 045b:0210 class-ID: 0900&#xA;  Hub-5: 3-0:1 info: Hi-speed hub with single TT ports: 1 rev: 2.0&#xA;    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900&#xA;  Hub-6: 3-1:2 info: VIA Labs Hub ports: 4 rev: 2.1 speed: 480 Mb/s&#xA;    power: 100mA chip-ID: 2109:3431 class-ID: 0900&#xA;  Hub-7: 3-1.2:3 info: VIA Labs VL813 Hub ports: 4 rev: 2.1 speed: 480 Mb/s&#xA;    chip-ID: 2109:2813 class-ID: 0900&#xA;  Hub-8: 4-0:1 info: Super-speed hub ports: 4 rev: 3.0 speed: 5 Gb/s&#xA;    chip-ID: 1d6b:0003 class-ID: 0900&#xA;  Hub-9: 4-2:2 info: VIA Labs VL813 Hub ports: 4 rev: 3.0 speed: 5 Gb/s&#xA;    chip-ID: 2109:0813 class-ID: 0900&#xA;  Hub-10: 5-0:1 info: Hi-speed hub with single TT ports: 6 rev: 2.0&#xA;    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900&#xA;  Device-1: 5-1:2 info: Schiit Audio Unison Universal Dac type: Audio&#xA;    driver: snd-usb-audio interfaces: 2 rev: 2.0 speed: 480 Mb/s power: 500mA&#xA;    chip-ID: 30be:1019 class-ID: 0102&#xA;  Device-2: 5-2:3 info: JMTek LLC. Plugable USB Audio Device type: Audio,HID&#xA;    driver: hid-generic,snd-usb-audio,usbhid interfaces: 4 rev: 1.1&#xA;    speed: 12 Mb/s power: 100mA chip-ID: 0c76:120b class-ID: 0300&#xA;    serial: <filter>&#xA;  Device-3: 5-4:4 info: ASUSTek ASUS AI Noise-Cancelling Mic Adapter&#xA;    type: Audio,HID driver: hid-generic,snd-usb-audio,usbhid interfaces: 4&#xA;    rev: 1.1 speed: 12 Mb/s power: 100mA chip-ID: 0b05:194e class-ID: 0300&#xA;    serial: <filter>&#xA;  Hub-11: 5-5:5 info: Genesys Logic Hub ports: 4 rev: 2.0 speed: 480 Mb/s&#xA;    power: 100mA chip-ID: 05e3:0608 class-ID: 0900&#xA;  Device-1: 5-5.3:7 info: Cambridge Silicon Radio Bluetooth Dongle (HCI mode)&#xA;    type: Bluetooth driver: btusb interfaces: 2 rev: 2.0 speed: 12 Mb/s&#xA;    power: 100mA chip-ID: 0a12:0001 class-ID: e001&#xA;  Hub-12: 5-6:6 info: Genesys Logic Hub ports: 4 rev: 2.0 speed: 480 Mb/s&#xA;    power: 100mA chip-ID: 05e3:0608 class-ID: 0900&#xA;  Hub-13: 6-0:1 info: Super-speed hub ports: 4 rev: 3.1 speed: 10 Gb/s&#xA;    chip-ID: 1d6b:0003 class-ID: 0900&#xA;  Hub-14: 7-0:1 info: Hi-speed hub with single TT ports: 6 rev: 2.0&#xA;    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900&#xA;  Device-1: 7-2:2 info: SanDisk Cruzer Micro Flash Drive type: Mass Storage&#xA;    driver: usb-storage interfaces: 1 rev: 2.0 speed: 480 Mb/s power: 200mA&#xA;    chip-ID: 0781:5151 class-ID: 0806 serial: <filter>&#xA;  Device-2: 7-4:3 info: ASUSTek AURA LED Controller type: HID&#xA;    driver: hid-generic,usbhid interfaces: 2 rev: 2.0 speed: 12 Mb/s power: 16mA&#xA;    chip-ID: 0b05:18f3 class-ID: 0300 serial: <filter>&#xA;  Hub-15: 8-0:1 info: Super-speed hub ports: 4 rev: 3.1 speed: 10 Gb/s&#xA;    chip-ID: 1d6b:0003 class-ID: 0900&#xA;  Hub-16: 9-0:1 info: Hi-speed hub with single TT ports: 4 rev: 2.0&#xA;    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900&#xA;  Hub-17: 9-1:2 info: Terminus FE 2.1 7-port Hub ports: 7 rev: 2.0&#xA;    speed: 480 Mb/s power: 100mA chip-ID: 1a40:0201 class-ID: 0900&#xA;  Device-1: 9-1.1:4 info: Sunplus Innovation Gaming mouse [Philips SPK9304]&#xA;    type: Mouse driver: hid-generic,usbhid interfaces: 1 rev: 2.0 speed: 1.5 Mb/s&#xA;    power: 98mA chip-ID: 1bcf:08a0 class-ID: 0301&#xA;  Device-2: 9-1.5:6 info: Microdia Backlit Gaming Keyboard&#xA;    type: Keyboard,Mouse driver: hid-generic,usbhid interfaces: 2 rev: 2.0&#xA;    speed: 12 Mb/s power: 400mA chip-ID: 0c45:652f class-ID: 0301&#xA;  Device-3: 9-1.6:7 info: HUION H420 type: Mouse,HID driver: uclogic,usbhid&#xA;    interfaces: 3 rev: 1.1 speed: 12 Mb/s power: 100mA chip-ID: 256c:006e&#xA;    class-ID: 0300&#xA;  Hub-18: 9-1.7:8 info: Terminus Hub ports: 4 rev: 2.0 speed: 480 Mb/s&#xA;    power: 100mA chip-ID: 1a40:0101 class-ID: 0900&#xA;  Device-1: 9-2:3 info: Microdia USB 2.0 Camera type: Video,Audio&#xA;    driver: snd-usb-audio,uvcvideo interfaces: 4 rev: 2.0 speed: 480 Mb/s&#xA;    power: 500mA chip-ID: 0c45:6367 class-ID: 0102 serial: <filter>&#xA;  Device-2: 9-4:11 info: VKB-Sim &#xA9; Alex Oz 2021 VKBsim Gladiator EVO L&#xA;    type: HID driver: hid-generic,usbhid interfaces: 1 rev: 2.0 speed: 12 Mb/s&#xA;    power: 500mA chip-ID: 231d:0201 class-ID: 0300&#xA;  Hub-19: 10-0:1 info: Super-speed hub ports: 4 rev: 3.1 speed: 10 Gb/s&#xA;    chip-ID: 1d6b:0003 class-ID: 0900&#xA;Sensors:&#xA;  System Temperatures: cpu: 38.0 C mobo: 41.0 C&#xA;  Fan Speeds (RPM): fan-1: 702 fan-2: 747 fan-3: 938 fan-4: 889 fan-5: 3132&#xA;    fan-6: 0 fan-7: 0&#xA;  GPU: device: nvidia screen: :0.0 temp: 49 C fan: 0% device: radeon&#xA;    temp: 53.0 C&#xA;Info:&#xA;  Processes: 842 Uptime: 3h 11m wakeups: 0 Init: systemd v: 252&#xA;  default: graphical tool: systemctl Compilers: gcc: 12.2.1 alt: 10/11&#xA;  clang: 15.0.7 Packages: 2158 pm: pacman pkgs: 2110 libs: 495 tools: pamac,yay&#xA;  pm: flatpak pkgs: 31 pm: snap pkgs: 17 Shell: Bash v: 5.1.16&#xA;  running-in: yakuake inxi: 3.3.25&#xA;</filter></filter></filter></filter></filter></filter></vendor></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></superuser>

    &#xA;

  • ffmpeg could not find codec parameters for stream 0 on Ubuntu 22.04, works fine on Ubuntu 18.04

    22 février 2023, par ngm

    I'm new to ffmpeg but I've got an odd issue which seems to arise from using it on different Ubuntu versions.

    &#xA;

    I have an NVIDIA Jetson Nano running Ubuntu 18.04.5 LTS (GNU/Linux 4.9.201-tegra aarch64). Plugged into the Nano's carrier board is an embedded camera that shows up as a Sunplus Innovation Technology Inc. USB2.0 Camera RGB when I run lsusb.

    &#xA;

    When I run this ffmpeg command, I can successfully record video from the camera, which seems to be mjpeg codec with yuvj422p pixel format. The output is as follows :

    &#xA;

    ffmpeg -f video4linux2 -i /dev/video0 -an -vcodec libx264 test_capture.mp4&#xA;ffmpeg version 3.4.8-0ubuntu0.2 Copyright (c) 2000-2020 the FFmpeg developers&#xA;  built with gcc 7 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)&#xA;  configuration: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-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&#xA;  libavutil      55. 78.100 / 55. 78.100&#xA;  libavcodec     57.107.100 / 57.107.100&#xA;  libavformat    57. 83.100 / 57. 83.100&#xA;  libavdevice    57. 10.100 / 57. 10.100&#xA;  libavfilter     6.107.100 /  6.107.100&#xA;  libavresample   3.  7.  0 /  3.  7.  0&#xA;  libswscale      4.  8.100 /  4.  8.100&#xA;  libswresample   2.  9.100 /  2.  9.100&#xA;  libpostproc    54.  7.100 / 54.  7.100&#xA;Input #0, video4linux2,v4l2, from &#x27;/dev/video0&#x27;:&#xA;  Duration: N/A, start: 166.142773, bitrate: N/A&#xA;    Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 928x400, 100 fps, 100 tbr, 1000k tbn, 1000k tbc&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))&#xA;Press [q] to stop, [?] for help&#xA;[libx264 @ 0x558553df70] using cpu capabilities: ARMv8 NEON&#xA;[libx264 @ 0x558553df70] profile High 4:2:2, level 3.2, 4:2:2 8-bit&#xA;[libx264 @ 0x558553df70] 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=6 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&#xA;Output #0, mp4, to &#x27;test_capture.mp4&#x27;:&#xA;  Metadata:&#xA;    encoder         : Lavf57.83.100&#xA;    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuvj422p(pc), 928x400, q=-1--1, 100 fps, 12800 tbn, 100 tbc&#xA;    Metadata:&#xA;      encoder         : Lavc57.107.100 libx264&#xA;    Side data:&#xA;      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1&#xA;frame=  192 fps= 65 q=-1.0 Lsize=     151kB time=00:00:01.89 bitrate= 654.4kbits/s dup=150 drop=0 speed=0.642x    &#xA;video:148kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.072495%&#xA;[libx264 @ 0x558553df70] frame I:1     Avg QP:23.62  size: 36953&#xA;[libx264 @ 0x558553df70] frame P:49    Avg QP:25.25  size:  2121&#xA;[libx264 @ 0x558553df70] frame B:142   Avg QP:30.55  size:    70&#xA;[libx264 @ 0x558553df70] consecutive B-frames:  1.0%  1.0%  0.0% 97.9%&#xA;[libx264 @ 0x558553df70] mb I  I16..4: 10.1% 78.8% 11.1%&#xA;[libx264 @ 0x558553df70] mb P  I16..4:  1.1%  1.9%  0.0%  P16..4: 19.1%  3.0%  2.0%  0.0%  0.0%    skip:72.8%&#xA;[libx264 @ 0x558553df70] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  2.7%  0.0%  0.0%  direct: 0.1%  skip:97.2%  L0:36.8% L1:62.3% BI: 0.9%&#xA;[libx264 @ 0x558553df70] 8x8 transform intra:68.4% inter:77.4%&#xA;[libx264 @ 0x558553df70] coded y,uvDC,uvAC intra: 42.0% 80.2% 41.3% inter: 2.2% 5.4% 0.2%&#xA;[libx264 @ 0x558553df70] i16 v,h,dc,p: 50% 17% 10% 23%&#xA;[libx264 @ 0x558553df70] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 21%  9% 32%  5%  7%  7%  5%  8%  5%&#xA;[libx264 @ 0x558553df70] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 15% 12%  5% 14% 11%  8%  5%  7%&#xA;[libx264 @ 0x558553df70] i8c dc,h,v,p: 50% 12% 26% 12%&#xA;[libx264 @ 0x558553df70] Weighted P-Frames: Y:28.6% UV:28.6%&#xA;[libx264 @ 0x558553df70] ref P L0: 56.4% 28.2% 12.0%  2.5%  0.9%&#xA;[libx264 @ 0x558553df70] ref B L0: 93.4%  5.3%  1.3%&#xA;[libx264 @ 0x558553df70] ref B L1: 94.9%  5.1%&#xA;[libx264 @ 0x558553df70] kb/s:628.21&#xA;Exiting normally, received signal 2.&#xA;

    &#xA;

    However, I'd like to replace this Nano with another that I've upgraded to Ubuntu 22.04.1 LTS (GNU/Linux 4.9.299-tegra aarch64). The device still shows up as the same type when running lsusb. Running the exact same command results in the following :

    &#xA;

    ffmpeg -f video4linux2 -i /dev/video0 -an -vcodec libx264 test_capture.mp4&#xA;ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers&#xA;  built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)&#xA;  configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --arch=arm64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared&#xA;  libavutil      56. 70.100 / 56. 70.100&#xA;  libavcodec     58.134.100 / 58.134.100&#xA;  libavformat    58. 76.100 / 58. 76.100&#xA;  libavdevice    58. 13.100 / 58. 13.100&#xA;  libavfilter     7.110.100 /  7.110.100&#xA;  libswscale      5.  9.100 /  5.  9.100&#xA;  libswresample   3.  9.100 /  3.  9.100&#xA;  libpostproc    55.  9.100 / 55.  9.100&#xA;[video4linux2,v4l2 @ 0x55cab86450] Could not find codec parameters for stream 0 (Video: mjpeg, none(bt470bg/unknown/unknown), 1856x800): unspecified pixel format&#xA;Consider increasing the value for the &#x27;analyzeduration&#x27; (0) and &#x27;probesize&#x27; (5000000) options&#xA;Input #0, video4linux2,v4l2, from &#x27;/dev/video0&#x27;:&#xA;  Duration: N/A, bitrate: N/A&#xA;  Stream #0:0: Video: mjpeg, none(bt470bg/unknown/unknown), 1856x800, 60 fps, 60 tbr, 1000k tbn, 1000k tbc&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))&#xA;Press [q] to stop, [?] for help&#xA;Cannot determine format of input stream 0:0 after EOF&#xA;Error marking filters as finished&#xA;Exiting normally, received signal 2.&#xA;

    &#xA;

    I'm not sure why I can't read this video stream when everything seems to be the same but the OS and the ffmpeg version.

    &#xA;

    I've checked the available codecs and pixel formats using ffmpeg -codecs and ffmpeg -pix_fmts :

    &#xA;

    Ubuntu 18.04.5, ffmpeg version 3.4.8-0ubuntu0.2 :

    &#xA;

    DEVIL. mjpeg                Motion JPEG (encoders: mjpeg mjpeg_vaapi )

    &#xA;

    IO... yuvj422p               3            16

    &#xA;

    Ubuntu 22.04.1, ffmpeg version 4.4.2-0ubuntu0.22.04.1 :

    &#xA;

    DEVIL. mjpeg                Motion JPEG (decoders: mjpeg mjpeg_cuvid ) (encoders: mjpeg mjpeg_vaapi )

    &#xA;

    IO... yuvj422p               3            16

    &#xA;

    So it seems like I should be able to record video on both with this codec/pixel format combination.

    &#xA;

    I've also tried forcing ffmpeg to use this combination on the 22.04 Nano with the following command :

    &#xA;

    ffmpeg -f v4l2 -input_format mjpeg -framerate 100 -video_size 928x400 -pix_fmt yuvj422p -i /dev/video0 -an -vcodec libx264 test_capture.mp4

    &#xA;

    But I get the same error. I've also tried increasing the -analyzeduration and -probesize arguments to 100M, with no luck.

    &#xA;

    Are there other commands or settings I should use ? Should I downgrade my ffmpeg version if possible ?

    &#xA;

  • What is Multi-Touch Attribution ? (And How To Get Started)

    2 février 2023, par Erin — Analytics Tips

    Good marketing thrives on data. Or more precisely — its interpretation. Using modern analytics software, we can determine which marketing actions steer prospects towards the desired action (a conversion event). 

    An attribution model in marketing is a set of rules that determine how various marketing tactics and channels impact the visitor’s progress towards a conversion. 

    Yet, as customer journeys become more complicated and involve multiple “touches”, standard marketing reports no longer tell the full picture. 

    That’s when multi-touch attribution analysis comes to the fore. 

    What is Multi-Touch Attribution ?

    Multi-touch attribution (also known as multi-channel attribution or cross-channel attribution) measures the impact of all touchpoints on the consumer journey on conversion. 

    Unlike single-touch reporting, multi-touch attribution models give credit to each marketing element — a social media ad, an on-site banner, an email link click, etc. By seeing impacts from every touchpoint and channel, marketers can avoid false assumptions or subpar budget allocations.

    To better understand the concept, let’s interpret the same customer journey using a standard single-touch report vs a multi-touch attribution model. 

    Picture this : Jammie is shopping around for a privacy-centred web analytics solution. She saw a recommendation on Twitter and ended up on the Matomo website. After browsing a few product pages and checking comparisons with other web analytics tools, she signs up for a webinar. One week after attending, Jammie is convinced that Matomo is the right tool for her business and goes directly to the Matomo website a starts a free trial. 

    • A standard single-touch report would attribute 100% of the conversion to direct traffic, which doesn’t give an accurate view of the multiple touchpoints that led Jammie to start a free trial. 
    • A multi-channel attribution report would showcase all the channels involved in the free trial conversion — social media, website content, the webinar, and then the direct traffic source.

    In other words : Multi-touch attribution helps you understand how prospects move through the sales funnel and which elements tinder them towards the desired outcome. 

    Types of Attribution Models

    As marketers, we know that multiple factors play into a conversion — channel type, timing, user’s stage on the buyer journey and so on. Various attribution models exist to reflect this variability. 

    Types of Attribution Models

    First Interaction attribution model (otherwise known as first touch) gives all credit for the conversion to the first channel (for example — a referral link) and doesn’t report on all the other interactions a user had with your company (e.g., clicked a newsletter link, engaged with a landing page, or browsed the blog campaign).

    First-touch helps optimise the top of your funnel and establish which channels bring the best leads. However, it doesn’t offer any insight into other factors that persuaded a user to convert. 

    Last Interaction attribution model (also known as last touch) allocates 100% credit to the last channel before conversion — be it direct traffic, paid ad, or an internal product page.

    The data is useful for optimising the bottom-of-the-funnel (BoFU) elements. But you have no visibility into assisted conversions — interactions a user had prior to conversion. 

    Last Non-Direct attribution model model excludes direct traffic and assigns 100% credit for a conversion to the last channel a user interacted with before converting. For instance, a social media post will receive 100% of credit if a shopper buys a product three days later. 

    This model is more telling about the other channels, involved in the sales process. Yet, you’re seeing only one step backwards, which may not be sufficient for companies with longer sales cycles.

    Linear attribution model distributes an equal credit for a conversion between all tracked touchpoints.

    For instance, with a four touchpoint conversion (e.g., an organic visit, then a direct visit, then a social visit, then a visit and conversion from an ad campaign) each touchpoint would receive 25% credit for that single conversion.

    This is the simplest multi-channel attribution modelling technique many tools support. The nuance is that linear models don’t reflect the true impact of various events. After all, a paid ad that introduced your brand to the shopper and a time-sensitive discount code at the checkout page probably did more than the blog content a shopper browsed in between. 

    Position Based attribution model allocates a 40% credit to the first and the last touchpoints and then spreads the remaining 20% across the touchpoints between the first and last. 

    This attribution model comes in handy for optimising conversions across the top and the bottom of the funnel. But it doesn’t provide much insight into the middle, which can skew your decision-making. For instance, you may overlook cases when a shopper landed via a social media post, then was re-engaged via email, and proceeded to checkout after an organic visit. Without email marketing, that sale may not have happened.

    Time decay attribution model adjusts the credit, based on the timing of the interactions. Touchpoints that preceded the conversion get the highest score, while the first ones get less weight (e.g., 5%-5%-10%-15%-25%-30%).

    This multi-channel attribution model works great for tracking the bottom of the funnel, but it underestimates the impact of brand awareness campaigns or assisted conversions at mid-stage. 

    Why Use Multi-Touch Attribution Modelling

    Multi-touch attribution provides you with the full picture of your funnel. With accurate data across all touchpoints, you can employ targeted conversion rate optimisation (CRO) strategies to maximise the impact of each campaign. 

    Most marketers and analysts prefer using multi-touch attribution modelling — and for some good reasons.

    Issues multi-touch attribution solves 

    • Funnel visibility. Understand which tactics play an important role at the top, middle and bottom of your funnel, instead of second-guessing what’s working or not. 
    • Budget allocations. Spend money on channels and tactics that bring a positive return on investment (ROI). 
    • Assisted conversions. Learn how different elements and touchpoints cumulatively contribute to the ultimate goal — a conversion event — to optimise accordingly. 
    • Channel segmentation. Determine which assets drive the most qualified and engaged leads to replicate them at scale.
    • Campaign benchmarking. Compare how different marketing activities from affiliate marketing to social media perform against the same metrics.

    How To Get Started With Multi-Touch Attribution 

    To make multi-touch attribution part of your analytics setup, follow the next steps :

    1. Define Your Marketing Objectives 

    Multi-touch attribution helps you better understand what led people to convert on your site. But to capture that, you need to first map the standard purchase journeys, which include a series of touchpoints — instances, when a prospect forms an opinion about your business.

    Touchpoints include :

    • On-site interactions (e.g., reading a blog post, browsing product pages, using an on-site calculator, etc.)
    • Off-site interactions (e.g., reading a review, clicking a social media link, interacting with an ad, etc.)

    Combined these interactions make up your sales funnel — a designated path you’ve set up to lead people toward the desired action (aka a conversion). 

    Depending on your business model, you can count any of the following as a conversion :

    • Purchase 
    • Account registration 
    • Free trial request 
    • Contact form submission 
    • Online reservation 
    • Demo call request 
    • Newsletter subscription

    So your first task is to create a set of conversion objectives for your business and add them as Goals or Conversions in your web analytics solution. Then brainstorm how various touchpoints contribute to these objectives. 

    Web analytics tools with multi-channel attribution, like Matomo, allow you to obtain an extra dimension of data on touchpoints via Tracked Events. Using Event Tracking, you can analyse how many people started doing a desired action (e.g., typing details into the form) but never completed the task. This way you can quickly identify “leaking” touchpoints in your funnel and fix them. 

    2. Select an Attribution Model 

    Multi-attribution models have inherent tradeoffs. Linear attribution model doesn’t always represent the role and importance of each channel. Position-based attribution model emphasises the role of the last and first channel while diminishing the importance of assisted conversions. Time-decay model, on the contrary, downplays the role awareness-related campaigns played.

    To select the right attribution model for your business consider your objectives. Is it more important for you to understand your best top of funnel channels to optimise customer acquisition costs (CAC) ? Or would you rather maximise your on-site conversion rates ? 

    Your industry and the average cycle length should also guide your choice. Position-based models can work best for eCommerce and SaaS businesses where both CAC and on-site conversion rates play an important role. Manufacturing companies or educational services providers, on the contrary, will benefit more from a time-decay model as it better represents the lengthy sales cycles. 

    3. Collect and Organise Data From All Touchpoints 

    Multi-touch attribution models are based on available funnel data. So to get started, you will need to determine which data sources you have and how to best leverage them for attribution modelling. 

    Types of data you should collect : 

    • General web analytics data : Insights on visitors’ on-site actions — visited pages, clicked links, form submissions and more.
    • Goals (Conversions) : Reports on successful conversions across different types of assets. 
    • Behavioural user data : Some tools also offer advanced features such as heatmaps, session recording and A/B tests. These too provide ample data into user behaviours, which you can use to map and optimise various touchpoints.

    You can also implement extra tracking, for instance for contact form submissions, live chat contacts or email marketing campaigns to identify repeat users in your system. Just remember to stay on the good side of data protection laws and respect your visitors’ privacy. 

    Separately, you can obtain top-of-the-funnel data by analysing referral traffic sources (channel, campaign type, used keyword, etc). A Tag Manager comes in handy as it allows you to zoom in on particular assets (e.g., a newsletter, an affiliate, a social campaign, etc). 

    Combined, these data points can be parsed by an app, supporting multi-touch attribution (or a custom algorithm) and reported back to you as specific findings. 

    Sounds easy, right ? Well, the devil is in the details. Getting ample, accurate data for multi-touch attribution modelling isn’t easy. 

    Marketing analytics has an accuracy problem, mainly for two reasons :

    • Cookie consent banner rejection 
    • Data sampling application

    Please note that we are not able to provide legal advice, so it’s important that you consult with your own DPO to ensure compliance with all relevant laws and regulations.

    If you’re collecting web analytics in the EU, you know that showing a cookie consent banner is a GDPR must-do. But many consumers don’t often rush to accept cookie consent banners. The average consent rate for cookies in 2021 stood at 54% in Italy, 45% in France, and 44% in Germany. The consent rates are likely lower in 2023, as Google was forced to roll out a “reject all” button for cookie tracking in Europe, while privacy organisations lodge complaints against individual businesses for deceptive banners. 

    For marketers, cookie rejection means substantial gaps in analytics data. The good news is that you can fill in those gaps by using a privacy-centred web analytics tool like Matomo. 

    Matomo takes extra safeguards to protect user privacy and supports fully cookieless tracking. Because of that, Matomo is legally exempt from tracking consent in France. Plus, you can configure to use our analytics tool without consent banners in other markets outside of Germany and the UK. This way you get to retain the data you need for audience modelling without breaching any privacy regulations. 

    Data sampling application partially stems from the above. When a web analytics or multi-channel attribution tool cannot secure first-hand data, the “guessing game” begins. Google Analytics, as well as other tools, often rely on synthetic AI-generated data to fill in the reporting gaps. Respectively, your multi-attribution model doesn’t depict the real state of affairs. Instead, it shows AI-produced guesstimates of what transpired whenever not enough real-world evidence is available.

    4. Evaluate and Select an Attribution Tool 

    Google Analytics (GA) offers several multi-touch attribution models for free (linear, time-decay and position-based). The disadvantage of GA multi-touch attribution is its lower accuracy due to cookie rejection and data sampling application.

    At the same time, you cannot create custom credit allocations for the proposed models, unless you have the paid version of GA, Google Analytics 360. This version of GA comes with a custom Attribution Modeling Tool (AMT). The price tag, however, starts at USD $50,000 per year. 

    Matomo Cloud offers multi-channel conversion attribution as a feature and it is available as a plug-in on the marketplace for Matomo On-Premise. We support linear, position-based, first-interaction, last-interaction, last non-direct and time-decay modelling, based fully on first-hand data. You also get more precise insights because cookie consent isn’t an issue with us. 

    Most multi-channel attribution tools, like Google Analytics and Matomo, provide out-of-the-box multi-touch attribution models. But other tools, like Matomo On-Premise, also provide full access to raw data so you can develop your own multi-touch attribution models and do custom attribution analysis. The ability to create custom attribution analysis is particularly beneficial for data analysts or organisations with complex and unique buyer journeys. 

    Conclusion

    Ultimately, multi-channel attribution gives marketers greater visibility into the customer journey. By analysing multiple touchpoints, you can establish how various marketing efforts contribute to conversions. Then use this information to inform your promotional strategy, budget allocations and CRO efforts. 

    The key to benefiting the most from multi-touch attribution is accurate data. If your analytics solution isn’t telling you the full story, your multi-touch model won’t either. 

    Collect accurate visitor data for multi-touch attribution modelling with Matomo. Start your free 21-day trial now