14
janvier
2021
Convertir des vidéos à fréquence cadres variable (VFR) en fréquence cadres constante (CFR)
10:11

Convertir des vidéos à fréquence cadres variable (VFR) en fréquence cadres constante (CFR)

14 janvier 2021 10:11

La plupart des caméras vidéo des smartphones enregistrent des vidéos à une fréquence cadres constante (30 ou 60 images par seconde). Cependant, dans l'application GCam, vous pouvez régler automatiquement la fréquence cadres pour les prises de vue nocturnes : elle descend à 14 images par seconde ou moins en cas de faible luminosité, mais l'image dans le cadre devient plus lumineuse. Les enregistrements à fréquence d'images variable (VFR) doivent être réencodés avec une fréquence d'images constante (CFR) de 30 cps.

Nous obtenons des informations sur la vidéo

Avant de commencer la transcodage, vous devez trouver les paramètres de fichier avec la résolution vidéo, la fréquence d'images et les paramètres de codage sonore,

installons le programme:

sudo apt-get install mediainfo mediainfo-gui

Conclusion sur l'écran des paramètres de la vidéo source:

mediainfo in.mp4

Où in.mp4 est le fichier source.

Parmi d'autres informations, les éléments suivants seront affichés:
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 32 s 455 ms
Bit rate : 9 603 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Variable
Frame rate : 19.350 FPS
Minimum frame rate : 14.238 FPS
Maximum frame rate : 33.174 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive

Ainsi, dans cette vidéo, le débit binaire moyen est de 19,350 ips (limites de changement de 14-33 ips).

SVICing un changement de vidéo de fréquence d'images (FPS) dans Linux

Traditionnellement, FFMPEG est responsable du traitement vidéo dans Linux.

Comment appeler FFMPEG pour modifier la fréquence cadres lue dans l'article:
https: // trac.ffmpeg.org/wiki/ChangingFrameRaTe

Svicing La vidéo est appelée par la commande:

ffmpeg -i in.mp4 -filter:v fps=fps=30 out.mp4

où in.mp4 est le fichier source
Out.mp4 - fichier de résultat.

La vitesse de recoding vidéo avec une résolution de 1920x1080 sur le processeur Celeron 2600 était de 0,25 images par seconde.
La vidéo résultante a un débit binaire constant et une fréquence d'images:

Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 32 s 467 ms
Bit rate : 6 122 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 30.000 FPS

Visuellement, lors de la lecture de la vidéo, rien n'a changé - il y a aussi de petites secousses causées par la faible fréquence d'images dans la vidéo source. Mais la fréquence du personnel est devenue constante, ce qui convient à l'utilisation de la vidéo ou de l'hébergement sur l'hébergement, comme YouTube ou Rutube.

Réglage de la qualité au stade de codage à l'aide du paramètre QP

Il est facile de remarquer qu'après le transcodage, le débit a diminué (il était de 9603 kb / s, est devenu 6 122 kb / s).
Il est possible de réduire ou d'augmenter le degré de compression lors du transcodage en configurant quantum quantizer parameter.

Par exemple:
-QP 23

Commande complète pour la recoding vidéo (Paramètre -QP 23 peut être différent):

ffmpeg -i in.mp4 -filter:v fps=fps=30 -qp 23 out.mp4

La dépendance de la vidéo de test de débit binaire 1920x1080 avec une inversion progressive (p) de 30 images par seconde du paramètre QP est indiquée dans le tableau.
Plus le QP est grand, plus la compression et la qualité inférieure sont importantes.

Les valeurs du débit binaire final sont obtenues par expérimentation, pour une vidéo de 974 images. Le cadre était présent (tir nocturne de la voiture à bout portant).

Tableau 1.

-QP cadre rate
21 10,5 Mo / s
22 9 461kb/s
23 8 682kb/s
24 7 720kb/s
25 7 101kb/s
26 6 352kb/s
27 5 588kb/s
28 4 987kb/s
29 4 453kb/s
30 3 966kb/s
31 3 546kb/s
32 3 156kb/s
33 2 824kb/s
34 2 502kb/s
35 2 236kb/s

Le débit binaire recommandé dans les articles réside dans la plage de 5 à 8 Mbps (la valeur du paramètre «quantum» va dans 28-23).

J'ai regardé les fichiers résultants - en effet, il n'y a pas d'artefacts de compression à 8 Mbps (QP = 23 ... 24). Des signes de compression se produisent avec un flux inférieur à 4 Mbps (QP = 30 ou plus)!

Réglage de la qualité vidéo à l'aide du paramètre de «qualité constante» CRF

J'ai lu cette méthode dans l'article
https: // slhck.info/video/2017/02/24/crf-guide.htmL.

Les valeurs optimales CRF sont également dans la plage de 18 à 25, où 18 est le meilleur, 28 est la pire qualité.

Tableau 2.

- c.rf Bit raTe
18 10,4 MB / s
19 9 404kb/S
20 8 482kb/S
21 7 628kb/S
22 6 844kb/S
23 6 122kb/S
24 5 465kb/S
25 4 867kb/S
26 4 329kb/S
27 3 848kb/S
28 3 417kb/S
29 3 032kb/S
30 2 693kb/S
31 2 390kb/S

La qualité de la vidéo dans CRF = 23 est assez bonne. Avec CRF = 26, avec un mouvement rapide de la caméra, les "carrés" sont perceptibles.

Limiter le débit maximal

Pour que la vidéo soit lue dans le flux, il est nécessaire de limiter la vitesse du flux de bits de sorte que sur les scènes les plus difficiles, le débit binaire ne «s'envole» pas en dehors des limites, limites du canal de transmission.

La limite de vitesse supérieure pendant le codage est généralement limitée par l'option suivante:

-b:v 10000k
où 10 000k - Débit maximal du canal, en kilobits/seconde. La limite peut être quelconque, mais supérieure au débit moyen à un débit CRF donné. (Voir le deuxième tableau ci-dessus). Ce paramètre ressemble à la mise en forme dans les réseaux IP - la vitesse maximale est limitée.

Quelle méthode d'ajustement de la qualité de la vidéo, du QP ou du CRF, choisissez-vous?

Si vous utilisez le paramètre QP, le degré de compression pour les scènes dynamiques et statiques est le même. Cela signifie que pour le personnel statique, la compression peut être excessive et pour la dynamique (à laquelle l'œil / le cerveau ne répond presque pas) - insuffisant.

Le paramètre CRF fonctionne de manière opposée - détermine la qualité "subjective" moyenne pour toutes les cadres de la vidéo. Pour les scènes dynamiques, par exemple, en train de tirer des animaux rapides, des machines qui passent, les transitions les plus nettes seront floues (enregistrement de débit), mais les mouvements plus lents seront meilleurs qu'avec un QP constant.

Ajout. Vidéo de rexing avec une coupe simultanée du début et de la fin des marques de temps

Parfois, vous devez couper le début et la fin de la vidéo. Par exemple, si vous entrez dans un accident et que vous devez transcoder la vidéo du registraire avec le moment de l'accident.

Ligne d'équipe:

ffmpeg -i FILE211027-172845.MOV -qp 35 -filter:v fps=fps=30 -ss 00:00:00 -to 00:00:44 out3.mp4

Où est le début (Démarrer la vidéo), -po fin (fin de la vidéo). -QP compression (avec -qp 35 flux d'environ 2,2 mbit / s-compression maximum).

Conclusions:

  1. Le programme FFMPEG vous permet de transcoder la vidéo de la fréquence variable du personnel constant.
  2. La gestion du degré de compression (et de la taille du fichier) vous permet d'ajuster de manière flexible le débit vidéo pour les paramètres QP ou CRF.
  3. Dans les prises de vue avec un trafic imprévisible, il est préférable d'utiliser CRF = 20 ou 21, avec une limitation du débit maximal au niveau de 10 Mbps.

Sources:
https://trac.ffmpeg.org/wiki/ChangingFrameRaTe
Bitrate Google recommandé - débit binaire 8 Mbps pour FullHD.
https://ru.wikipedia.org/wiki/Constant_Rate_Factor
https://stackoverflow.com/questions/18444194/COUPE-THE-VIDEOS ...



Publications connexes