Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème framerate X264

1 réponse
Avatar
Alf92
Hello !

je dois encoder plusieurs videos (une 60aine) provenant de sources différentes
(définition, framerate, codecs audio et video, container,...), et je souhaites
avoir au final exactement le même type de format :
X264 750kbps 25fps 576x432
AAC 96kbps 48khz
container MKV

j'ai pour cela fait une petite routine avec FFMPEG.
exemple pour les fichier FLV :
for %%a in (*.FLV) do ffmpeg -i "%%a" -r 25 -b:v 750k -bt 300k -s 576x432 -sws_flags bilinear -aspect 1.3333 -vprofile main -vcodec libx264 -ab 96k -ac 2 -ar 48000 -strict experimental -acodec aac "%%~na.MKV"

tout ce passe très bien sauf qu'au final *pour certains fichiers mais pas tous*
j'ai un framerate variable malgré le "-r 25".
(voir MédiaIfo ci dessous "Type d'images/s : Variable")

il aparait donc que selon le type de média, le résultat est différent.
à noter : si je met un profil Baseline au lieu de Main, j'obtiens bien
un framerate constant (25fps) pour toutes les vidéos.

questions :
1/ comment expliquer cette différence ?
2/ comment forcer un CFR (Constant Frame Rate) dans FFMPEG pour du *X264@main* ?
3/ si je ne trouve pas la solution (CFR X264@main), peut-on assembler
en direct stream copy (sans recompression) des fichiers en 25fps CFR
et des fichiers en 25fps VFR (Variable Frame Rate) ?

merci pour vos lumières.



---------------



Général
Identifiant unique : 13548698480313984812(...)
Nom complet : jour 01.MKV
Format : Matroska
Version du format : Version 4 / Version 2
Taille du fichier : 44,9 Mio
Durée : 7mn 21s
Débit global moyen : 853 Kbps
Application utilisée : Lavf57.14.100
Bibliothèque utilisée : Lavf57.14.100
CREATOR : Vk.com
METADATACREATOR : Yet Another Metadata Injector for FLV - Version 1.4
HASKEYFRAMES : true
HASVIDEO : true
HASAUDIO : true
HASMETADATA : true
CANSEEKTOEND : false
DATASIZE : 19732531
VIDEOSIZE : 14295683
AUDIOSIZE : 5325108
LASTTIMESTAMP : 441
LASTKEYFRAMETIMESTAMP : 441
LASTKEYFRAMELOCATION : 19693227

Vidéo
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Profil du format : Main@L3
Paramètres du format, CABAC : Oui
Paramètres du format, RefFrames : 4 images
Identifiant du codec : V_MPEG4/ISO/AVC
Débit nominal : 750 Kbps
Largeur : 576 pixels
Hauteur : 432 pixels
Format à l'écran : 4/3
Type d'images/s : Variable
Espace de couleurs : YUV
Sous-échantillonnage de la chrominance : 4:2:0
Profondeur des couleurs : 8 bits
Type de balayage : Progressif
Bibliothèque utilisée : x264 core 148 r2638 7599210
Paramètres d'encodage : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x1:0x111 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=3 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=abr / mbtree=1 / bitrate=750 / ratetol=1.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Default : Oui
Forced : Non
DURATION : 00:07:21.381000000

Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Profil du format : LC
Identifiant du codec : A_AAC
Durée : 7mn 21s
Canaux : 2 canaux
Position des cannaux : Front: L R
Echantillonnage : 48,0 KHz
Mode de compression : Avec perte
Bibliothèque utilisée : Lavc57.15.100 aac
Default : Oui
Forced : Non
DURATION : 00:07:21.516000000

1 réponse

Avatar
Alf92
Alf92 :

je dois encoder plusieurs videos (une 60aine) provenant de sources
différentes, avec des caractéristiques différentes (définition,
framerate, codecs audio et video, container,...), et
je souhaites avoir au final exactement le même type de format :
X264 750kbps 25fps 576x432
AAC 96kbps 48khz
container MKV

j'ai pour cela fait une petite routine avec FFMPEG.
exemple pour les fichier FLV :
for %%a in (*.FLV) do ffmpeg -i "%%a" -r 25 -b:v 750k -bt 300k -s 576x432
-sws_flags bilinear -aspect 1.3333 -vprofile main -vcodec libx264 -ab 96k -ac
2 -ar 48000 -strict experimental -acodec aac "%%~na.MKV"

tout ce passe très bien sauf qu'au final *pour certains fichiers mais pas
tous* j'ai un framerate variable malgré le "-r 25".
(voir MédiaIfo ci dessous "Type d'images/s : Variable")

il aparait donc que selon le type de média, le résultat est différent.
à noter : si je met un profil Baseline au lieu de Main, j'obtiens bien
un framerate constant (25fps) pour toutes les vidéos.

questions :
1/ comment expliquer cette différence ?
2/ comment forcer un CFR (Constant Frame Rate) dans FFMPEG pour du
** ?
3/ si je ne trouve pas la solution (CFR ), peut-on
assembler en direct stream copy (sans recompression) des fichiers en 25fps
CFR et des fichiers en 25fps VFR (Variable Frame Rate) ?



suite à des tests j'ai la réponse à la question 3 :

concaténation VFR + CFR (ou CFR + VBR) : ok
concaténation Main + Baseline (ou Baseline + Main) : pas ok