Tools ffmpeg, arecord en Bash

Depuis plusieurs années , j’utilise abondamment ffmpeg au boulot à la Radio Al Bayane.
Et je dois dire c’est un outil très puissant.
Travaillant sur des fichiers sonores et vidéos , il est d'une grande utilité.
Je vais décrire quelque exemple d'utilisation.

Pour connaitre ma version

[root@sanogo ~]# ffmpeg -version
ffmpeg version 2.6.5 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.8.3 (GCC) 20140911 (Red Hat 4.8.3-9)
configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --enable-bzlib --disable-crystalhd --enable-gnutls --enable-ladspa --enable-libass --enable-libcdio --enable-libdc1394 --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
libavutil      54. 20.100 / 54. 20.100
libavcodec     56. 26.100 / 56. 26.100
libavformat    56. 25.101 / 56. 25.101
libavdevice    56.  4.100 / 56.  4.100
libavfilter     5. 11.102 /  5. 11.102
libavresample   2.  1.  0 /  2.  1.  0
libswscale      3.  1.101 /  3.  1.101
libswresample   1.  1.100 /  1.  1.100
libpostproc    53.  3.100 / 53.  3.100

Pour extraire un fichier sonore depuis une vidéo avec une qualité du bitrate égale à 192k

ffmpeg -i fichiervideo.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 fichierson.mp3

Pour extraire une portion d'un fichier sonore

ffmpeg -i $1 -vcodec copy -ss $2 -t $3 $4

$1= nom du fichier sonore ( emission.mp3)
$2= le temps de début du fichier , on peut demander que l'extraction débute à la 10eme minute
$3= le temps de fin du fichier, par exemple extraire jusqu'à la 15eme minute
$4= nom du fichier en sorti , exemple output.mp3

Concaténer plusieurs fichiers sonore.


ffmpeg -y -i concat:"$1|$2" $3
# $1 = fichier1.mp3
# $2 = fichier2.mp3
# $3 = fichier_sorti.mp3

Utile pour une émission comme la Matinale de Radio Al Bayane qui tient sur 2 tranches horaire, de 07h - 08h et 08 - 09h.
Nous avons un logiciel qui génère la pige de la radio au format année:mois:jour-hms.mp3
Un exemple du script de l'émission la Matinale Al Bayane que vous pouvez réecouter en appelant depuis les USA le 605.475.5850 et taper l'option 3

##############################################################################################"
#!/bin/bash
#émission disponible le lundi et le jeudi
HOST=kirikouu
USER=username
PASS=mypass
month=$(date +%m)
day=$(date +%d)
if (( $(date +%u ) == "1" || "4" )); then
ffmpeg -y -i concat:"/home/pige/2015$month$day-070000.mp3|/home/pige/2015$month$day-080000.mp3" /root/audionow/file_matinale_2h.mp3 &&
ffmpeg -i /root/audionow/file_matinale_2h.mp3 -acodec copy -ss 00:30:00 -t 01:16:00 option3.mp3
fi;
ftp -inv $HOST << EOF
user $USER $PASS
mput option3.mp3
bye
EOF
#########################################################################################"

Dans le fichier de 2 heures , j'extrais 1h16mn en débutant à la 30eme minute du fichier "file_matinale_2h.mp3"

Un autre Bash pour avoir la durée des fichiers sonore.
Je l'utilise pour avoir le temps des émissions depuis mon shell linux.

#!/bin/bash
for file in *.mp3 ;
do
laduree="$(ffmpeg -i "$file"  2>&1 | awk '/Duration/{print $2}')";
echo "${laduree} => ${file}" ;
done

Une autre problématique était de pouvoir enregistrer de façon automatique la prière de Tarawi dans la période du ramadan (mois de piété).
Il se trouve que les techniciens de l'écran sonore oubliaient souvent (trop) de débuter l'enregistrement de la prière que nous captons sur la TV Saoudienne.
Cette prière était retransmis en différé sur les ondes de la radio.
J'ai donc pensé à automatiser cette tache pour éviter d'avoir des tarawis rechauffé ( mon frère Babou Cissé en sait quelque chose ).

Nous avons équipé un desktop d'une carte son Pro qui tournait sous Debian 7
Un exemple du script Tarawi

#!/bin/bash
#en decimale, tant que l'heure est inférieur ou égal à 19h. la prière débute à la Mecque vers 18h05 mn heure d’Abidjan
while [[ 10#$(date +%H) -le 19 ]]
do
#enregistrer 900s de fichier sonore , soit 15mn à déposer dans le répertoire AMONTER
arecord -d 900 -c 2 -f S16_LE -r 44100 /home/RAMADAN2014/Tarawi/AMONTER/TARAWI_du_"$(date +%F-%Hh%Mm%Ss)".mp3
#envoyer un mail à l'administrateur comme notification
echo "Salam le fichier Tarawi_du_$(date +%F-%Hh%Mm%Ss).mp3  de 15mn est disponible dans RAMADAN 2014" | mail -s Le Tarawi_du_"$(date +%F-%Hh%Mm%Ss)".mp3  est ok  -- webmaster@domain.com
done

Dans le crontab j'ajoute cette ligne
qui veut dire lancer le script chaque jours à 18h00 mn

00 18 * * * /root/script_tarawi2014 >> /root/tarawi.log 2>&1

Avec ce script l'enregistrement de la prière de Tarawi était donc toujours disponible.

J’espère que vous avez apprécié ces quelques notes du traitement audio en bash.

Rubriques:

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.