Recherche avancée

Médias (91)

Autres articles (35)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

  • Librairies et binaires spécifiques au traitement vidéo et sonore

    31 janvier 2010, par

    Les logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
    Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
    Binaires complémentaires et facultatifs flvtool2 : (...)

Sur d’autres sites (5800)

  • FFMPEG Video to Audio Conversion Results in Different Durations

    10 juin 2020, par Eric J

    I am trying to covert an MP4 file into a mono WAV file sampled at 16,000 Hz.

    



    When I run below code, the duration goes from 00:09:59.99 (MP4) to 00:09:57.64 (WAV). Its original, longer version goes from 00:48:37.46 (MP4) to 00:48:23.38 (WAV).

    



    ffmpeg -i .mp4 -ac 1 -ar 16000 .wav


    



    I've also tried below code. The result is much worse, going from 00:09:59.99 (MP4) to 00:12:56.29 (AAC).

    



    ffmpeg -I .mp4 -vn -acodec copy .aac


    



    Attaching the log :

    



    Report written to "ffmpeg-20200610-093115.log"
Command line:
ffmpeg -i short.mp4 -ac 1 -ar 16000 short.wav -report
ffmpeg version 4.1.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include/darwin' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-videotoolbox --disable-libjack --disable-indev=jack --enable-libaom --enable-libsoxr
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Splitting the commandline.
Reading option '-i' ... matched as input url with argument 'short.mp4'.
Reading option '-ac' ... matched as option 'ac' (set number of audio channels) with argument '1'.
Reading option '-ar' ... matched as option 'ar' (set audio sampling rate (in Hz)) with argument '16000'.
Reading option 'short.wav' ... matched as output url.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url short.mp4.
Successfully parsed a group of options.
Opening an input file: short.mp4.
[NULL @ 0x7f98a3008200] Opening 'short.mp4' for reading
[file @ 0x7f98a2904440] Setting default whitelist 'file,crypto'
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f98a3008200] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f98a3008200] ISO: File Type Major Brand: mp42
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f98a3008200] Unknown dref type 0x206c7275 size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f98a3008200] Processing st: 0, edit list 0 - media time: 0, duration: 7679872
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f98a3008200] Unknown dref type 0x206c7275 size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f98a3008200] Processing st: 1, edit list 0 - media time: 1024, duration: 26459559
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f98a3008200] drop a frame at curr_cts: 0 @ 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f98a3008200] Before avformat_find_stream_info() pos: 11213917 bytes read:318782 seeks:1 nb_streams:2
[h264 @ 0x7f98a3808800] nal_unit_type: 7(SPS), nal_ref_idc: 3
[h264 @ 0x7f98a3808800] nal_unit_type: 8(PPS), nal_ref_idc: 3
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f98a3008200] demuxer injecting skip 1024 / discard 0
[aac @ 0x7f98a1008c00] skip 1024 / discard 0 samples due to side data
[h264 @ 0x7f98a3808800] nal_unit_type: 6(SEI), nal_ref_idc: 0
[h264 @ 0x7f98a3808800] nal_unit_type: 5(IDR), nal_ref_idc: 3
[h264 @ 0x7f98a3808800] Format yuv420p chosen by get_format().
[h264 @ 0x7f98a3808800] Reinit context to 640x368, pix_fmt: yuv420p
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f98a3008200] All info found
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f98a3008200] After avformat_find_stream_info() pos: 21961 bytes read:351550 seeks:2 frames:46
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'short.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: isommp41mp42
    creation_time   : 2020-06-10T16:12:17.000000Z
  Duration: 00:09:59.99, start: 0.000000, bitrate: 149 kb/s
    Stream #0:0(eng), 1, 1/12800: Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 47 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      creation_time   : 2020-06-10T16:12:17.000000Z
      handler_name    : Core Media Video
    Stream #0:1(eng), 45, 1/44100: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 98 kb/s (default)
    Metadata:
      creation_time   : 2020-06-10T16:12:17.000000Z
      handler_name    : Core Media Audio
Successfully opened the file.
Parsing a group of options: output url short.wav.
Applying option ac (set number of audio channels) with argument 1.
Applying option ar (set audio sampling rate (in Hz)) with argument 16000.
Successfully parsed a group of options.
Opening an output file: short.wav.
[file @ 0x7f98a0c1db40] Setting default whitelist 'file,crypto'
Successfully opened the file.
Stream mapping:
  Stream #0:1 -> #0:0 (aac (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
[aac @ 0x7f98a100de00] skip 1024 / discard 0 samples due to side data
cur_dts is invalid (this is harmless if it occurs once at the start per stream)
detected 12 logical cores
[graph_0_in_0_1 @ 0x7f98a0e2c4c0] Setting 'time_base' to value '1/44100'
[graph_0_in_0_1 @ 0x7f98a0e2c4c0] Setting 'sample_rate' to value '44100'
[graph_0_in_0_1 @ 0x7f98a0e2c4c0] Setting 'sample_fmt' to value 'fltp'
[graph_0_in_0_1 @ 0x7f98a0e2c4c0] Setting 'channel_layout' to value '0x4'
[graph_0_in_0_1 @ 0x7f98a0e2c4c0] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x4
[format_out_0_0 @ 0x7f98a0e2cb80] Setting 'sample_fmts' to value 's16'
[format_out_0_0 @ 0x7f98a0e2cb80] Setting 'sample_rates' to value '16000'
[format_out_0_0 @ 0x7f98a0e2cb80] Setting 'channel_layouts' to value '0x4'
[format_out_0_0 @ 0x7f98a0e2cb80] auto-inserting filter 'auto_resampler_0' between the filter 'Parsed_anull_0' and the filter 'format_out_0_0'
[AVFilterGraph @ 0x7f98a0c16ac0] query_formats: 4 queried, 6 merged, 3 already done, 0 delayed
[auto_resampler_0 @ 0x7f98a0e2d540] [SWR @ 0x7f98a28e1000] Using fltp internally between filters
[auto_resampler_0 @ 0x7f98a0e2d540] ch:1 chl:mono fmt:fltp r:44100Hz -> ch:1 chl:mono fmt:s16 r:16000Hz
Output #0, wav, to 'short.wav':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: isommp41mp42
    ISFT            : Lavf58.20.100
    Stream #0:0(eng), 0, 1/16000: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 16000 Hz, mono, s16, 256 kb/s (default)
    Metadata:
      creation_time   : 2020-06-10T16:12:17.000000Z
      handler_name    : Core Media Audio
      encoder         : Lavc58.35.100 pcm_s16le
size=   17152kB time=00:09:16.63 bitrate= 252.4kbits/s speed=1.11e+03x    
[out_0_0 @ 0x7f98a0e2c700] EOF on sink link out_0_0:default.
No more output streams to write to, finishing.
size=   18676kB time=00:09:59.99 bitrate= 255.0kbits/s speed=1.11e+03x    
video:0kB audio:18676kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000408%
Input file #0 (short.mp4):
  Input stream #0:0 (video): 1 packets read (3689 bytes); 
  Input stream #0:1 (audio): 25739 packets read (7375414 bytes); 25738 frames decoded (26355712 samples); 
  Total: 25740 packets (7379103 bytes) demuxed
Output file #0 (short.wav):
  Output stream #0:0 (audio): 25739 frames encoded (9562163 samples); 25739 packets muxed (19124326 bytes); 
  Total: 25739 packets (19124326 bytes) muxed
25738 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x7f98a0c1dc40] Statistics: 4 seeks, 76 writeouts
[AVIOContext @ 0x7f98a29045c0] Statistics: 10902846 bytes read, 29 seeks


    


  • Hardsub issue with ffmpeg

    27 octobre 2013, par user2925649

    I am trying to hardsub subtitle files on videos with ffmpeg. The video is creating properly but I can't see any text on it. I am on Windows.

    Test with .srt file

    ffmpeg started on 2013-10-27 at 19:27:24
    Report written to "ffmpeg-20131027-192724.log"
    Command line:
    "C:\\Users\\a\\Documents\\Projects\\videoArac\\videoArac\\bin\\Debug\\calis.exe" -y -i "D:\\ortamFabrika\\videoTest\\videolar\\1.mp4" -vf "subtitles=altyazi2895625.srt" -vcodec mpeg2video -qscale 1 "C:\\Users\\a\\Documents\\Projects\\videoArac\\videoArac\\bin\\Debug\\altyazi5795186.mpg" -report
    ffmpeg version N-48675-g2672b2c Copyright (c) 2000-2013 the FFmpeg developers
     built on Jan  9 2013 23:25:59 with gcc 4.7.2 (GCC)
     configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib --enable-filter=frei0r
     libavutil      52. 13.100 / 52. 13.100
     libavcodec     54. 86.100 / 54. 86.100
     libavformat    54. 59.107 / 54. 59.107
     libavdevice    54.  3.102 / 54.  3.102
     libavfilter     3. 32.100 /  3. 32.100
     libswscale      2.  1.103 /  2.  1.103
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  2.100 / 52.  2.100
    Splitting the commandline.
    Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
    Reading option '-i' ... matched as input file with argument 'D:\ortamFabrika\videoTest\videolar\1.mp4'.
    Reading option '-vf' ... matched as option 'vf' (video filters) with argument 'subtitles=altyazi2895625.srt'.
    Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'mpeg2video'.
    Reading option '-qscale' ... matched as option 'qscale' (use fixed quality scale (VBR)) with argument '1'.
    Reading option 'C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi5795186.mpg' ... matched as output file.
    Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
    Finished splitting the commandline.
    Parsing a group of options: global .
    Applying option y (overwrite output files) with argument 1.
    Applying option report (generate a report) with argument 1.
    Successfully parsed a group of options.
    Parsing a group of options: input file D:\ortamFabrika\videoTest\videolar\1.mp4.
    Successfully parsed a group of options.
    Opening an input file: D:\ortamFabrika\videoTest\videolar\1.mp4.
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] ISO: File Type Major Brand: isom
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] File position before avformat_find_stream_info() is 667830
    [h264 @ 007929a0] Using externally provided dimensions
    [h264 @ 007929a0] no picture
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] All info found
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00794f60] File position after avformat_find_stream_info() is 2014
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'D:\ortamFabrika\videoTest\videolar\1.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf53.21.0
     Duration: 00:00:15.96, start: 0.000000, bitrate: 334 kb/s
       Stream #0:0(und), 2, 1/25: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 9 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und), 1, 1/44100: Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, stereo, s16p, 319 kb/s
       Metadata:
         handler_name    : SoundHandler
    Successfully openened the file.
    Parsing a group of options: output file C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi5795186.mpg.
    Applying option vf (video filters) with argument subtitles=altyazi2895625.srt.
    Applying option vcodec (force video codec ('copy' to copy stream)) with argument mpeg2video.
    Applying option qscale (use fixed quality scale (VBR)) with argument 1.
    Please use -q:a or -q:v, -qscale is ambiguous
    Successfully parsed a group of options.
    Opening an output file: C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi5795186.mpg.
    Successfully openened the file.
    [subtitles @ 003fd840] Setting 'filename' to value 'altyazi2895625.srt'
    [Parsed_subtitles_0 @ 0079a180] Raster: FreeType 2.4.10
    [Parsed_subtitles_0 @ 0079a180] Shaper: FriBidi 0.19.5 (SIMPLE)
    [Parsed_subtitles_0 @ 0079a180] Initialized
    [Parsed_subtitles_0 @ 0079a180] No usable fontconfig configuration file found, using fallback.
    [srt @ 007ac380] Format srt probed with size=2048 and score=100
    [srt @ 007ac380] File position before avformat_find_stream_info() is 280
    [srt @ 007ac380] All info found
    [srt @ 007ac380] Estimating duration from bitrate, this may be inaccurate
    [srt @ 007ac380] File position after avformat_find_stream_info() is 280
    [Parsed_subtitles_0 @ 0079a180] Event: [Script Info]

    ScriptType: v4.00+



    [V4+ Styles]

    Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding

    Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,1,1,0,2,10,10,10,0,0



    [Events]

    Format: Layer, Start, End, Style, Text

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Style format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
    [Parsed_subtitles_0 @ 0079a180] [00798cb0] Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,1,1,0,2,10,10,10,0,0
    [Parsed_subtitles_0 @ 0079a180] Name = Default
    [Parsed_subtitles_0 @ 0079a180] FontName = Arial
    [Parsed_subtitles_0 @ 0079a180] FontSize = 16
    [Parsed_subtitles_0 @ 0079a180] PrimaryColour = &Hffffff
    [Parsed_subtitles_0 @ 0079a180] SecondaryColour = &Hffffff
    [Parsed_subtitles_0 @ 0079a180] OutlineColour = &H0
    [Parsed_subtitles_0 @ 0079a180] BackColour = &H0
    [Parsed_subtitles_0 @ 0079a180] Bold = 0
    [Parsed_subtitles_0 @ 0079a180] Italic = 0
    [Parsed_subtitles_0 @ 0079a180] Underline = 0
    [Parsed_subtitles_0 @ 0079a180] BorderStyle = 1
    [Parsed_subtitles_0 @ 0079a180] Outline = 1
    [Parsed_subtitles_0 @ 0079a180] Shadow = 0
    [Parsed_subtitles_0 @ 0079a180] Alignment = 2
    [Parsed_subtitles_0 @ 0079a180] MarginL = 10
    [Parsed_subtitles_0 @ 0079a180] MarginR = 10
    [Parsed_subtitles_0 @ 0079a180] MarginV = 10
    [Parsed_subtitles_0 @ 0079a180] Encoding = 0
    [Parsed_subtitles_0 @ 0079a180] Event format: Layer, Start, End, Style, Text
    [Parsed_subtitles_0 @ 0079a180] Event: Dialogue: 0,0:00:01.48,0:00:04.02,Default,{\c&HFF00&}VimeoSrtPlayer Example{\c}

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Layer = 0
    [Parsed_subtitles_0 @ 0079a180] Start = 0:00:01.48
    [Parsed_subtitles_0 @ 0079a180] Duration = 0:00:04.02
    [Parsed_subtitles_0 @ 0079a180] Style = Default
    [Parsed_subtitles_0 @ 0079a180] Text = {\c&HFF00&}VimeoSrtPlayer Example{\c}
    [Parsed_subtitles_0 @ 0079a180] Event: Dialogue: 0,0:00:05.05,0:00:09.55,Default,Support for {\i1}italic{\i0} font

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Layer = 0
    [Parsed_subtitles_0 @ 0079a180] Start = 0:00:05.05
    [Parsed_subtitles_0 @ 0079a180] Duration = 0:00:09.55
    [Parsed_subtitles_0 @ 0079a180] Style = Default
    [Parsed_subtitles_0 @ 0079a180] Text = Support for {\i1}italic{\i0} font
    [Parsed_subtitles_0 @ 0079a180] Event: Dialogue: 0,0:00:09.38,0:00:13.75,Default,Support for {\b1}bold{\b0} font

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Layer = 0
    [Parsed_subtitles_0 @ 0079a180] Start = 0:00:09.38
    [Parsed_subtitles_0 @ 0079a180] Duration = 0:00:13.75
    [Parsed_subtitles_0 @ 0079a180] Style = Default
    [Parsed_subtitles_0 @ 0079a180] Text = Support for {\b1}bold{\b0} font
    [Parsed_subtitles_0 @ 0079a180] Event: Dialogue: 0,0:00:14.81,0:00:16.14,Default,Multi\NLine\NSupport ;)

    [Parsed_subtitles_0 @ 0079a180]
    [Parsed_subtitles_0 @ 0079a180] Layer = 0
    [Parsed_subtitles_0 @ 0079a180] Start = 0:00:14.81
    [Parsed_subtitles_0 @ 0079a180] Duration = 0:00:16.14
    [Parsed_subtitles_0 @ 0079a180] Style = Default
    [Parsed_subtitles_0 @ 0079a180] Text = Multi\NLine\NSupport ;)
    [AVIOContext @ 007ac920] Statistics: 280 bytes read, 0 seeks
    [buffer @ 003fd960] Setting entry with key 'video_size' to value '1280x720'
    [buffer @ 003fd960] Setting entry with key 'pix_fmt' to value '0'
    [buffer @ 003fd960] Setting entry with key 'time_base' to value '1/25'
    [buffer @ 003fd960] Setting entry with key 'pixel_aspect' to value '1/1'
    [buffer @ 003fd960] Setting entry with key 'sws_param' to value 'flags=2'
    [buffer @ 003fd960] Setting entry with key 'frame_rate' to value '25/1'
    [graph 0 input from stream 0:0 @ 007a9fc0] w:1280 h:720 pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
    [abuffer @ 003fd9e0] Setting entry with key 'time_base' to value '1/44100'
    [abuffer @ 003fd9e0] Setting entry with key 'sample_rate' to value '44100'
    [abuffer @ 003fd9e0] Setting entry with key 'sample_fmt' to value 's16p'
    [abuffer @ 003fd9e0] Setting entry with key 'channel_layout' to value '0x3'
    [graph 1 input from stream 0:1 @ 007aee60] tb:1/44100 samplefmt:s16p samplerate:44100 chlayout:0x3
    [aformat @ 00796340] Setting entry with key 'sample_fmts' to value 's16'
    [aformat @ 00796340] Setting entry with key 'sample_rates' to value '44100,48000,32000,22050,24000,16000'
    [aformat @ 00796340] Setting entry with key 'channel_layouts' to value '0x4,0x3'
    [audio format for output stream 0:1 @ 007aef20] auto-inserting filter 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the filter 'audio format for output stream 0:1'
    [auto-inserted resampler 0 @ 007aef80] chl:stereo fmt:s16p r:44100Hz -> chl:stereo fmt:s16 r:44100Hz
    [mpeg2video @ 01c87260] detected 1 logical cores
    [mpeg2video @ 01c87260] intra_quant_bias = 96 inter_quant_bias = 0
    [h264 @ 007929a0] detected 1 logical cores
    [mpeg @ 00798580] VBV buffer size not set, muxing may fail
    Output #0, mpeg, to 'C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi5795186.mpg':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf54.59.107
       Stream #0:0(und), 0, 1/90000: Video: mpeg2video, yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und), 0, 1/90000: Audio: mp2, 44100 Hz, stereo, s16, 128 kb/s
       Metadata:
         handler_name    : SoundHandler
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 -> mpeg2video)
     Stream #0:1 -> #0:1 (mp3 -> mp2)
    Press [q] to stop, [?] for help
    [h264 @ 007929a0] Using externally provided dimensions
    [h264 @ 007929a0] no picture
    [Parsed_subtitles_0 @ 0079a180] Copying data in avfilter (have perms 5, need 3, reject 0)
    [Parsed_subtitles_0 @ 0079a180] Neither PlayResX nor PlayResY defined. Assuming 384x288
    [Parsed_subtitles_0 @ 0079a180] Copying data in avfilter (have perms 5, need 3, reject 0)
    [mpeg @ 00798580] First SCR: 0 First DTS: 45000
    [Parsed_subtitles_0 @ 0079a180] color: FF0000
    [Parsed_subtitles_0 @ 0079a180] Copying data in avfilter (have perms 5, need 3, reject
    ...
    [Parsed_subtitles_0 @ 0079a180] Copying data in avfilter (have perms 5, need 3, reject 0)
    [output stream 0:0 @ 007aa0e0] EOF on sink link output stream 0:0:default.
    [output stream 0:1 @ 007aeec0] EOF on sink link output stream 0:1:default.
    No more output streams to write to, finishing.
    frame=  399 fps= 93 q=1.0 Lsize=    1036kB time=00:00:15.94 bitrate= 532.1kbits/s    

    video:778kB audio:249kB subtitle:0 global headers:0kB muxing overhead 0.887275%
    [AVIOContext @ 003fff40] Statistics: 711491 bytes read, 2 seeks

    Test with .ass file

    ffmpeg started on 2013-10-27 at 19:48:45
    Report written to "ffmpeg-20131027-194845.log"
    Command line:
    "C:\\Users\\a\\Documents\\Projects\\videoArac\\videoArac\\bin\\Debug\\calis.exe" -y -i "D:\\ortamFabrika\\videoTest\\videolar\\1.mp4" -vf "ass=altyazi5334240.ass" -vcodec mpeg2video -qscale 1 "C:\\Users\\a\\Documents\\Projects\\videoArac\\videoArac\\bin\\Debug\\altyazi7055475.mpg" -report
    ffmpeg version N-48675-g2672b2c Copyright (c) 2000-2013 the FFmpeg developers
     built on Jan  9 2013 23:25:59 with gcc 4.7.2 (GCC)
     configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib --enable-filter=frei0r
     libavutil      52. 13.100 / 52. 13.100
     libavcodec     54. 86.100 / 54. 86.100
     libavformat    54. 59.107 / 54. 59.107
     libavdevice    54.  3.102 / 54.  3.102
     libavfilter     3. 32.100 /  3. 32.100
     libswscale      2.  1.103 /  2.  1.103
     libswresample   0. 17.102 /  0. 17.102
     libpostproc    52.  2.100 / 52.  2.100
    Splitting the commandline.
    Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
    Reading option '-i' ... matched as input file with argument 'D:\ortamFabrika\videoTest\videolar\1.mp4'.
    Reading option '-vf' ... matched as option 'vf' (video filters) with argument 'ass=altyazi5334240.ass'.
    Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'mpeg2video'.
    Reading option '-qscale' ... matched as option 'qscale' (use fixed quality scale (VBR)) with argument '1'.
    Reading option 'C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi7055475.mpg' ... matched as output file.
    Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
    Finished splitting the commandline.
    Parsing a group of options: global .
    Applying option y (overwrite output files) with argument 1.
    Applying option report (generate a report) with argument 1.
    Successfully parsed a group of options.
    Parsing a group of options: input file D:\ortamFabrika\videoTest\videolar\1.mp4.
    Successfully parsed a group of options.
    Opening an input file: D:\ortamFabrika\videoTest\videolar\1.mp4.
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] ISO: File Type Major Brand: isom
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] File position before avformat_find_stream_info() is 667830
    [h264 @ 00722980] Using externally provided dimensions
    [h264 @ 00722980] no picture
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] All info found
    [mov,mp4,m4a,3gp,3g2,mj2 @ 00724f40] File position after avformat_find_stream_info() is 2014
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'D:\ortamFabrika\videoTest\videolar\1.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf53.21.0
     Duration: 00:00:15.96, start: 0.000000, bitrate: 334 kb/s
       Stream #0:0(und), 2, 1/25: Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 9 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und), 1, 1/44100: Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, stereo, s16p, 319 kb/s
       Metadata:
         handler_name    : SoundHandler
    Successfully openened the file.
    Parsing a group of options: output file C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi7055475.mpg.
    Applying option vf (video filters) with argument ass=altyazi5334240.ass.
    Applying option vcodec (force video codec ('copy' to copy stream)) with argument mpeg2video.
    Applying option qscale (use fixed quality scale (VBR)) with argument 1.
    Please use -q:a or -q:v, -qscale is ambiguous
    Successfully parsed a group of options.
    Opening an output file: C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi7055475.mpg.
    Successfully openened the file.
    [ass @ 0060d840] Setting 'filename' to value 'altyazi5334240.ass'
    [Parsed_ass_0 @ 00725ce0] Raster: FreeType 2.4.10
    [Parsed_ass_0 @ 00725ce0] Shaper: FriBidi 0.19.5 (SIMPLE)
    [Parsed_ass_0 @ 00725ce0] Initialized
    [Parsed_ass_0 @ 00725ce0] No usable fontconfig configuration file found, using fallback.
    [Parsed_ass_0 @ 00725ce0] File size: 1440
    [Parsed_ass_0 @ 00725ce0] Style format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    [Parsed_ass_0 @ 00725ce0] [0073a030] Style: Default,Arial,16,&H00FFFFFF,&H000000FF,&H32202255,&HC8333CBA,0,0,0,0,100,100,0,0,1,3,1,2,100,100,50,1
    [Parsed_ass_0 @ 00725ce0] Name = Default
    [Parsed_ass_0 @ 00725ce0] FontName = Arial
    [Parsed_ass_0 @ 00725ce0] FontSize = 16
    [Parsed_ass_0 @ 00725ce0] PrimaryColour = &H00FFFFFF
    [Parsed_ass_0 @ 00725ce0] SecondaryColour = &H000000FF
    [Parsed_ass_0 @ 00725ce0] OutlineColour = &H32202255
    [Parsed_ass_0 @ 00725ce0] BackColour = &HC8333CBA
    [Parsed_ass_0 @ 00725ce0] Bold = 0
    [Parsed_ass_0 @ 00725ce0] Italic = 0
    [Parsed_ass_0 @ 00725ce0] Underline = 0
    [Parsed_ass_0 @ 00725ce0] StrikeOut = 0
    [Parsed_ass_0 @ 00725ce0] ScaleX = 100
    [Parsed_ass_0 @ 00725ce0] ScaleY = 100
    [Parsed_ass_0 @ 00725ce0] Spacing = 0
    [Parsed_ass_0 @ 00725ce0] Angle = 0
    [Parsed_ass_0 @ 00725ce0] BorderStyle = 1
    [Parsed_ass_0 @ 00725ce0] Outline = 3
    [Parsed_ass_0 @ 00725ce0] Shadow = 1
    [Parsed_ass_0 @ 00725ce0] Alignment = 2
    [Parsed_ass_0 @ 00725ce0] MarginL = 100
    [Parsed_ass_0 @ 00725ce0] MarginR = 100
    [Parsed_ass_0 @ 00725ce0] MarginV = 50
    [Parsed_ass_0 @ 00725ce0] Encoding = 1
    [Parsed_ass_0 @ 00725ce0] Event format: Layer, Start, End, Style, Actor, MarginL, MarginR, MarginV, Effect, Text
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:00.01
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:10.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}This line is 10 seconds long but will disappear and reappear alongside other subs.
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:00.01
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:01.50
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:02.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:03.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:02.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:03.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:02.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:03.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:02.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:03.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:05.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:06.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Layer = 0
    [Parsed_ass_0 @ 00725ce0] Start = 0:00:07.00
    [Parsed_ass_0 @ 00725ce0] Duration = 0:00:09.00
    [Parsed_ass_0 @ 00725ce0] Style = Default
    [Parsed_ass_0 @ 00725ce0] MarginL = 0000
    [Parsed_ass_0 @ 00725ce0] MarginR = 0000
    [Parsed_ass_0 @ 00725ce0] MarginV = 0000
    [Parsed_ass_0 @ 00725ce0] Effect =
    [Parsed_ass_0 @ 00725ce0] Text = {\be1}TEXT
    [Parsed_ass_0 @ 00725ce0] Added subtitle file: 'altyazi5334240.ass' (2 styles, 8 events)
    [buffer @ 0060d960] Setting entry with key 'video_size' to value '1280x720'
    [buffer @ 0060d960] Setting entry with key 'pix_fmt' to value '0'
    [buffer @ 0060d960] Setting entry with key 'time_base' to value '1/25'
    [buffer @ 0060d960] Setting entry with key 'pixel_aspect' to value '1/1'
    [buffer @ 0060d960] Setting entry with key 'sws_param' to value 'flags=2'
    [buffer @ 0060d960] Setting entry with key 'frame_rate' to value '25/1'
    [graph 0 input from stream 0:0 @ 0073c360] w:1280 h:720 pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
    [abuffer @ 0060d9e0] Setting entry with key 'time_base' to value '1/44100'
    [abuffer @ 0060d9e0] Setting entry with key 'sample_rate' to value '44100'
    [abuffer @ 0060d9e0] Setting entry with key 'sample_fmt' to value 's16p'
    [abuffer @ 0060d9e0] Setting entry with key 'channel_layout' to value '0x3'
    [graph 1 input from stream 0:1 @ 0073de00] tb:1/44100 samplefmt:s16p samplerate:44100 chlayout:0x3
    [aformat @ 007262a0] Setting entry with key 'sample_fmts' to value 's16'
    [aformat @ 007262a0] Setting entry with key 'sample_rates' to value '44100,48000,32000,22050,24000,16000'
    [aformat @ 007262a0] Setting entry with key 'channel_layouts' to value '0x4,0x3'
    [audio format for output stream 0:1 @ 0073dec0] auto-inserting filter 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the filter 'audio format for output stream 0:1'
    [auto-inserted resampler 0 @ 0073df20] chl:stereo fmt:s16p r:44100Hz -> chl:stereo fmt:s16 r:44100Hz
    [mpeg2video @ 0081fc00] detected 1 logical cores
    [mpeg2video @ 0081fc00] intra_quant_bias = 96 inter_quant_bias = 0
    [h264 @ 00722980] detected 1 logical cores
    [mpeg @ 00728560] VBV buffer size not set, muxing may fail
    Output #0, mpeg, to 'C:\Users\a\Documents\Projects\videoArac\videoArac\bin\Debug\altyazi7055475.mpg':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       encoder         : Lavf54.59.107
       Stream #0:0(und), 0, 1/90000: Video: mpeg2video, yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 25 tbc
       Metadata:
         handler_name    : VideoHandler
       Stream #0:1(und), 0, 1/90000: Audio: mp2, 44100 Hz, stereo, s16, 128 kb/s
       Metadata:
         handler_name    : SoundHandler
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 -> mpeg2video)
     Stream #0:1 -> #0:1 (mp3 -> mp2)
    Press [q] to stop, [?] for help
    [h264 @ 00722980] Using externally provided dimensions
    [h264 @ 00722980] no picture
    [Parsed_ass_0 @ 00725ce0] Copying data in avfilter (have perms 5, need 3, reject 0)
    [Parsed_ass_0 @ 00725ce0] Copying data in avfilter (have perms 5, need 3, reject 0)
    [mpeg @ 00728560] First SCR: 0 First DTS: 45000
    [Parsed_ass_0 @ 00725ce0] Copying data in avfilter (have perms 5, need 3, reject 0)
    [Parsed_ass_0 @ 00725ce0] Copying data in avfilter (have perms 5, need 3, reject 0)
    [output stream 0:0 @ 0073c480] EOF on sink link output stream 0:0:default.
    [output stream 0:1 @ 0073de60] EOF on sink link output stream 0:1:default.
    No more output streams to write to, finishing.
    frame=  399 fps=139 q=1.0 Lsize=    1036kB time=00:00:15.94 bitrate= 532.1kbits/s    

    video:778kB audio:249kB subtitle:0 global headers:0kB muxing overhead 0.887275%
    [AVIOContext @ 00721ea0] Statistics: 711491 bytes read, 2 seeks
  • Multivariate Testing vs A/B Testing (Quick-Start Guide)

    7 mars 2024, par Erin

    Traditional advertising (think Mad Men) was all about slogans, taglines and coming up with a one-liner that was meant to change the world.

    But that type of advertising was extremely challenging to test, so it was hard to know if it worked. Most of the time, nobody knew if they were being effective with their advertising.

    Enter modern marketing : the world of data-driven advertising.

    Thanks to the internet and web analytics tools like Matomo, you can quickly test almost anything and improve your site.

    The question is, should you do multivariate testing or A/B testing ?

    While both have their advantages, each has a specific use case.

    In this guide, we’ll break down the differences between multivariate and A/B testing, offer some pros and cons of each and show you some examples so you can decide which one is best for you.

    What is A/B testing ?

    A/B testing, or split testing, is testing an individual element in a medium against another version of the same element to see which produces better results.

    What is a/b testing?

    A/B tests are conducted by creating two different versions of a digital landmark : a website, landing page, email, or advertisement.

    The goal ? Figure out which version performs better.

    Let’s say, for example, you want to drive more sales on your core product page.

    You test two call-to-action buttons : “Buy Now” and “Add to Cart.”

    After running the test for two weeks, you see that “Buy Now” produced 1.2% conversions while “Add to Cart” produced 7.6%.

    In this scenario, you’ve found your winner : version B, “Add to Cart.”

    By conducting A/B tests regularly, you can optimise your site, increase engagement and convert more visitors into customers.

    Keep in mind that A/B testing isn’t perfect ; it doesn’t always produce a win.

    According to Noah Kagan, founder of AppSumo, only 1 out of 8 A/B tests his company conducts produces significant change.

    Advantages of A/B testing

    A/B testing is great when you need to get an accurate result fast on a specific element of your marketing efforts.

    Whether it’s a landing page or product page, you can get quick results without needing a lot of traffic.

    A/B testing is one of the most widely accepted and used testing methods for marketers and business owners.

    When you limit the number of tracked variables used in a test, you can quickly deliver reliable data, allowing you to iterate and pivot quickly if necessary.

    This is a great way to test your marketing methods, especially if you’re a newer business or you don’t have substantial traffic yet.

    Splitting up your traffic into a few segments (like with multivariate testing) will be very challenging to gain accurate results if you have lower daily traffic.

    One final advantage of A/B testing is that it’s a relatively easy way to introduce testing and optimising to a team, decision-maker, or stakeholder since it’s easy to implement. You can quickly demonstrate the value with a simple change and tangible evidence.

    Disadvantages of A/B testing

    So, what are the downsides to A/B testing ?

    Although A/B testing can get you quick results on small changes, it has limitations.

    A/B testing is all about measuring one element against another.

    This means you’re immediately limited in how many elements you can test. If you have to test out different variables, then A/B testing isn’t your best option since you’ll have to run test after test to get your result.

    If you need specific information on how different combinations of elements interact with one another on a web page, then multivariate is your best option.

    What is multivariate testing ?

    If you want to take your testing to the next level, you’ll want to try multivariate testing.

    Multivariate testing relies on the same foundational mechanism of A/B testing, but instead of matching up two elements against one another, it compares a higher number of variables at once.

    Multiple + variations = multivariate.

    Multivariate testing looks at how combinations of elements and variables interact.

    Like A/B testing, traffic to a page is split between different web page versions. Multivariate testing aims to measure each version’s effectiveness against the other versions.

    Ultimately, it’s about finding the winning combination.

    What Is Multivariate Testing?

    When to use multivariate testing

    The quick answer on when to use multivariate testing is if you have enough traffic.

    Just how much traffic, though ?

    While there’s no set number, you should aim to have 10,000 visitors per month or more, to ensure that each variant receives enough traffic to produce meaningful results within a reasonable time frame.

    Once you meet the traffic requirement, let’s talk about use cases.

    Let’s say you want to introduce a new email signup.

    But you want to create it from scratch and aren’t sure what will make your audience take action.

    So, you create a page with a signup form, a header, and an image.

    To run a multivariate test, you create two lengths of signup forms, four headlines, and two images.

    Next, you would create a test to split traffic between these sixteen combinations.

    Advantages of multivariate testing

    If you have enough traffic, multivariate testing can be an incredible way to speed up your A/B testing by testing dozens of combinations of your web page.

    This is handy when creating a new landing page and you want to determine if specific parts of your design are winners — which you can then use in future campaigns.

    Disadvantages of multivariate testing

    The main disadvantage of multivariate testing is that you need a lot of traffic to get started.

    If you try to do a multivariate analysis but you’re not getting much traffic, your results won’t be accurate (and it will take a long time to see accurate data).

    Additionally, multivariate tests are more complicated. They’re best suited for advanced marketers since more moving parts are at play.

    Key differences between multivariate and A/B testing

    Now that we’ve covered what A/B and multivariate tests are, let’s look at some key differences to help clarify which is best for you.

    Key differences between multivariate testing and A/B testing.

    1. Variation of combinations

    The major difference between A/B and multivariate testing is the number of combinations involved.

    With A/B testing, you only look at one element (no combinations). You simply take one part of your page (i.e., your headline copy) and make two versions.

    With multivariate testing, you’re looking at combinations of different elements (i.e., headline copy, form length, images).

    2. Number of pages to test

    The next difference lies in how many pages you will test.

    With an A/B test, you are splitting traffic on your website to two different pages : A and B.

    However, with multivariate testing, you will likely have 4-16 different test pages.

    This is because dozens of combinations can be created when you start testing a handful of elements at once.

    For example, if you want to test two headlines, two form buttons and two images on a signup form, then you have several combinations :

    • Headline A, Button A, Image A
    • Headline A, Button A, Image B
    • Headline A, Button B, Image A
    • Headline A, Button B, Image B
    • Headline B, Button A, Image A
    • Headline B, Button A, Image B
    • Headline B, Button B, Image A
    • Headline B, Button B, Image B

    In this scenario, you must create eight pages to send traffic to.

    3. Traffic requirements

    The next major difference between the two testing types is the traffic requirements.

    With A/B testing, you don’t need much traffic at all.

    Since you’re only testing two pages, you can split your traffic in half between the two types.

    However, if you plan on implementing a multivariate test, you will likely be splitting your traffic at least four or more ways.

    This means you need to have significantly more traffic coming in to get accurate data from your test. If you try to do this when your traffic is too low, you won’t have a large enough sample size.

    4. Time requirements

    Next up, just like traffic, there’s also a time requirement.

    A/B testing only tests two versions of a page against each other (while testing a single element). This means you’ll get accurate results faster than a multivariate test — usually within days.

    However, for a multivariate test, you might need to wait weeks. This is because you’re splitting your traffic by 4, 8, 12, or more web page variations. This could take months since you need a large enough sample size for accuracy.

    5. Big vs. small changes

    Another difference between A/B testing and multivariate testing is the magnitude of changes.

    With an A/B test, you’re looking at one element of a page, which means changing that element to the winning version isn’t a major overhaul of your design.

    But, with multivariate testing, you may find that the winning combination is drastically different than your control page, which could lead to a significant design change.

    6. Accuracy of results

    A/B tests are easier to decipher than multivariate testing since you only look at two versions of a single element on a page.

    You have a clear winner if one headline yields a 5% conversion rate and another yields a 1.2% conversion rate.

    But multivariate testing looks at so many combinations of a page that it can be a bit trickier to decipher what’s moving the needle.

    Pros and cons : Multivariate vs. A/B testing

    Before picking your testing method of choice, let’s look at some quick pros and cons.

    Pros and cons of multivariate vs. a/b testing.

    A/B testing pros and cons

    Here are the pros and cons of A/B testing :

    Pros

    • Get results quickly
    • Results are easier to interpret
    • Lower traffic requirement
    • Easy to get started

    Cons

    • You need to be hyper-focused on the right testing element
    • Requires performing test after test to optimise a web page

    Multivariate testing pros and cons

    Here are the pros and cons of multivariate testing :

    Pros

    • Handy when redesigning an entire web page
    • You can test multiple variables at once
    • Significant results (since traffic is higher)
    • Gather multiple data insights at once

    Cons

    • Requires substantial traffic
    • Harder to accurately decipher results
    • Not as easy to get started (more advanced)

    Use Matomo to start testing and improving your site

    A/B testing in Matomo analytics

    You need to optimise your website if you want to get more leads, land more conversions and grow your business.

    A/B testing and multivariate testing are proven testing methods you can lean on to improve your website and create a better user experience.

    You may prefer one testing method now over the other, and that’s okay.

    The main thing is you’re starting to test. The best marketers and analysts in the world find what works through testing and double down on their winning tactics.

    If you want to start improving your website with testing today, get started with Matomo for free.

    With Matomo, you can conduct A/B tests and multivariate tests easily, accurately, and ethically. Unlike other web analytics tools, Matomo prioritises privacy, providing
    100% accurate data without sampling, and eliminates the need for cookie consent
    banners (except in the UK and Germany).

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