Convirtiendo 60i a 60p

Este es un tema interesante, creo que encontré lo que está pasando.

Creo que el “problema” es que MCEbuddy está eligiendo Handbrake como el programa de codificación y la forma en que MCEbuddy pasa tu framerate (el que especificas en la GUI) a Handbrake es agregando el parámetro de línea de comandos -r 59.94

El uso del parámetro -r por defecto establece el framerate máximo, así que le está diciendo a handbrake que elija un framerate no mayor que (59.94) en lugar de forzarlo. Parece que con esto elige uno en el rango de 29.xx…

Creo que hay algunas formas de evitar esto, entonces:

  1. no usar handbrake (mala opción)
  2. usar un perfil predeterminado donde la prioridad de ffmpeg sea mayor que la de handbrake (mala opción)
  3. agregar -cfr al final de handbrake-general en tu perfil (mejor opción)

es decir, para la opción 3, en profiles.conf el perfil [mp4 normal]:

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

se convierte en

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

Puedes probar rápidamente que este es el problema usando un perfil donde ffmpeg tenga mayor prioridad. Usa el perfil [DivX AVI Normal] con 59.54 establecido en la gui, usa ffmpeg.
Aquí están mis resultados con eso:

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%)

Para la explicación, esto está tomado directamente de la documentación 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

Finalmente, no estoy exactamente seguro de que duplicar el framerate sea lo que quieres. Si un video es desentrelazado a 30fps, no haces nada al duplicarlo a 60, que puede ser lo que está haciendo establecer el framerate. No estoy exactamente seguro pero creo que quieres duplicar el framerate y modificar la configuración del desentrelazado.

Aquí está lo que pienso basado en mi limitado entendimiento, y no estoy seguro de cómo lo hace plex, lo hace decomb, y cómo difiere yadif:

Ejemplo
60i fps, frames en 3 segundos de video:

ABCDEFGH

30p fps, frames en 3 segundos de video:

ACEG

60p fps, frames en 3 segundos de video, después de duplicar el framerate al establecer
-r 59.94 -cfr :

AACCEEGG

En lo anterior, ¿30p y 60p deberían verse igual para un humano, no? El “framerate” se duplicó pero los frames son los mismos así que no hay diferencia visual?

Realmente lo que quieres es
60i fps, frames en 3 segundos de video:

ABCDEFGH

60p fps, frames en 3 segundos de video:

ABCDEFGH

Y para lograr este efecto deseado creo que necesitas modificar tu configuración de desentrelazado.
Mira esto: Yadif deinterlace

Estas son las configuraciones en MCEbuddy para yadif, que nunca cambian:

yadif=0:-1:1 

MCEbuddy Handbrake por otro lado usa

--decomb (default decomb settings / no preset)

De los docs:

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

                       Presets:
                           bob
                           eedi2
                           eedi2bob

Puedes ver por qué decomb es bueno, primero calcula si necesita desentrelazar (mantiene los frames si no hay combing y si necesita desentrelazar, usa una mezcla de métodos de desentrelazado (que calcula cuál sería el mejor para usar en ese momento del video).

Entonces, estoy seguro de que decomb se beneficiaría en su estado predeterminado al duplicar el framerate, pero no estoy seguro de si el beneficio real que buscas requiere

--decomb=bob 

¿en cambio? Y establecer esto requeriría un perfil personalizado y podría verse afectado en MCEbuddy al cambiar la detección automática de int.

Una buena prueba sería forzar el framerate en la GUI de handbrake usando decomb predeterminado y decomb BOB, avísame si puedes notar una diferencia