THD+N : audio, broadcast et à-côtés

Mesure loudness avec FFmpeg

leave a comment »

J’ai eu la bonne surprise de découvrir que FFmpeg propose désormais un filtre ebur128 ! Pour en bénéficier, il vous faudra utiliser (au moins) la version 1.1 de FFmpeg, qui n’est peut-être pas encore installée par votre gestionnaire de paquets favori.

Étant donné que j’étais impatient de tester cette nouvelle fonctionnalité,  j’ai fait une installation (non standard) de FFmpeg à partir des sources de la version 1.2 « Magic ».

Ce filtre propose deux modes d’utilisation : production d’un rapport dans le Terminal, ou création d’une fenêtre affichant graphiquement la mesure.

Mode Terminal :

(J’ai supprimé une partie des lignes).

manu@debian-wheezy:~/Sources/ffmpeg-1.2$ ./ffmpeg -nostats
 -i '/home/manu/Musique/seq-3341-3-16bit.wav' -filter_complex ebur128 -f null -
ffmpeg version 1.2 Copyright (c) 2000-2013 the FFmpeg developers
 built on Apr 28 2013 08:32:29 with gcc 4.7 (Debian 4.7.2-5)
 configuration: --enable-gpl
 libavutil 52. 18.100 / 52. 18.100
 libavcodec 54. 92.100 / 54. 92.100
 libavformat 54. 63.104 / 54. 63.104
 libavdevice 54. 3.103 / 54. 3.103
 libavfilter 3. 42.103 / 3. 42.103
 libswscale 2. 2.100 / 2. 2.100
 libswresample 0. 17.102 / 0. 17.102
 libpostproc 52. 2.100 / 52. 2.100
[wav @ 0x34b6020] max_analyze_duration 5000000 reached at 5013333 microseconds
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, wav, from '/home/manu/Musique/seq-3341-3-16bit.wav':
 Duration: 00:01:00.00, bitrate: 1536 kb/s
 Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s
Output #0, null, to 'pipe:':
 Metadata:
 encoder : Lavf54.63.104
 Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Stream mapping:
 Stream #0:0 (pcm_s16le) -> ebur128
 ebur128 -> Stream #0:0 (pcm_s16le)
Press [q] to stop, [?] for help
[Parsed_ebur128_0 @ 0x34b8660] t: 0.0999792 M:-120.7 S:-120.7 I: -70.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 0.199979 M:-120.7 S:-120.7 I: -70.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 0.299979 M:-120.7 S:-120.7 I: -70.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 0.399979 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 0.499979 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 0.599979 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 0.699979 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 0.799979 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 0.899979 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 0.999979 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 1.09998 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 1.19998 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 1.29998 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 1.39998 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 1.49998 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 1.59998 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 1.69998 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 1.79998 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 1.89998 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 1.99998 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 2.09998 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 2.19998 M: -40.0 S:-120.7 I: -40.0 LUFS LRA: 0.0 LU
...
(snip)
...
[Parsed_ebur128_0 @ 0x34b8660] t: 59.5 M: -40.0 S: -40.0 I: -23.0 LUFS LRA: 17.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 59.6 M: -40.0 S: -40.0 I: -23.0 LUFS LRA: 17.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 59.7 M: -40.0 S: -40.0 I: -23.0 LUFS LRA: 17.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 59.8 M: -40.0 S: -40.0 I: -23.0 LUFS LRA: 17.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 59.9 M: -40.0 S: -40.0 I: -23.0 LUFS LRA: 17.0 LU
[Parsed_ebur128_0 @ 0x34b8660] t: 60 M: -40.0 S: -40.0 I: -23.0 LUFS LRA: 17.0 LU
size=N/A time=00:01:00.00 bitrate=N/A
video:0kB audio:11250kB subtitle:0 global headers:0kB muxing overhead -100.000191%
Summary:
Integrated loudness:
 I: -23.0 LUFS
 Threshold: -37.5 LUFS
Loudness range:
 LRA: 17.0 LU
 Threshold: -47.4 LUFS
 LRA low: -40.0 LUFS
 LRA high: -23.0 LUFS

Mode graphique :

manu@debian-wheezy:~/Sources/ffmpeg-1.2$ ./ffplay -f lavfi -i
 "amovie='/home/manu/Musique/seq-3341-3-16bit.wav',ebur128=video=1:meter=18 [out0][out1]"
ffplay version 1.2 Copyright (c) 2003-2013 the FFmpeg developers
 built on Apr 28 2013 10:59:36 with gcc 4.7 (Debian 4.7.2-5)
 configuration: --enable-gpl --enable-nonfree
 libavutil 52. 18.100 / 52. 18.100
 libavcodec 54. 92.100 / 54. 92.100
 libavformat 54. 63.104 / 54. 63.104
 libavdevice 54. 3.103 / 54. 3.103
 libavfilter 3. 42.103 / 3. 42.103
 libswscale 2. 2.100 / 2. 2.100
 libswresample 0. 17.102 / 0. 17.102
 libpostproc 52. 2.100 / 52. 2.100
[wav @ 0x2b76320] max_analyze_duration 5000000 reached at 5013333 microseconds
[Parsed_amovie_0 @ 0x2b514c0] Channel layout is not set in output stream 0, guessed channel layout is 'stereo'
[lavfi @ 0x2b51d80] Estimating duration from bitrate, this may be inaccurate
Input #0, lavfi, from 'amovie='/home/manu/Musique/seq-3341-3-16bit.wav',ebur128=video=1:meter=18 [out0][out1]':
 Duration: N/A, bitrate: N/A
 Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 640x480 [SAR 1:1 DAR 4:3], 48k tbr, 48k tbn, 48k tbc
 Stream #0:1: Audio: pcm_f64le, 48000 Hz, stereo, dbl, 6144 kb/s
[Parsed_ebur128_1 @ 0x2b4ffc0] Summary:vq= 0KB sq= 0B f=0/0

Integrated loudness:
 I: -23.0 LUFS
 Threshold: -37.5 LUFS

Loudness range:
 LRA: 17.0 LU
 Threshold: -47.4 LUFS
 LRA low: -40.0 LUFS
 LRA high: -23.0 LUFS

Et vous obtenez un graphique :

capture écran mesure r128 avec FFmpeg

Écran mesure r128 avec FFmpeg

Pour le moment, il n’est pas possible de mesurer le true-peak.

Publicités

Written by manu

28/04/2013 à 12:23

Publié dans Outils

Tagged with , ,

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :