Bit rate audio constant avec Handbrake: est-ce possible?

iDanGener

Membre émérite
12 Mars 2011
650
95
Bonjour,

J'ai un fichier «stream» provenant d'un enregistreur numérique. Les flux audio et video de la source font 30 min 59. La réception n'étant pas au top (euphémisme), il y a plusieurs microcoupures dans ce fichier. Malgré cela, les flux audio et vidéo sont synchronisés.

Cependant, lorsque je compresse ce fichier avec Handbrake, j'obtiens des durées différentes pour les flux audio et vidéo avec les paramètres de compression suivants:

Compression 1:
video: constant framerate 29,97 (le même que la source) : 30 min 39 sec
audio: AAC, Mixdown Dolby Pro Logic II, SampleRate 48, Bitrate 160 : 30 min 37 sec

Bilan: Il y a un décalage de 2 secondes.


Toutefois, si je compresse le fichier avec

Compression 2:
video: constant framerate 29,97 (le même que la source) : 30 min 12 sec
audio: AC3 Passthru : 30 min 12 sec

Bilan: Il n'y a pas de décalage entre l'audio et le video.


Note 1: Puisque le fichier ne sera lu que sur mon ordi, je préfère avoir le son du Mixdown Dolby qui est nettement plus riche sur mes haut-parleurs «2 + 1» que ne l'est celui du AC3 5.1. C'est pour cela que j'aimerais avoir une solution pour régler le problème du décalage de 2 secondes avec le son Dolby.

Note 2: Lorsque je regarde les paramètres donnés par iMediaHub du fichier obtenu de la première compression, je m'attendais à voir un «Bit Rate» pour l'audio constant de 160, or il est variable à 155 kbps.

Bref, je pense que si je pouvais avoir un «Bit Rate» constant pour l'audio, je n'aurais pas ce problème de synchronisation. Est-ce une hypothèse plausible? Si oui, comment fait-on avec Hanbrake pour avoir un «Bit Rate» constant pour l'audio.

Merci

Daniel
 

JLB21

Vétéran
Club MacG
22 Novembre 2007
5 464
486
Bref, je pense que si je pouvais avoir un «Bit Rate» constant pour l'audio, je n'aurais pas ce problème de synchronisation.
C'est plausible en effet.
Et tout ceci est curieux. Notamment que Handbrake n'encode pas l'audio à la fréquence d'échantillonnage prévue.

Ce qui est curieux également dans la compression 2, c'est que la durée de l'audio soit passé de 30'59 (fichier original) à 30'12 alors qu'en Passthru il n'a pas été touché ? Il doit avoir été amputé (ou accéléré) et les micro coupures devraient subsister ?

Enfin, il est surprenant que la vidéo avec les mêmes consignes d'encodage passe de 30'59 de l'original à 30'39 en 1 et 30'12 en 2…

Avant d'autres suggestions, pourrais-tu tenter un encodage comme en 1 mais avec la vidéo en VFR (variable frame rate) : c'est peut-être la cause de ton décalage.
Et reviens sur le forum si le décalage persiste.
 

iDanGener

Membre émérite
12 Mars 2011
650
95
Bonjour,

Merci JLB21. Voici un troisième essai de compression avec, cette fois-ci, un taux variable pour la vidéo. Il y a encore un décalage, mais d'une seconde (mais comme il y a une incertitude de 0,5 seconde sur chacun des deux temps, c'est difficile de comparer précisément).

Compression 3:
video: variable frame rate : 30 min 38 sec
audio: AAC, Mixdown Dolby Pro Logic II, SampleRate 48, Bitrate 160 : 30 min 37 sec


Remarques:

1 - Je crois qu'au fur et à mesure de la compression, Handbrake doit tenter de synchroniser au mieux les deux flux à partir de ses «index» (en supposant qu'il y a un index des temps pour chacun des deux flux, mais là, j'invente peut-être); ce qui pourrait expliquer qu'avec les mêmes paramètres dans les compression 1 et 2 pour le flux vidéo, les paramètres différents de l'audio ont eu un incidence sur le flux video.

2 - J'ai tenté de faire le travail de compression à partir de Avidemux, mais le logiciel a «planté» au bout de quelques minutes.

3 - J'ai pensé qu'en créant un .mkv (via Mkvtoolnix) à partir de la source «stream», une nouvelle indexation serait créée. Le fichier .mkv est bien synchronisé (comme l'était la source «stream») et l'audio et la video font 31 min 0 s. Toutefois, j'ai eu 125 (!) avertissements du type «This audio track contains 272 bytes of invalid data which were skipped before timestamp 00:02:49.740000000. The audio/video synchronization may have been lost.». Malheureusement, après compression avec Handbrake, il y a encore un décalage.

4 - Lorsque j'ai écouté le fichier «stream» au complet, il devait y avoir une douzaines d'endroits où l'image a figé pendant 1 ou 2 secondes; parmi les 125 problèmes signalés par Mkvtoolnix, la plupart sont imperceptibles lors du visionnement sur l'écran de l'ordinateur.

5 - J'ai tenté de refaire le travail de compression à partir de Avidemux, mais cette fois avec le fichier .mkv. Le logiciel n'a pas «planté», mais seules les 5 premières minutes ont pu être encodées; en regardant le fichier encodé, je vois que cela se produit à un moment où il y a un gel d'une partie importante des pixels de l'image.

Daniel
 

JLB21

Vétéran
Club MacG
22 Novembre 2007
5 464
486
Ce que je tenterais :
- extraire la vidéo seule et la ré-encoder.
- Extraire l'audio seul et le ré-encoder.
- Importer dans un logiciel de montage comme iMovie (si pas mieux), puis faire un remappage temporel de la piste vidéo de façon à caler sa durée sur celle de l'audio.
 

JLB21

Vétéran
Club MacG
22 Novembre 2007
5 464
486
Ce que je tenterais :
- extraire la vidéo seule et la ré-encoder.
- Extraire l'audio seul et le ré-encoder.
- Importer dans un logiciel de montage comme iMovie (si pas mieux), puis faire un remappage temporel de la piste vidéo de façon à caler sa durée sur celle de l'audio.
 

iDanGener

Membre émérite
12 Mars 2011
650
95
Bonjour JLB21,

Je suis parti de votre suggestion, mais au lieu d'extraire les flux, j'ai utilisé Subler pour convertir le flux audio du fichier que j'avais obtenu à la compression 2, soit celui avec les caractéristiques suivantes:

video: constant framerate 29,97 (le même que la source) : 30 min 12 sec
audio: AC3 Passthru : 30 min 12 sec


Après sauvegarde à partir de Subler, et après avoir indiqué dans les préférences de coder le AC-3 en AAC (Downmix Dolby Pro Logic 160 kbps) et de ne pas conserver le AC-3, j'obtiens:

video: non touché : 30 min 12 sec
audio: AAC : 30 min 12 sec
:up:


Il est peut-être tôt pour conclure que cette méthode est une panacée, mais je voulais partager ma joie :D

Mais pour l'instant, la méthode qui consiste de faire la compression en deux temps:

Bloc de code:
     1 : Avec Handbrake
        Compresser la vidéo avec un taux d'échantillonnage constant, correspondant à celui de la source et
        conserver l'audio AC-3 en utilisant l'option Passthru
   
    2 : Avec Subler
         Ouvrir puis enregistrer le fichier après avoir indiqué dans les préférences de coder le AC-3 en AAC (Downmix Dolby Pro Logic 160 kbps) et de ne pas conserver le AC-3.

est une méthode que je vais adopter pour les quelques autres fichiers qui me causaient les mêmes soucis; bien qu'il y ait une étape de plus, la deuxième étape est quasi instantanée (particulièrement en enregistrant sur SSD).

Merci JLB21 de m'avoir mis sur cette piste.

Daniel

Note : Curieusement cependant, pour l'audio j'ai comme information
Bit rate mode : variable
Bit rate : 328 kbps
Je suis un peu loin du 160 kbps indiqué dans les préférences de Subler.
 

iDanGener

Membre émérite
12 Mars 2011
650
95
Bonjour,

Pour info, le succès obtenu avec la «recette» précédente n'était pas une coïncidence. J'ai repris avec cette méthode la compression de plusieurs fichiers (plus de 10) dont la compression initiale avait amenée une différence de 1 ou 2 secondes entre les durées des flux audio et vidéo et dont j'avais conservé les fichiers sources.

Les fichiers compressés affichent maintenant la même durée pour les deux flux.

Cela n'assure pas une synchro entre les deux fichiers (il pourrait y avoir une succession de décalages positif et négatifs s'annulant) mais après plusieurs vérifications ponctuelles à divers moments sur les fichiers compressés, les fichiers semblent être bien synchronisés.

Daniel