MaRTy59 | Salut,
J'aimerais automatiser la découpe d'un fichier audio (pour enlever les pubs par exemple) en utilisant ffmpeg.
Voici mon fichier cut.txt sur lequel je me base pour faire le découpage :
Code :
- 1 00:00:00 00:09:05
- 2 00:11:52 00:07:48
- 3 00:29:10 00:06:32
- 4 00:39:01 00:07:01
- 5 00:49:48 00:03:45
- 6 01:00:44 00:05:54
- 7 01:09:42 00:13:58
- 8 01:33:40 00:08:28
- 9 01:46:00 00:04:25
- 10 01:56:03 00:06:42
- 11 02:05:43 00:08:31
- 12 02:17:12 00:03:46
- 13 02:29:30 00:07:38
- 14 02:41:12 00:06:26
- 15 02:53:15 00:07:50
- 16 03:03:40 00:15:27
- 17 03:28:27 00:07:18
- 18 03:38:58 00:05:31
- 19 03:47:31 00:05:44
- 20 03:58:49 00:20:52
|
La première colonne est le nom du fichier de sortie ($file)
La seconde colonne est la position de départ du fichier (-ss pour ffmpeg - $ss)
La dernière colonne est la durée de découpe du fichier (-t pour ffmpeg - $t)
Par exemple, la première ligne via la commande ffmpeg ressemblera à :
Code :
- ffmpeg -i input.mp3 -ss 00:00:00 -t 00:09:05 -acodec copy 1.mp3
|
Au lieu de faire 20 fois la même commande, je mets tout ça dans une boucle, ça fonctionne nickel en mode test avec un echo :
Code :
- while read line; do file=$(echo "$line" | awk '{print $1}'); ss=$(echo "$line" | awk '{print $2}'); t=$(echo "$line" | awk '{print $3}'); echo "ffmpeg -i input.mp3 -ss $ss -t $t -acodec copy $file.mp3"; done < cut.txt
- ffmpeg -i input.mp3 -ss 00:00:00 -t 00:09:05 -acodec copy 1.mp3
- ffmpeg -i input.mp3 -ss 00:11:52 -t 00:07:48 -acodec copy 2.mp3
- ffmpeg -i input.mp3 -ss 00:29:10 -t 00:06:32 -acodec copy 3.mp3
- ffmpeg -i input.mp3 -ss 00:39:01 -t 00:07:01 -acodec copy 4.mp3
- ffmpeg -i input.mp3 -ss 00:49:48 -t 00:03:45 -acodec copy 5.mp3
- ffmpeg -i input.mp3 -ss 01:00:44 -t 00:05:54 -acodec copy 6.mp3
- ffmpeg -i input.mp3 -ss 01:09:42 -t 00:13:58 -acodec copy 7.mp3
- ffmpeg -i input.mp3 -ss 01:33:40 -t 00:08:28 -acodec copy 8.mp3
- ffmpeg -i input.mp3 -ss 01:46:00 -t 00:04:25 -acodec copy 9.mp3
- ffmpeg -i input.mp3 -ss 01:56:03 -t 00:06:42 -acodec copy 10.mp3
- ffmpeg -i input.mp3 -ss 02:05:43 -t 00:08:31 -acodec copy 11.mp3
- ffmpeg -i input.mp3 -ss 02:17:12 -t 00:03:46 -acodec copy 12.mp3
- ffmpeg -i input.mp3 -ss 02:29:30 -t 00:07:38 -acodec copy 13.mp3
- ffmpeg -i input.mp3 -ss 02:41:12 -t 00:06:26 -acodec copy 14.mp3
- ffmpeg -i input.mp3 -ss 02:53:15 -t 00:07:50 -acodec copy 15.mp3
- ffmpeg -i input.mp3 -ss 03:03:40 -t 00:15:27 -acodec copy 16.mp3
- ffmpeg -i input.mp3 -ss 03:28:27 -t 00:07:18 -acodec copy 17.mp3
- ffmpeg -i input.mp3 -ss 03:38:58 -t 00:05:31 -acodec copy 18.mp3
- ffmpeg -i input.mp3 -ss 03:47:31 -t 00:05:44 -acodec copy 19.mp3
- ffmpeg -i input.mp3 -ss 03:58:49 -t 00:20:52 -acodec copy 20.mp3
|
Dès que je retire mon echo pour effectuer les 20 commandes, certaines passent, d'autres non
Par exemple, la première passe nickel, la seconde fail :
Code :
- while read line; do file=$(echo "$line" | awk '{print $1}'); ss=$(echo "$line" | awk '{print $2}'); t=$(echo "$line" | awk '{print $3}'); ffmpeg -i input.mp3 -ss $ss -t $t -acodec copy $file.mp3; done < cut.txt
- ffmpeg version 2.6.9 Copyright (c) 2000-2016 the FFmpeg developers
- built with gcc 4.9.2 (Debian 4.9.2-10)
- configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/x86_64-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libpulse --disable-mips32r2 --disable-mipsdspr1 --disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample --disable-htmlpages --disable-podpages --enable-libutvideo --enable-libfdk-aac --enable-libx265 --enable-libiec61883 --enable-vaapi --enable-libdc1394 --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu
- 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
- [mp3 @ 0x953560] Estimating duration from bitrate, this may be inaccurate
- Input #0, mp3, from 'input.mp3':
- Duration: 04:31:04.59, start: 0.000000, bitrate: 127 kb/s
- Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
- Output #0, mp3, to '1.mp3':
- Metadata:
- TSSE : Lavf56.25.101
- Stream #0:0: Audio: mp3, 44100 Hz, stereo, 128 kb/s
- Stream mapping:
- Stream #0:0 -> #0:0 (copy)
- Press [q] to stop, [?] for help
- size= 8516kB time=00:09:05.01 bitrate= 128.0kbits/s
- video:0kB audio:8516kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.005298%
- ffmpeg version 2.6.9 Copyright (c) 2000-2016 the FFmpeg developers
- built with gcc 4.9.2 (Debian 4.9.2-10)
- configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/x86_64-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libpulse --disable-mips32r2 --disable-mipsdspr1 --disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample --disable-htmlpages --disable-podpages --enable-libutvideo --enable-libfdk-aac --enable-libx265 --enable-libiec61883 --enable-vaapi --enable-libdc1394 --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu
- 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
- [mp3 @ 0x1dd1a00] Estimating duration from bitrate, this may be inaccurate
- Input #0, mp3, from 'input.mp3':
- Duration: 04:31:04.59, start: 0.000000, bitrate: 127 kb/s
- Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
- Invalid duration specification for t: -acodec
|
Ok ...
Code :
- desk@home:~$ echo $file
- :11:52
- desk@home:~$ echo $ss
- 00:07:48
- desk@home:~$ echo $t
- > Rien
|
WTF ?!
Pourquoi tout est modifié alors qu'en mode test avec le echo tout est nickel ?
Merci pour votre aide |