Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forum DivX Video Ripp-it After Me Ri4m _ Vos contributions (Tutos, aide etc...) _ UpMix 2.0 --> 5.1

Écrit par : Dirk-Pitt 15/01/2006 19:39

Vu que cela n'intéresse personne yahoo.gif en voilà un autre. Je me suis inspiré du "UpmiX Batch Processing Tool v0.71 by KpeX".

A=WAVSource( "..." )
A1=GetChannel( A, 1 )
A2=GetChannel( A, 2 )
A3=MixAudio( SuperEq( A1, "CENTER.FEQ" ), SuperEq( A2, "CENTER.FEQ" ) )
A4=MixAudio( SuperEq( A1, "LFE.FEQ" ), SuperEq( A2, "LFE.FEQ" ) )
A5=SuperEq( A1, "SURROUND.FEQ" )
A6=SuperEq( A2, "SURROUND.FEQ" )
# === WAV, AAC Order === L R C LFE SL SR =============================
A=MergeChannels( A1, A2, A3, A4, A5, A6 )
# === AC3, OGG Order === L C R SL SR LFE =============================
# A=MergeChannels( A1, A3, A2, A5, A6, A4 )

CENTER.FEQ :
-20
-20
-20
-20
-20
-20
-10
-10
-10
-10
-10
-10
-10
-10
-10
-10
-10
-10

LFE.FEQ
-3
-3
-3
-20
-20
-20
-20
-20
-20
-20
-20
-20
-20
-20
-20
-20
-20
-20

SURROUND.FEQ
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3

Écrit par : YannBresil 15/01/2006 19:58

Mais si on s'intéresse!

on sait bien que tu le mérites ton titre de master of surround!

yahoo.gif

Écrit par : pepsilite 15/01/2006 20:19

ben moi c justement dans l'autre sens que je cherche une solution 5.1 -> 2.0

Écrit par : Dirk-Pitt 16/01/2006 15:47

Voilà une nouvelle version :

function UpMix( clip C )
{
  Assert( C.AudioChannels == 2, "This clip must have 2 audio channels" )
  P=GetPluginPath( )
  A1=GetChannel( C, 1 )
  A2=GetChannel( C, 2 )
  A3=MixAudio( SuperEq( A1, P+"CENTER.FEQ" ), SuperEq( A2, P+"CENTER.FEQ" ) )
  A4=MixAudio( SuperEq( A1, P+"LFE.FEQ" ), SuperEq( A2, P+"LFE.FEQ" ) )
  A5=SuperEq( A1, P+"SURROUND.FEQ" )
  A6=SuperEq( A2, P+"SURROUND.FEQ" )
  # === WAV, AAC Order === L R C LFE SL SR =============================
  A=MergeChannels( A1, A2, A3, A4, A5, A6 )
  # === AC3, OGG Order === L C R SL SR LFE =============================
  # A=MergeChannels( A1, A3, A2, A5, A6, A4 )
  Return( C.HasVideo ? AudioDub( C, A ) : A )
}

Les nouveautés :
1. c'est maintenant une fonction
2. un contrôle du nombre des canaux en entrée
3. si le clip a une piste vidéo, elle est préservée

P peut être définit en dur, par exemple P="D:\Program Files\AviSynth 2.5\plugins\". Moi j'utilise une fonction "GetPluginPath" d'un plugin AVISynth que je viens d'écrire. Il faut placer les 3 fichiers .FEQ dans ce répertoire.

Enjoy. cling1.gif

Écrit par : pilaon 09/04/2008 07:10

Salut et désolé de te déranger, je suis newbie...

J'ai vu ton poste sur la possibilité de faire un faux 5.1 avec un 2.0 et c'est exactement ce que je cherche a faire.
Seulement je n'ai strictement rien compris a ce que tu as écrit et je ne vois pas comment m'y prendre...

Je possède AVIsynth et MeGui.
Si tu pouvais m'éclairer un peu ca serait sympa !

Merci

Écrit par : leon1789 09/04/2008 07:37

Bonjour

il y a plusieurs manières d'envisager un upmix 2.0 -> 5.1 !

Notons G et D les pistes audios Gauche et Droite de l'audio 2.0 d'origine.
Notons C, L, R, SL, SR, SW les pistes audios Centre, Left, Right, Surround Left, Surround Right, SubWoofer de l'audio 5.1 de sortie.

On peut "upmixer" 2.0 -> 5.1 via pleins de stratégies différentes :
la plus simple : C = rien , L = G, R = D, SL = rien, SR = rien, SW = rien
une stéréo élargie : C = rien , L = G, R = D, SL = G, SR = L, SW = rien
..avec C et W : C = G+D , L = G , R = D, SL = G, SR = L, SW = G+D
...avec "effet surround" : C = G+D , L = G , R = D, SL = G-L, SR = L-G, SW = G+D
etc etc.

Déjà, il faut savoir ce que l'on veut faire, et ensuite avisynth et besweet (livrés avec ri4m) le feront (de WAV 2.0 vers AC3 5.1).

Écrit par : pilaon 09/04/2008 10:45

je pense que l' "effet surround" : C = G+D , L = G , R = D, SL = G-L, SR = L-G, SW = G+D serait ce qui me convient le mieux.

je vais installer avisynth, par contre il est très compliqué je trouve; il aurait il un tuto pour faire ca ?

Merci

edit : besweet, c'est pareil, j'y comprends rien bof.gif

Écrit par : leon1789 09/04/2008 13:01

il faut aussi savoir quels sont les formats d'entrée et de sortie ?

Écrit par : pilaon 09/04/2008 13:03

entrée : wav 2.0
sortie : ac3 5.1

edit : dsl si je réponds pas rapidement, je suis parti pour tout l'après midi !

Écrit par : pilaon 09/04/2008 16:45

j'ai essayé de faire quelque chose avec besweet. J'obtiens ca comme commande :
"" -core( -input "d:\Documents and Settings\Jérôme.C00A4AAB13504CF\Mes documents\addams.wav" -output "C:\addams2.wav" -ddwav ) -profile( ~~~~~ Default Profile ~~~~~ )

J'ai créer un .bat avec BeSweet à la place de "" au début, mais il ne se passe rien...

Écrit par : leon1789 09/04/2008 17:16

Pour le son, pas de problème : un script comme celui-ci sera opérationnel (je l'ai testé toute la journée !). Contrairement à ce que tu penses, c'est simple à utiliser aga.gif

function UpMix(clip source, string "sortie", float "xC", \
               float "volume", float "elarg", bool "invert")
{...}
film = film.UpMix()


Il reste juste à savoir ce que tu as comme vidéo en entrée : un d2v, un avi, autre ?

Écrit par : pilaon 09/04/2008 18:03

merci pour le script !
par contre, j'en fait quoi ? yahoo1.gif

Pour la vidéo c'est un mkv avec une bande son ac3 5.1 (VO) déjà existante.
Je voudrais juste remuxer ce mkv en rajoutant mon nouveau AC3 upmixer en 5.1 (VF)

pour l'instant j'ai juste créer un fichier .avs en collant ton script dedans...

Écrit par : pilaon 09/04/2008 18:52

Je voudrais juste remuxer ce mkv en rajoutant mon nouveau AC3 upmixer en 5.1 (VF)


Je viens d'essayer avec mon wav 2.0 retimer en 23.976 fps et ca passe super...
Mainteant avec du 5.1 ca serait royal !!

Écrit par : leon1789 09/04/2008 18:59

ok, je commence à cerner le truc...

Avant de continuer, comme la vidéo et l'audio VF n'ont pas les mêmes origines, il faut s'assurer que la longueur du film et de l'audio sont les mêmes, sinon ça va être trop galère...

Si c'est bon, il vaut mieux demuxer la video de l'audio VO déjà présente.


Je viens de modifier le script (avec possibilité d'augmenter le volume, au cas où...)

Écrit par : pilaon 09/04/2008 19:16

Avant de continuer, comme la vidéo et l'audio VF n'ont pas les mêmes origines, il faut s'assurer que la longueur du film et de l'audio sont les mêmes, sinon ça va être trop galère...


ca c'est bon je viens de remuxer mon mkv en rajoutant ma bande son 2.0 (préalablement passée de 25fps en 23.976fps) avec un petit time delay, et c'est calé du début à la fin.

Par contre ma piste audio fait environ 3 sec de moins que la vidéo (surement coupée au générique final). Est ce que c'est gênant ?

edit : lorsque j'ai passé mon audio de 25 à 23.976fps, sa taille est quand à elle passée de 87mo à 1.07go, cela va t il avoir une incidence ?

Écrit par : leon1789 09/04/2008 20:58

Le fait que la bande sonore soit trop courte n'est pas un problème en soi (il y aura un trou à la fin, c'est tout) mais il ne faut pas qu'il y ait de décalage pendant le film.

La taille du fichier augmente car tu n'as pas dû recompresser l'audio, mais ce n'est pas grave. Cela se fera en temps et en heure.

Pour l'instant, tu as plusieurs fichiers,
film.mkv
audioVO.ac3
audioVF.wav (en 2.0)

Ce que l'on peut faire, c'est
-1- utiliser virtualdub (avec un script avs) pour upmixer ton .wav en 5.1
-2- convertir le wav 5.1 et ac3 5.1 avec besweet (via une ligne de commande)
-3- remuxer les deux fichiers ac3 avec ta vidéo.

C'est ok sur la procédure (je te fournis le script avs, et tout et tout) ?
Mais il faut bien vérifier qu'il n'y a pas de décalage audio dès maintenant.. cling1.gif
Sauvegarde bien la "vidéo+wav 2.0" dans filmWAV.mkv
Il faut aussi installer Ri4m bien sûr aga.gif

Écrit par : leon1789 09/04/2008 21:14

(pilaon @ mercredi 09 avril 2008 à 17:45) *
j'ai essayé de faire quelque chose avec besweet. J'obtiens ca comme commande :
"" -core( -input "d:\Documents and Settings\Jérôme.C00A4AAB13504CF\Mes documents\addams.wav" -output "C:\addams2.wav" -ddwav ) -profile( ~~~~~ Default Profile ~~~~~ )

J'ai créer un .bat avec BeSweet à la place de "" au début, mais il ne se passe rien...

Je te donnerai la ligne de commande pour besweet cling1.gif patience... cling1.gif

Écrit par : leon1789 09/04/2008 21:23

Voici le script avs qui va upmixer le wav 2.0 en un "wav-ac3 5.1" (je me comprends)

Il faut que tu places ton filmWAV.mkv (video+audio wav 2.0) dans le répertoire c:\tmp
Je suppose que ri4m est installé dans C:\Program Files\Ripp-It_AM, sinon il faut juste changer ce renseignement dans le script (ligne 3).

Enregistrer le script dans c:\tmp\script.avs
puis charger le script.avs (fichier / charger fichier vidéo) dans virtualDubMod, que tu trouveras dans le répertoire C:\Program Files\Ripp-It_AM\vdubmod.
C'est bon ?
Que donne Virtualdubmod lorsque tu cliques sur "fichier / informations AVI" ?


Source = "c:\tmp\filmWAV.mkv"
ips = 23.976
rep = "C:\Program Files\Ripp-It_AM"




#################################################
# **** Ripp-it , VirtualDub , AVISynth 2.5 **** #
#################################################


# REPERTOIRE DES PLUGINS EXTERNES
rep = rep+"\dlls\"
LoadPlugin(rep+"DirectShowSource.dll")
film = Source.DirectShowSource(fps=ips)


function UpMix(clip source, string "sortie", float "xC", \
               float "volume", float "elarg", bool "invert")
{
  AC = source.AudioChannels
  
  C = AC==1 ? GetChannel(source, 1) : nop
  L = AC==1 ? C : nop
  R = AC==1 ? C : nop

  xC = Default(xC, sqrt(0.5))
  L = AC==2 ? GetChannel(source, 1) : L
  R = AC==2 ? GetChannel(source, 2) : R
  C = AC==2 ? MixAudio(L, R,  xC,  xC) : C

  invert = Default(invert, false)
  elarg = Default(elarg, invert ? sqrt(0.5)/2 : sqrt(0.5))
  SL  = MixAudio(L, R,  elarg, invert ? -elarg : 0)
  SR  = MixAudio(L, R, invert ? -elarg : 0,  elarg)
  LFE = C

  sortie = Default(sortie, "wav 5.1")
  MC = sortie=="mono"                         ? C : nop
  MC = sortie=="stereo"                       ? MergeChannels( L, R ) : MC
  MC = sortie=="wav 5.1"                      ? MergeChannels( L, R, C, LFE, SL, SR ) : MC
  MC = sortie=="ac3 5.1" || sortie=="ogg 5.1" ? MergeChannels( L, C, R, sL, SR, LFE ) : MC
  MC = sortie=="dts 5.1" || sortie=="aac 5.1" ? MergeChannels( C, L, R, SL, SR, LFE ) : MC
  MC = sortie=="aiff 5.1"                     ? MergeChannels( L, SL, C, R, SR, LFE ) : MC

  volume = Default(volume, 1.)
  source = AudioDub(source, MC).Normalize(volume)     # voir Amplify et AmplifydB
  return source
}

return film.UpMix("ac3 5.1",invert=true)

Écrit par : pilaon 10/04/2008 07:10

super, merci beaucoup aga.gif

je testerai ça à midi, là je suis au boulot (en déplacement toute la matinée).

En tout cas encore merci de t'intéresser à mon cas !!!

Écrit par : pilaon 10/04/2008 12:55

voila ou j'en suis :

j'ai bien calé ma VF sur mon film et j'ai viré la VO. Je me retrouve avec filmWAV.mkv (video+audio wav 2.0) dans le répertoire d:\tmp (j'ai mis tous ça dans d: car plus de place sur c:)

j'ai juste modifier le chemin de mon mkv dans le script :

Source = "d:\tmp\filmWAV.mkv"
ips = 23.976
rep = "C:\Program Files\Ripp-It_AM"




#################################################
# **** Ripp-it , VirtualDub , AVISynth 2.5 **** #
#################################################


# REPERTOIRE DES PLUGINS EXTERNES
rep = rep+"\dlls\"
LoadPlugin(rep+"DirectShowSource.dll")
film = Source.DirectShowSource(fps=ips)


function UpMix(clip source, string "sortie", float "xC", \
float "volume", float "elarg", bool "invert")
{
AC = source.AudioChannels

C = AC==1 ? GetChannel(source, 1) : nop
L = AC==1 ? C : nop
R = AC==1 ? C : nop

xC = Default(xC, sqrt(0.5))
L = AC==2 ? GetChannel(source, 1) : L
R = AC==2 ? GetChannel(source, 2) : R
C = AC==2 ? MixAudio(L, R, xC, xC) : C

invert = Default(invert, false)
elarg = Default(elarg, invert ? sqrt(0.5)/2 : sqrt(0.5))
SL = MixAudio(L, R, elarg, invert ? -elarg : 0)
SR = MixAudio(L, R, invert ? -elarg : 0, elarg)
LFE = C

sortie = Default(sortie, "wav 5.1")
MC = sortie=="mono" ? C : nop
MC = sortie=="stereo" ? MergeChannels( L, R ) : MC
MC = sortie=="wav 5.1" ? MergeChannels( L, R, C, LFE, SL, SR ) : MC
MC = sortie=="ac3 5.1" || sortie=="ogg 5.1" ? MergeChannels( L, C, R, sL, SR, LFE ) : MC
MC = sortie=="dts 5.1" || sortie=="aac 5.1" ? MergeChannels( C, L, R, SL, SR, LFE ) : MC
MC = sortie=="aiff 5.1" ? MergeChannels( L, SL, C, R, SR, LFE ) : MC

volume = Default(volume, 1.)
source = AudioDub(source, MC).Normalize(volume) # voir Amplify et AmplifydB
return source
}

return film.UpMix("ac3 5.1",invert=true)


je lance virtualdubmod et j'ouvre ton script.avs avec.
le disque dur se met a gratter comme un fou et au bout d'environ 1-2 min, j'ai ça :


Sinon voilà les infos de mon filmWAV.mkv (obtenu avec KMPlayer) :


j'espère que ça va t'aider...
Merci

Écrit par : leon1789 10/04/2008 14:00

Pas de problème pour travailler sur d:

Il y a un problème pour lire ta vidéo. Mais en fait, ce n'est pas grave, on va s'en passer car ce que l'on veut, c'est uniquement l'audio en fait aga.gif
J'en profite pour modifier (et simplifier) le script que tu dois copier dans d:\tmp\script.avs à la place de l'ancien...

Copie aussi ton fichier audio VF stéréo dans d:\tmp sous le nom de VF_stereo.wav
Il est bien en 25 fps ton wav 2.0 ? alors on va le convertir en un AC3 25fps également.
Tu referas la synchro au dernier moment, en muxant avec ta vidéo (puisque ça fonctionne bien avec ton wav 2.0).

Audio = "d:\tmp\VF_stereo.wav"
fps = 25
nbre_images = 143800


#################################################
# **** Ripp-it , VirtualDub , AVISynth 2.5 **** #
#################################################


film = MessageClip( "...", 360, 200 ).assumeFPS(fps)
film = film.BlankClip(length=nbre_images)
film = film.AudioDubEx(Audio.WavSource)


function UpMix(clip source, string "sortie", float "xC", \
               float "volume", float "elarg", bool "invert")
{
  AC = source.AudioChannels
  
  C = AC==1 ? GetChannel(source, 1) : nop
  L = AC==1 ? C : nop
  R = AC==1 ? C : nop

  xC = Default(xC, sqrt(0.5))
  L = AC==2 ? GetChannel(source, 1) : L
  R = AC==2 ? GetChannel(source, 2) : R
  C = AC==2 ? MixAudio(L, R,  xC,  xC) : C

  invert = Default(invert, false)
  elarg = Default(elarg, invert ? sqrt(0.5)/2 : sqrt(0.5))
  SL  = MixAudio(L, R,  elarg, invert ? -elarg : 0)
  SR  = MixAudio(L, R, invert ? -elarg : 0,  elarg)
  LFE = C

  sortie = Default(sortie, "wav 5.1")
  MC = sortie=="mono"                         ? C : nop
  MC = sortie=="stereo"                       ? MergeChannels( L, R ) : MC
  MC = sortie=="wav 5.1"                      ? MergeChannels( L, R, C, LFE, SL, SR ) : MC
  MC = sortie=="ac3 5.1" || sortie=="ogg 5.1" ? MergeChannels( L, C, R, sL, SR, LFE ) : MC
  MC = sortie=="dts 5.1" || sortie=="aac 5.1" ? MergeChannels( C, L, R, SL, SR, LFE ) : MC
  MC = sortie=="aiff 5.1"                     ? MergeChannels( L, SL, C, R, SR, LFE ) : MC

  volume = Default(volume, 1.)
  source = AudioDub(source, MC)#.Normalize(volume)     # voir Amplify et AmplifydB
  return source
}

return film.UpMix("ac3 5.1", invert=true)



Donc tu relances virutaldubmod avec ce script... et tu obtiens quoi ? (dans "options", active l'affichage de la video de sortie si ce n'est pas déjà fait)

Écrit par : pilaon 10/04/2008 19:03

alors cette fois c'est bon, le script s'ouvre sans problème.
par contre ma piste audio VF 2.0 qui est calée avec ma vidéo est en 23.976fps et non pas 25.

Sinon j'obtiens ça :


edit :
je te mets aussi les info sur l'audio VF, si ca peut t'aider :


PS : la piste audio est bien en 23.976, je viens de vérifier

Écrit par : leon1789 10/04/2008 20:07

(pilaon @ jeudi 10 avril 2008 à 20:03) *
alors cette fois c'est bon, le script s'ouvre sans problème.
par contre ma piste audio VF 2.0 qui est calée avec ma vidéo est en 23.976fps et non pas 25.


Bon ok, je comprends que tu as enregistré ton wav VF 2.0 en 23.976 , donc on va créer un AC3 VF 5.1 en 23.976 également. (j'espère que besweet ne va pas buguer sur ça...)
Et puis je vois que ta piste audio dure 1h39m32s, donc on peut ajuster présicément le nombre d'images (je me comprends)

Donc il faut que tu corriges les seconde et troisième lignes du script.avs :
Audio = "d:\tmp\VF_stereo.wav"
fps = 23.976
nbre_images = 143200


Ok, virtualdubmod charge... on va maintenant sauvegarder l'audio en 5.1 : virtualdubmod va créé un wav 5.1 dont les pistes sont ordonnées de telle sorte à être encoder en AC3 (via besweet)
Vérifie dans "fichier / informations AVI" que la piste audio contient bien 6 canaux et dure bien 1h39:32 .

Bon alors, dans virtualdubmod, cliques sur "Flux / liste des flux" , une fenêtre s'ouvre présentant la piste audio : revérifie au passage la durée de la piste qui est, je te rappelle, 1h39:32 !! cling1.gif
Clique alors sur "sauver WAV" et enregistrer sous le nom d:\tmp\VF_51.wav
Et là, c'est parti pour quelques minutes de calcul...

Le fichier wav est énorme (des centaines de Mo), mais c'est normal car le format wav n'est pas compressé.
C'est bon ?

il reste enfin à créer le fichier AC3 5.1 tant désiré à partie du WAV 5.1 cling1.gif
Au fait, as-tu choisis un débit audio ? 256 kbps, 320, etc... ? peut-être est-il plus sage de prendre le même débit audio que ta piste VO AC3 dans ton mkv d'origine !!!

-1- Avec l' invite de commande dos (dans les accessoires windows), passe dans le bon répertoire : cd d:\tmp
-2- puis lance la commande finale ! "C:\Program Files\ripp-it_AM\dlls\BeSweet.exe" -core( -input VF_51.wav -output VF_51.ac3 ) -ac3enc( -b 256 -6ch )

Si ton débit désiré est supérieur à 256 kbps (ne descend pas en dessous), change le juste dans l'option de -ac3enc

Si besweet buggue, alors reprend ton wav VF 2.0 d'origine à 25 fps je suppose (la durée de la piste audio sera plus petite de 4 minutes, c'est normal), corrige le fps du script et relance les calculs : tu obtiendras un VF_51.ac3 en 25fps que tu ajusteras sur ta vidéo...

C'est bon ?

Écrit par : pilaon 10/04/2008 20:52

super !
pour l'instant on dirait que ça marche, ça encode aga.gif

j'ai réglé le débit à 512, je verrai ce que ça donne à la fin au niveau de la taille du fichier...

En tout cas merci, je vois déjà mieux comment fonctionne les scripts avs et besweet, pcq j'étais VRAIMENT perdu !

Bon je laisse finir et je te retiens au jus !

Écrit par : leon1789 10/04/2008 21:07

Si besweet encode sans erreur, c'est une bonne chose... mais il reste encore des possibilités de décalage audio sur ta vidéo d'origine. Il peut y avoir aussi des problèmes de qualité, non à cause du débit 512 kbps (qui me paraît excessif tout de même !! est-ce vraiment le débit de ta piste AC3 VO ?? je ne crois pas), mais à l'effet "invert" (= stéréo spatiale) sélectionné dans le script.avs, ou à un volume insuffisant, etc.

Je te laisse le soin de remuxer la piste AC3 VF 5.1 à ton film original pour avoir la vidéo, la VO et la VF dans ton .mkv aga.gif

En ce qui concerne avisynth, c'est vraiment un monde génial pour ceux qui aiment programmer... yahoo1.gif

Écrit par : leon1789 10/04/2008 21:19

Remarque technique : si tu muxes le VF_51.ac3 avec ta vidéo, les canaux L,R,C,SL,SR,LFE seront bien placés. Mais si tu muxes le VF_51.wav avec ta vidéo, les canaux seront désordonnés... c'est "normal" car les normes WAV 5.1 et AC3 5.1 n'ont pas le même ordre des canaux, tout "simplement" (si on peut dire... car ça complique un poil la situation...)

Écrit par : pilaon 10/04/2008 21:25

je viens de finir le remux, c'est NICKEL !!!

Vraiment encore merci pour ton aide :-)

Et j'espère que ce que tu as fais pourra en aider d'autre...

edit : noté pour la remarque technique cling1.gif

Écrit par : leon1789 10/04/2008 21:42

Ouf, tant mieux (c'est jamais totalement gagné à l'avance car il y a tellement d'imprévus possibles...)

Au plaisir de te revoir sur le forum aga.gif

Écrit par : pilaon 10/04/2008 22:25

c'est fort possible ! lol

si toutes les infos sont aussi clairs que les tiennes...

Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)