#1 Le 20/07/2011, à 08:29
- k3c
Soft pour enlever la pub d'une vidéo ?
Bonjour
Je télécharge des vidéos de M6 avec tvdownloader.
Je cherche un logiciel qui trouverait et virerait la pub automatiquement.
Avidemux permet cela, mais à la main, pas automatiquement.
Dans les outils de TVO (freeware sous windows dont les sources ne sont pas disponibles) il y avait un programme qui faisait cela.
Connaissez-vous un logiciel libre qui fasse cela ?
Debian 12 sur Thinkpad reconditionné
Hors ligne
#2 Le 20/07/2011, à 10:20
- k3c
Re : Soft pour enlever la pub d'une vidéo ?
Debian 12 sur Thinkpad reconditionné
Hors ligne
#3 Le 22/07/2011, à 14:07
- k3c
Re : Soft pour enlever la pub d'une vidéo ?
Dans mon cas la pub correspond à un niveau sonore nettement plus élevé.
Je sais extraire le son de ma video avec ffmpeg, mais comment avoir le niveau sonore ?
Merci
Debian 12 sur Thinkpad reconditionné
Hors ligne
#4 Le 12/11/2011, à 11:16
- k3c
Re : Soft pour enlever la pub d'une vidéo ?
Rebonjour
Personne n'a la moindre idée sur comment, à partir d'une vidéo, sortir un petit fichier du genre
minute 1 -> 63 Db
minute 2 -> 65 Db
...
23 ème minute -> 78 Db
dernière minute -> 64 Db
Vu qu'il y a de la pub à la 23 ème minute.
Merci pour toute idée.
Debian 12 sur Thinkpad reconditionné
Hors ligne
#5 Le 07/03/2012, à 07:42
- k3c
Re : Soft pour enlever la pub d'une vidéo ?
Je me réponds, j'ai trouvé comment à partir d'un fichier son, afficher un graphe simplement
#!/usr/bin/env python
import sys
from pylab import *
import wave
def show_wave_n_spec(speech):
spf = wave.open(speech,'r')
sound_info = spf.readframes(-1)
sound_info = fromstring(sound_info, 'Int16')
f = spf.getframerate()
subplot(211)
plot(sound_info)
title('Wave form et spectogramme de %s' % sys.argv[1])
subplot(212)
spectrogram = specgram(sound_info, Fs = f, scale_by_freq=True,sides='default')
show()
spf.close()
fil = sys.argv[1]
show_wave_n_spec(fil)
Code piqué sur
http://jaganadhg.freeflux.net/blog/arch … n-way.html
il faut installer pylab
J'ai trouvé des softs payants pour virer la pub, mais rien en open source.
Debian 12 sur Thinkpad reconditionné
Hors ligne
#6 Le 07/03/2012, à 11:28
- k3c
Re : Soft pour enlever la pub d'une vidéo ?
@ bibichouchou
L'unité de l'axe du premier graphe est bizarre, pour un fichier d'une durée de 51 secondes, j'ai une valeur de
5 000 000
donc l'unité utilisée serait des 100 000 (cent millièmes) de seconde.
Edit : corrigé, pas foutu de faire une division...
Dernière modification par k3c (Le 07/03/2012, à 11:45)
Debian 12 sur Thinkpad reconditionné
Hors ligne
#7 Le 07/03/2012, à 11:44
- bibichouchou
Re : Soft pour enlever la pub d'une vidéo ?
Pour un fichier de 90 secondes, j'ai un axe qui court jusqu'à 8 000 000.
voici les infos sur mon fichier audio, obtenu avec
mplayer -identify -frames 0 filename.wav
AUDIO: 44100 Hz, 2 ch, s16le, 1411.2 kbit/s
Dernière modification par bibichouchou (Le 07/03/2012, à 11:44)
Hors ligne
#8 Le 07/03/2012, à 11:49
- bibichouchou
Re : Soft pour enlever la pub d'une vidéo ?
et au fait, tu as commencé à tester sur une vidéo avec pub ? est-ce que tu vois une signature dans le son ?
Hors ligne
#9 Le 07/03/2012, à 12:19
- k3c
Re : Soft pour enlever la pub d'une vidéo ?
Non j'ai pas commencé à tester sur une vidéo, car les sons extraits en .wav me donnent des erreurs.
Exemple
Traceback (most recent call last):
File "wavvv.py", line 24, in <module>
show_wave_n_spec(fil)
File "wavvv.py", line 7, in show_wave_n_spec
spf = wave.open(speech,'r')
File "/usr/lib/python2.7/wave.py", line 498, in open
return Wave_read(f)
File "/usr/lib/python2.7/wave.py", line 163, in __init__
self.initfp(f)
File "/usr/lib/python2.7/wave.py", line 130, in initfp
raise Error, 'file does not start with RIFF id'
wave.Error: file does not start with RIFF id
par contre certains .wav passent sans problème.
Comment tu extrais la bande-son d'une vidéo au format .wav ?
j'ai essayé
mplayer -vo null -ao pcm -af resample=44000,volume=+4db:sc toto.avi
qui donne un fichier audiodump.wav
et
ffmpeg -i toto.avi -vn -acodec copy toto.wav -ab 128k
Debian 12 sur Thinkpad reconditionné
Hors ligne
#10 Le 07/03/2012, à 12:41
- k3c
Re : Soft pour enlever la pub d'une vidéo ?
Visiblement mes fichiers obtenus ne sont pas des vrais .wav
Debian 12 sur Thinkpad reconditionné
Hors ligne
#11 Le 07/03/2012, à 13:34
- bibichouchou
Re : Soft pour enlever la pub d'une vidéo ?
Visiblement mes fichiers obtenus ne sont pas des vrais .wav
oui c'était mon avis. je n'ai rien dit car je voulais vérifier avant de m'avancer
mais il me semblait avoir lu des avertissements sur pcm
si tu tapes
file filename.wav
tu obtiens quoi ?
moi je n'ai pas de vidéo avec pub sous la main. dans un premier temps, je voulais juste tester ton prog. donc j'ai utilisé un fichier audio au format wav, issu d'un fichier mp3. j'ai utilisé cette commande.
ffmpeg -ss 0 -t 90 -i ../7744139453_laurent-gerra-du-23-02-2012.mp3 test03.wav
et la commande file me dit :
test03.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz
ffmpeg choisit tout seul les codec selon les extensions des fichiers entrée/sortie, si je me souviens bien. tu peux aussi forcer avec des switchs, mais je n'ai pas la syntaxe en-tête.
Hors ligne
#12 Le 07/03/2012, à 13:38
- bibichouchou
Re : Soft pour enlever la pub d'une vidéo ?
dans ta commande
ffmpeg -i toto.avi -vn -acodec copy toto.wav -ab 128k
essaye d'enlever
-acodec copy
car là tu lui dis de garder le codage d'origine de la piste audio, et rien ne dit que c'est du wav. c'est probablement du mp3 ou autre truc compressé.
Hors ligne
#13 Le 07/03/2012, à 13:39
- k3c
Re : Soft pour enlever la pub d'une vidéo ?
Tu as raison, j'ai 2 libellés très différents, en faisant file toto.wav
faux.wav: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, JntStereo
vrai.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz
Debian 12 sur Thinkpad reconditionné
Hors ligne
#14 Le 07/03/2012, à 14:02
- k3c
Re : Soft pour enlever la pub d'une vidéo ?
Ta commande génère un vrai .wav, mais je me prends un memory error (le fichier video fait dans les 20 minutes)
gg@gg-SATELLITE-L755:~$ python wavvv.py toto.wav
Traceback (most recent call last):
File "wavvv.py", line 24, in <module>
show_wave_n_spec(fil)
File "wavvv.py", line 14, in show_wave_n_spec
plot(sound_info)
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 2141, in plot
ret = ax.plot(*args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 3433, in plot
self.add_line(line)
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 1385, in add_line
self._update_line_limits(line)
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 1393, in _update_line_limits
p = line.get_path()
File "/usr/lib/pymodules/python2.7/matplotlib/lines.py", line 651, in get_path
self.recache()
File "/usr/lib/pymodules/python2.7/matplotlib/lines.py", line 439, in recache
y = np.asarray(self.convert_yunits(self._yorig), float)
File "/usr/local/lib/python2.7/dist-packages/numpy/core/numeric.py", line 235, in asarray
return array(a, dtype, copy=False, order=order)
MemoryError
gg@gg-SATELLITE-L755:~$ file !$
file toto.wav
toto.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz
gg@gg-SATELLITE-L755:~$
Debian 12 sur Thinkpad reconditionné
Hors ligne
#15 Le 07/03/2012, à 14:06
- bibichouchou
Re : Soft pour enlever la pub d'une vidéo ?
euh, oui mon fichier de 1min30 fait 16Mo.
j'imagine même pas pour 20min
Hors ligne
#16 Le 07/03/2012, à 14:13
- bibichouchou
Re : Soft pour enlever la pub d'une vidéo ?
le problème du wav, c'est que c'est pas compressé, donc on récupère des gros fichiers...
faudrait pouvoir travailler sur du mp3. sauf s'il y a un moyen de baisser la taille du wav (en jouant sur le bitrate, mais ça va dégrader la qualité du fichier, non ?).
sinon pour le problème de la détection de la pub, il faut chercher les zones où les amplitudes sont max plusieurs secondes/minutes de suite. et peut-être éventuellement, voir si c'est suivi par un silence. mais je pense que ça va être chaud de faire un truc à l'aveugle, peut-être semi-automatique (l'utilisateur contrôle avant de couper-recouper la vidéo). je ne sais pas à quelle façon de procéder tu penses...
Hors ligne
#17 Le 07/03/2012, à 14:44
- k3c
Re : Soft pour enlever la pub d'une vidéo ?
En fait je pensais non pas au joli graphe que donne le script Python posté, mais à un bête fichier avec 2 valeurs par ligne, temps (en secondes) et Db
donc
1; 62
2; 63
3; 61
...
1200; 75
1201; 74
1320;75
1321;62
1322;63
donc pub de 20 minutes (1200 s) à 22 minutes
Mon raisonnement -> si plus de x Db (par exemple 73) pendant plus de 30 secondes, alors pub, noter secondes de début et fin, puis passer à ffmpeg pour virer cette zone.
Debian 12 sur Thinkpad reconditionné
Hors ligne
#18 Le 07/03/2012, à 17:18
- bibichouchou
Re : Soft pour enlever la pub d'une vidéo ?
oui c'est ce à quoi je pensais. ici, le prog donne une amplitude en fonction d'une grandeur inconnue. l'amplitude est une grandeur algébrique avec des valeurs positives et négatives (d'ailleurs, je n'ai pas bien compris ce que l'amplitude extraite par le prog représente physiquement exactement... si t'as une idée). donc on élève au carré pour avoir que du >=0. et ensuite, on peut calculer une amplitude moyenne sur une fenêtre temporelle de x secondes. comme l'idée est de repérer ce qui est plus fort relativement au reste du signal, il faudrait calculer déterminer le niveau sonore moyen (m) et son écart-type (sigma), et chercher tout ce qui est supérieur à m+k*sigma (ou k est un nombre à choisir : 1, 2...) (en fait, faire du sigma-clipping comme disent les anglo-saxons... et je n'ai pas encore trouvé de traduction satisfaisante pour ce terme ). Je ne sais pas si c'est clair et/ou si tu as des connaissances en physique/traitement du signal. je propose cela car peut-être (probablement) qu'avec un autre fichier ton niveau à 73 dB ne marchera pas...
Hors ligne
#19 Le 08/03/2012, à 14:36
- k3c
Re : Soft pour enlever la pub d'une vidéo ?
J'ai trouvé une librairie libsndfile
http://www.mega-nerd.com/libsndfile/
install simple
tar zxvf ...
cd libsn*
./configure
make
sudo make install
qui fournit entre autres choses un programme sndfile-info
qui donne les Decibels max (la zone Signal max)
sndfile-info soir.wav
Version : libsndfile-1.0.23
========================================
File : soir.wav
Length : 9166892
RIFF : 9166884
WAVE
fmt : 16
Format : 0x1 => WAVE_FORMAT_PCM
Channels : 2
Sample Rate : 44100
Block Align : 4
Bit Width : 16
Bytes/sec : 176400
data : 9166848
End
----------------------------------------
Sample Rate : 44100
Frames : 2291712
Channels : 2
Format : 0x00010002
Sections : 1
Seekable : TRUE
Duration : 00:00:51.966
Signal Max : 9747 (-10.53 dB)
gg@gg-SATELLITE-L755:~$
mais ça ne me dit pas à quel moment sur la bande-son cette pointe est atteinte.
Couper la bande-son en morceaux de 30 secondes et les analyser ?
Bof
Debian 12 sur Thinkpad reconditionné
Hors ligne