Conversion du 60i au 60p

C’est un sujet intéressant, je pense avoir trouvé ce qui se passe.

Je pense que le « problème » vient du fait que MCEbuddy choisit Handbrake comme encodeur et que la façon dont MCEbuddy transmet votre fréquence d’images (celle que vous définissez dans l’interface graphique) à Handbrake est d’ajouter le paramètre de ligne de commande -r 59.94

L’utilisation du paramètre -r force par défaut une fréquence d’images pic, donc il dit à Handbrake de ne pas dépasser 59.94 au lieu de l’imposer. Il semble qu’il choisisse alors une valeur autour de 29,xx…

Je pense donc qu’il y a plusieurs moyens de contourner cela :

  1. ne pas utiliser Handbrake (mauvaise option)
  2. utiliser un profil par défaut où la priorité de ffmpeg est supérieure à celle de Handbrake (mauvaise option)
  3. ajouter --cfr à la fin de handbrake-general dans votre profil (meilleure option)

c’est-à-dire, pour l’option 3, dans profiles.conf le profil [mp4 normal] :

handbrake-general=--decomb --loose-anamorphic --verbose=2 -f mp4 -O

devient

handbrake-general=--decomb --loose-anamorphic --verbose=2 -f mp4 -O --cfr

Vous pouvez rapidement tester que c’est bien le problème en utilisant un profil où ffmpeg est prioritaire. Utilisez le profil [DivX AVI Normal] avec 59.94 défini dans l’interface ; il utilise ffmpeg.
Voici mes résultats :

Video
ID                                       : 1
Format                                   : xvid
Codec ID                                 : xvid
Duration                                 : 26 s 994 ms
Bit rate                                 : 1 826 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 072 pixels
Display aspect ratio                     : 16:9
Frame rate                               : 59.940 (60000/1001) FPS
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.015
Stream size                              : 5.87 MiB (87%)

Pour l’explication, voici ce que dit la documentation de HandBrakeCLI :

   -r, --rate <float>      Set video framerate
                       (5/10/12/15/20/23.976/24/25/29.97/
                       30/48/50/59.94/60/72/75/90/100/120
                       or a number between 1 and 1000).
                       Be aware that not specifying a framerate lets
                       HandBrake preserve a source's time stamps,
                       potentially creating variable framerate video

--vfr, --cfr, --pfr     Select variable, constant or peak-limited
                       frame rate control. VFR preserves the source
                       timing. CFR makes the output constant rate at
                       the rate given by the -r flag (or the source's
                       average rate if no -r is given). PFR doesn't
                       allow the rate to go over the rate specified
                       with the -r flag but won't change the source
                       timing if it's below that rate.
                       If none of these flags are given, the default
                       is --pfr when -r is given and --vfr otherwise

Enfin, je ne suis pas sûr que doubler la fréquence d’images soit ce que vous voulez. Si une vidéo est désentrelacée à 30 fps, la doubler à 60 n’apporte rien ; c’est peut-être ce que fait le réglage de la fréquence. Je pense qu’il faut doubler la fréquence ET modifier les réglages de désentrelacement.

Voici ce que je comprends (limité) ; je ne sais pas comment Plex, decomb ou yadif gèrent cela :

Exemple
60i fps, images sur 3 s :

ABCDEFGH

30p fps, images sur 3 s :

ACEG

60p fps, images sur 3 s, après doublement de la fréquence avec -r 59.94 -cfr :

AACCEEGG

Dans l’exemple ci-dessus, 30p et 60p devraient être visuellement identiques, non ? La « fréquence » a doublé mais les images sont les mêmes.

Ce que vous voulez vraiment, c’est :

60i fps, images sur 3 s :

ABCDEFGH

60p fps, images sur 3 s :

ABCDEFGH

Et pour obtenir cet effet, je pense qu’il faut modifier vos réglages de désentrelacement.
Voir : Yadif deinterlace

Voici les réglages yadif dans MCEbuddy, qui ne changent jamais :

yadif=0:-1:1

MCEbuddy Handbrake utilise :

--decomb (réglages par défaut, sans preset)

D’après la doc :

    --decomb[=string]   Deinterlace video using a combination of yadif,
                       blend, cubic, or EEDI2 interpolation.

                       Presets:
                           bob
                           eedi2
                           eedi2bob

Decomb est donc intelligent : il calcule d’abord s’il doit désentrelacer (garde les images s’il n’y a pas de peignage) et, si besoin, choisit la meilleure méthode de désentrelacement.

Donc, decomb gagnerait à doubler la fréquence par défaut, mais le bénéfice recherché nécessitera peut-être :

--decomb=bob

Ce qui impliquerait un profil personnalisé et pourrait être influencé dans MCEbuddy en changeant l’auto-détection.

Un bon test serait de forcer la fréquence dans l’interface Handbrake avec decomb par défaut et decomb BOB ; dites-moi si vous voyez une différence.