Recherche avancée

Médias (3)

Mot : - Tags -/image

Autres articles (44)

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

  • Submit bugs and patches

    13 avril 2011

    Unfortunately a software is never perfect.
    If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
    If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
    You may also (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (8221)

  • fluent ffmpeg size output option not working

    19 janvier 2017, par Ashbury

    Summary : I’m trying to limit output to 3mb, .outputOptions('-fs 3000000') isn’t working for me, the file is coming back with a size of 119260428 or 119mb.

    Here is the code to try for yourself, all you need is a test.mp3 large enough that the resulting testoutput.ogg is > 3mb :

    var ffmpeg = require("fluent-ffmpeg");
    var command = ffmpeg();

    var convertToOGG = function(){
     var fileName = 'test.mp3'

     ffmpeg.ffprobe(fileName, function(err, metadata) {
       command
         .input(fileName)
         .inputFormat("mp3")
         .audioChannels(1)
         .outputOptions('-fs', 3000000)
         .output('testoutput.ogg')
         .on("progress", function(progress) {
           console.log("Processing: " + progress.timemark);
         })
         .on("error", function(err, stdout, stderr) {
           console.log("Cannot process video: " + err.message);
         })
         .on("end", function(stdout, stderr) {
           ffmpeg.ffprobe('testoutput.ogg', function(err,metadata){
             if(metadata.format.size >= 3000000){

               console.log("didn't work")
             }
           })
         })
       .run();
     });
    };

    convertToOGG();

    Per the fluent-ffmpeg documentation you should be able to use a ffmpeg command in an output option : outputOption()

    This method allows passing any output-related option to ffmpeg. You can call it with a single argument to pass a single option, optionnaly
    with a space-separated parameter :

    /* Single option */
    ffmpeg('/path/to/file.avi').outputOptions('-someOption');

    and in FFMPEG’s documentation :

    -fs limit_size (output) Set the file size limit, expressed in bytes. No further chunk of bytes is written after the limit is exceeded. The
    size of the output file is slightly more than the requested file size.

    It’s giving me no errors, just seemingly ignoring the file size limit of 99mb and outputting a 119.3mb file.

    Edit - Looks like -fs 3000000 is working for mp3 to wav, but still wont do mp3 to ogg. This is the output from running the command in terminal :

    ✗ ffmpeg -i test.mp3 -fs 3000000 testoutput.ogg
    ffmpeg version 3.2.2 Copyright (c) 2000-2016 the FFmpeg developers
     built with Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
     configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
     libavutil      55. 34.100 / 55. 34.100
     libavcodec     57. 64.101 / 57. 64.101
     libavformat    57. 56.100 / 57. 56.100
     libavdevice    57.  1.100 / 57.  1.100
     libavfilter     6. 65.100 /  6. 65.100
     libavresample   3.  1.  0 /  3.  1.  0
     libswscale      4.  2.100 /  4.  2.100
     libswresample   2.  3.100 /  2.  3.100
     libpostproc    54.  1.100 / 54.  1.100
    [mp3 @ 0x7fc6a4000000] Estimating duration from bitrate, this may be inaccurate
    Input #0, mp3, from 'test.mp3':
     Metadata:
       lyrics-eng      : xxx
       title           : xxx
       artist          : xxx
       album_artist    : xxx
       album           : xxx
       genre           : xxx
     Duration: 03:27:28.74, start: 0.000000, bitrate: 128 kb/s
       Stream #0:0: Audio: mp3, 44100 Hz, mono, s16p, 128 kb/s
       Stream #0:1: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 540x360, 90k tbr, 90k tbn, 90k tbc
       Metadata:
         title           : Array
         comment         : Cover (front)
    [swscaler @ 0x7fc6a4808800] deprecated pixel format used, make sure you did set range correctly
    [ogg @ 0x7fc6a3815800] Frame rate very high for a muxer not efficiently supporting it.
    Please consider specifying a lower framerate, a different muxer or -vsync 2
    Output #0, ogg, to 'testoutput.ogg':
     Metadata:
       lyrics-eng      : xxx
       title           : xxx
       artist          : xxx
       album_artist    : xxx
       album           : xxx
       genre           : xxx
       encoder         : Lavf57.56.100
       Stream #0:0: Video: theora (libtheora), yuv444p, 540x360, q=2-31, 200 kb/s, 90k fps, 90k tbn, 90k tbc
       Metadata:
         title           : Array
         DESCRIPTION     : Cover (front)
         encoder         : Lavc57.64.101 libtheora
         lyrics-eng      : xxx
         artist          : xxx
         ALBUMARTIST     : xxx
         album           : xxx
         genre           : xxx
       Stream #0:1: Audio: vorbis (libvorbis), 44100 Hz, mono, fltp
       Metadata:
         encoder         : Lavc57.64.101 libvorbis
         lyrics-eng      : xxx
         title           : xxx
         artist          : xxx
         ALBUMARTIST     : xxx
         album           : xxx
         genre           : xxx
    Stream mapping:
     Stream #0:1 -> #0:0 (mjpeg (native) -> theora (libtheora))
     Stream #0:0 -> #0:1 (mp3 (native) -> vorbis (libvorbis))
    Press [q] to stop, [?] for help
    frame=    1 fps=0.0 q=-0.0 Lsize=  116465kB time=03:27:28.71 bitrate=  76.6kbits/s speed=61.2x
    video:9kB audio:114907kB subtitle:0kB other streams:0kB global headers:6kB muxing overhead: 1.347787%
  • RaspberryPi HQ camera not working with FFMPEG [closed]

    12 mars 2024, par GeeTee

    I just want to prefix this by saying I'm still quite fresh to linux so please bare with me as I don't always know exactly what I'm looking at.

    


    Hardware : Raspberry Pi 5 4GB / Pi HQ camera (connected with adapter cable)
OS : Debain V12 (bookworm)
FFMPEG : ffmpeg version 5.1.4-0+rpt3+deb12u1
I2C = Enabled
X / Wayland : Wayland (had to use this for VNC)

    


    I know the camera works as : when I use rpicam-vid -t 0 I have a working preview without issue (albeit slightly stuttery)

    


    When I try to enter ffmpeg -f v4l2 -i /dev/video0 I get the following :
(with the goal of having some video in a preview window)

    


    [video4linux2,v4l2 @ 0x5555a0811a20] ioctl(VIDIOC_G_PARM): Inappropriate ioctl for device
[video4linux2,v4l2 @ 0x5555a0811a20] Time per frame unknown
[video4linux2,v4l2 @ 0x5555a0811a20] ioctl(VIDIOC_STREAMON): Invalid argument
/dev/video0: Invalid argument


    


    I have also tried ffplay -f v4l2 -i /dev/video0 and get the same error as above.

    


    Following other forums I've tried (I'm not sure this is all necessary but to cover all bases, and save time) :

    


    Prompt : ffmpeg -sources device /dev/video0
Out : none (as in libpostproc    56.  6.100 / 56.  6.100 is the last line)

    


    Promt : v4l2-ctl --list-devices
Out :

    


    pispbe (platform:1000880000.pisp_be):
    /dev/video20
    /dev/video21
    /dev/video22
    /dev/video23
    /dev/video24
    /dev/video25
    /dev/video26
    /dev/video27
    /dev/video28
    /dev/video29
    /dev/video30
    /dev/video31
    /dev/video32
    /dev/video33
    /dev/video34
    /dev/video35
    /dev/video36
    /dev/video37
    /dev/media1
    /dev/media2

rp1-cfe (platform:1f00110000.csi):
    /dev/video0
    /dev/video1
    /dev/video2
    /dev/video3
    /dev/video4
    /dev/video5
    /dev/video6
    /dev/video7
    /dev/media0

rpivid (platform:rpivid):
    /dev/video19
    /dev/media3


    


    (seems to me rp1-cfe is what I want / need ? which is good that it shows up ?)

    


    Prompt : strace cat /dev/video0
Out :

    


    execve("/usr/bin/cat", ["cat", "/dev/video0"], 0x7fffc4c80c38 /* 41 vars */) = 0
brk(NULL)                               = 0x55567d41c000
faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=80471, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 80471, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fff59df4000
close(3)                                = 0
openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0py\2\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=1651472, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 1826976, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fff59c34000
mmap(0x7fff59c40000, 1761440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x7fff59c40000
munmap(0x7fff59c34000, 49152)           = 0
munmap(0x7fff59df0000, 8352)            = 0
mprotect(0x7fff59dc8000, 81920, PROT_NONE) = 0
mmap(0x7fff59ddc000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18c000) = 0x7fff59ddc000
mmap(0x7fff59de4000, 41120, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fff59de4000
close(3)                                = 0
set_tid_address(0x7fff59e4b010)         = 1526021
set_robust_list(0x7fff59e4b020, 24)     = 0
rseq(0x7fff59e4b660, 0x20, 0, 0xd428bc00) = 0
mprotect(0x7fff59ddc000, 16384, PROT_READ) = 0
mprotect(0x5556410fc000, 16384, PROT_READ) = 0
mprotect(0x7fff59e44000, 16384, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7fff59df4000, 80471)           = 0
getrandom("\x5c\x96\x77\x22\xd2\x25\xd3\x23", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x55567d41c000
brk(0x55567d440000)                     = 0x55567d440000
openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=3048976, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 3048976, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fff59954000
close(3)                                = 0
newfstatat(1, "", {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x1), ...}, AT_EMPTY_PATH) = 0
openat(AT_FDCWD, "/dev/video0", O_RDONLY) = 3
newfstatat(3, "", {st_mode=S_IFCHR|0660, st_rdev=makedev(0x51, 0x13), ...}, AT_EMPTY_PATH) = 0
fadvise64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0
mmap(NULL, 163840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fff5992c000
read(3, 0x7fff59930000, 131072)         = -1 EINVAL (Invalid argument)
write(2, "cat: ", 5cat: )                    = 5
write(2, "/dev/video0", 11/dev/video0)             = 11
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 4
newfstatat(4, "", {st_mode=S_IFREG|0644, st_size=2996, ...}, AT_EMPTY_PATH) = 0
read(4, "# Locale name alias data base.\n#"..., 4096) = 2996
read(4, "", 4096)                       = 0
close(4)                                = 0
openat(AT_FDCWD, "/usr/share/locale/en_GB.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_GB.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en_GB/LC_MESSAGES/libc.mo", O_RDONLY) = 4
newfstatat(4, "", {st_mode=S_IFREG|0644, st_size=1433, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 1433, PROT_READ, MAP_PRIVATE, 4, 0) = 0x7fff59e34000
close(4)                                = 0
openat(AT_FDCWD, "/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, ": Invalid argument", 18: Invalid argument)      = 18
write(2, "\n", 1
)                       = 1
munmap(0x7fff5992c000, 163840)          = 0
close(3)                                = 0
close(1)                                = 0
close(2)                                = 0
exit_group(1)                           = ?
+++ exited with 1 +++


    


    (no idea what I'm reading here and if it's good or bad so I included it all)

    


    Prompt : ffmpeg -f v4l2 -list_formats all -i /dev/video0
Out :

    


    [video4linux2,v4l2 @ 0x55561cd9da20] Raw       :     yuyv422 :           YUYV 4:2:2 : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :     uyvy422 :           UYVY 4:2:2 : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported :           YVYU 4:2:2 : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported :           VYUY 4:2:2 : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :    rgb565le :     16-bit RGB 5-6-5 : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :    rgb565be :  16-bit RGB 5-6-5 BE : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :    rgb555le : 16-bit A/XRGB 1-5-5-5 : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :    rgb555be : 16-bit A/XRGB 1-5-5-5 BE : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :       rgb24 :     24-bit RGB 8-8-8 : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :       bgr24 :     24-bit BGR 8-8-8 : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :        0rgb : 32-bit A/XRGB 8-8-8-8 : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : bayer_bggr8 : 8-bit Bayer BGBG/GRGR : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : bayer_gbrg8 : 8-bit Bayer GBGB/RGRG : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : bayer_grbg8 : 8-bit Bayer GRGR/BGBG : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : bayer_rggb8 : 8-bit Bayer RGRG/GBGB : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 10-bit Bayer BGBG/GRGR Packed : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 10-bit Bayer GBGB/RGRG Packed : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 10-bit Bayer GRGR/BGBG Packed : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 10-bit Bayer RGRG/GBGB Packed : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 12-bit Bayer BGBG/GRGR Packed : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 12-bit Bayer GBGB/RGRG Packed : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 12-bit Bayer GRGR/BGBG Packed : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 12-bit Bayer RGRG/GBGB Packed : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 14-bit Bayer BGBG/GRGR Packed : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 14-bit Bayer GBGB/RGRG Packed : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 14-bit Bayer GRGR/BGBG Packed : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 14-bit Bayer RGRG/GBGB Packed : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 16-bit Bayer BGBG/GRGR : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 16-bit Bayer GBGB/RGRG : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 16-bit Bayer GRGR/BGBG : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 16-bit Bayer RGRG/GBGB : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Compressed: Unsupported : PiSP Bayer Compressed Format : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Compressed: Unsupported : PiSP Bayer Compressed Format : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Compressed: Unsupported : PiSP Bayer Compressed Format : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Compressed: Unsupported : PiSP Bayer Compressed Format : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :        gray :      8-bit Greyscale : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 10-bit Greyscale (MIPI Packed) : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 12-bit Greyscale (MIPI Packed) : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 14-bit Greyscale (MIPI Packed) : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :    gray16le :     16-bit Greyscale : {16-16384, 2}x{16-16384, 1}
[video4linux2,v4l2 @ 0x55561cd9da20] Compressed: Unsupported : PiSP Bayer Compressed Format : {16-16384, 2}x{16-16384, 1}
/dev/video0: Immediate exit requested


    


    Not sure why so many of these are unsupported, I saw a video on YouTube with the same camera and older Pi and he did not have so many unsupported.

    


    Also, I ran the config file in the ffmpeg directory and I think it generated some additional files (wasn't working before either) are these normal ? (ffmpeg $ ls)

    


    Changelog        COPYING.LGPLv2.1  INSTALL.md   libpostproc    presets
compat           COPYING.LGPLv3    libavcodec   libswresample  README.md
configure        CREDITS           libavdevice  libswscale     RELEASE
CONTRIBUTING.md  doc               libavfilter  LICENSE.md     tests
COPYING.GPLv2    ffbuild           libavformat  MAINTAINERS    tools
COPYING.GPLv3    fftools           libavutil    Makefile


    


    A side question : How do I enable and disable libraries ? I tried entering —enable-pulse for example (with and without spaces and prefixed by ffmpeg) but get an error along the lines of unrecognised option or command not found. (I've tried google but as mentioned prior, I'm a bit lost)

    


    Thanks in advance.

    


  • What is Audience Segmentation ? The 5 Main Types & Examples

    16 novembre 2023, par Erin — Analytics Tips

    The days of mass marketing with the same message for millions are long gone. Today, savvy marketers instead focus on delivering the most relevant message to the right person at the right time.

    They do this at scale by segmenting their audiences based on various data points. This isn’t an easy process because there are many types of audience segmentation. If you take the wrong approach, you risk delivering irrelevant messages to your audience — or breaking their trust with poor data management.

    In this article, we’ll break down the most common types of audience segmentation, share examples highlighting their usefulness and cover how you can segment campaigns without breaking data regulations.

    What is audience segmentation ?

    Audience segmentation is when you divide your audience into multiple smaller specific audiences based on various factors. The goal is to deliver a more targeted marketing message or to glean unique insights from analytics.

    It can be as broad as dividing a marketing campaign by location or as specific as separating audiences by their interests, hobbies and behaviour.

    Illustration of basic audience segmentation

    Audience segmentation inherently makes a lot of sense. Consider this : an urban office worker and a rural farmer have vastly different needs. By targeting your marketing efforts towards agriculture workers in rural areas, you’re honing in on a group more likely to be interested in farm equipment. 

    Audience segmentation has existed since the beginning of marketing. Advertisers used to select magazines and placements based on who typically read them. They would run a golf club ad in a golf magazine, not in the national newspaper.

    How narrow you can make your audience segments by leveraging multiple data points has changed.

    Why audience segmentation matters

    In a survey by McKinsey, 71% of consumers said they expected personalisation, and 76% get frustrated when a vendor doesn’t deliver.

    Illustrated statistics that show the importance of personalisation

    These numbers reflect expectations from consumers who have actively engaged with a brand — created an account, signed up for an email list or purchased a product.

    They expect you to take that data and give them relevant product recommendations — like a shoe polishing kit if you bought nice leather loafers.

    If you don’t do any sort of audience segmentation, you’re likely to frustrate your customers with post-sale campaigns. If, for example, you just send the same follow-up email to all customers, you’d damage many relationships. Some might ask : “What ? Why would you think I need that ?” Then they’d promptly opt out of your email marketing campaigns.

    To avoid that, you need to segment your audience so you can deliver relevant content at all stages of the customer journey.

    5 key types of audience segmentation

    To help you deliver the right content to the right person or identify crucial insights in analytics, you can use five types of audience segmentation : demographic, behavioural, psychographic, technographic and transactional.

    Diagram of the main types of audience segmentation

    Demographic segmentation 

    Demographic segmentation is when you segment a larger audience based on demographic data points like location, age or other factors.

    The most basic demographic segmentation factor is location, which is easy to leverage in marketing efforts. For example, geographic segmentation can use IP addresses and separate marketing efforts by country. 

    But more advanced demographic data points are becoming increasingly sensitive to handle. Especially in Europe, GDPR makes advanced demographics a more tentative subject. Using age, education level and employment to target marketing campaigns is possible. But you need to navigate this terrain thoughtfully and responsibly, ensuring meticulous adherence to privacy regulations.

    Potential data points :

    • Location
    • Age
    • Marital status
    • Income
    • Employment 
    • Education

    Example of effective demographic segmentation :

    A clothing brand targeting diverse locations needs to account for the varying weather conditions. In colder regions, showcasing winter collections or insulated clothing might resonate more with the audience. Conversely, in warmer climates, promoting lightweight or summer attire could be more effective. 

    Here are two ads run by North Face on Facebook and Instagram to different audiences to highlight different collections :

    Each collection is featured differently and uses a different approach with its copy and even the media. With social media ads, targeting people based on advanced demographics is simple enough — you can just single out the factors when making your campaign. But if you don’t want to rely on these data-mining companies, that doesn’t mean you have no options for segmentation.

    Consider allowing people to self-select their interests or preferences by incorporating a short survey within your email sign-up form. This simple addition can enhance engagement, decrease bounce rates, and ultimately improve conversion rates, offering valuable insights into audience preferences.

    This is a great way to segment ethically and without the need of data-mining companies.

    Behavioural segmentation

    Behavioural segmentation segments audiences based on their interaction with your website or app.

    You use various data points to segment your target audience based on their actions.

    Potential data points :

    • Page visits
    • Referral source
    • Clicks
    • Downloads
    • Video plays
    • Goal completion (e.g., signing up for a newsletter or purchasing a product)

    Example of using behavioural segmentation to improve campaign efficiency :

    One effective method involves using a web analytics tool such as Matomo to uncover patterns. By segmenting actions like specific clicks and downloads, pinpoint valuable trends—identifying actions that significantly enhance visitor conversions. 

    Example of a segmented behavioral analysis in Matomo

    For instance, if a case study video substantially boosts conversion rates, elevate its prominence to capitalise on this success.

    Then, you can set up a conditional CTA within the video player. Make it pop up after the user has watched the entire video. Use a specific form and sign them up to a specific segment for each case study. This way, you know the prospect’s ideal use case without surveying them.

    This is an example of behavioural segmentation that doesn’t rely on third-party cookies.

    Psychographic segmentation

    Psychographic segmentation is when you segment audiences based on your interpretation of their personality or preferences.

    Potential data points :

    • Social media patterns
    • Follows
    • Hobbies
    • Interests

    Example of effective psychographic segmentation :

    Here, Adidas segments its audience based on whether they like cycling or rugby. It makes no sense to show a rugby ad to someone who’s into cycling and vice versa. But to rugby athletes, the ad is very relevant.

    If you want to avoid social platforms, you can use surveys about hobbies and interests to segment your target audience in an ethical way.

    Technographic segmentation

    Technographic segmentation is when you single out specific parts of your audience based on which hardware or software they use.

    Potential data points :

    • Type of device used
    • Device model or brand
    • Browser used

    Example of segmenting by device type to improve user experience :

    Upon noticing a considerable influx of tablet users accessing their platform, a leading news outlet decided to optimise their tablet browsing experience. They overhauled the website interface, focusing on smoother navigation and better readability for tablet users. These changes offered tablet users a seamless and enjoyable reading experience tailored precisely to their device.

    Transactional segmentation

    Transactional segmentation is when you use your customers’ purchase history to better target your marketing message to their needs.

    When consumers prefer personalisation, they typically mean based on their actual transactions, not their social media profiles.

    Potential data points :

    • Average order value
    • Product categories purchased within X months
    • X days since the last purchase of a consumable product

    Example of effective transactional segmentation :

    A pet supply store identifies a segment of customers consistently purchasing cat food but not other pet products. They create targeted email campaigns offering discounts or loyalty rewards specifically for cat-related items to encourage repeat purchases within this segment.

    If you want to improve customer loyalty and increase revenue, the last thing you should do is send generic marketing emails. Relevant product recommendations or coupons are the best way to use transactional segmentation.

    B2B-specific : Firmographic segmentation

    Beyond the five main segmentation types, B2B marketers often use “firmographic” factors when segmenting their campaigns. It’s a way to segment campaigns that go beyond the considerations of the individual.

    Potential data points :

    • Company size
    • Number of employees
    • Company industry
    • Geographic location (office)

    Example of effective firmographic segmentation :

    Companies of different sizes won’t need the same solution — so segmenting leads by company size is one of the most common and effective examples of B2B audience segmentation.

    The difference here is that B2B campaigns are often segmented through manual research. With an account-based marketing approach, you start by researching your potential customers. You then separate the target audience into smaller segments (or even a one-to-one campaign).

    Start segmenting and analysing your audience more deeply with Matomo

    Segmentation is a great place to start if you want to level up your marketing efforts. Modern consumers expect to get relevant content, and you must give it to them.

    But doing so in a privacy-sensitive way is not always easy. You need the right approach to segment your customer base without alienating them or breaking regulations.

    That’s where Matomo comes in. Matomo champions privacy compliance while offering comprehensive insights and segmentation capabilities. With robust privacy controls and cookieless configuration, it ensures GDPR and other regulations are met, empowering data-driven decisions without compromising user privacy.

    Take advantage of our 21-day free trial to get insights that can help you improve your marketing strategy and better reach your target audience. No credit card required.