(Re)Diffuser la télévision française à 30 images par secondes ?
L'INA a sorti dernièrement une chaine FAST: INA 70. Super projet qui nous ramène dans la télévision française des 70's. Je m'étonne cependant que le flux soit streamé à 30 fps pour un contenu qui provient principalement de sources historiquement diffusées et produites à 50 trames par seconde...
Captons 10 secondes du flux en question dans un fichier
1timeout 10 streamlink --quiet -o - https://pluto.tv/fr/live-tv/639b54404cfdf7000729b3c1 best > ina-70-fr.ts
Les 2 outils sont installables sous MacOS avec la commande homebrew
suivante:
1brew install coreutils streamlink
On analyse le framerate et l'entrelacement avec mediainfo
1$ mediainfo --Output=JSON ina-70-fr.ts | jq '.media.track[]| select(."@type" == "Video") | .FrameRate'
2"30.000"
3$ mediainfo --Output=JSON ina-70-fr.ts | jq '.media.track[]| select(."@type" == "Video") | .ScanType'
4"Progressive"
Les 2 outils sont installables sous MacOS
avec la commande suivante:
1brew install mediainfo jq
Comme je le craignais, il y a bien un défaut visible dans la vidéo. On a une source réelle qui doit être à 50 trames par seconde (entrelacé) et on a un système de diffusion qui tourne à 30fps (progressif). Il faudra dans tous les cas désentrelacer, puis plusieurs possibilités :
- on accélère le tout, audio et vidéo pour passer de 25fps à 30fps. La vidéo sera plus courte, les voix plus aigües. Ne rigolez pas, c'est ce qu'il se passe quand des films de cinéma à 24fps sont diffusés à la TV à 25fps. Sauf que dans ce cas c'est moins perceptible. Cette technique s'appelle le "PAL Speed Up". Mauvaise idée dans notre cas.
- on fait plus on moins des arrondis dans tous les sens à la sauce 3:2 pull down
- on duplique cycliquement des images ! Une seconde reste une seconde et on doit l'alimenter avec 30 images. Prenons les 25 d'origine et dupliquons équitablement 5 images réparties dans la seconde. On parle aussi de motion judder.
1 A B C D E
2source: 01 02 03 04 05 05 06 07 08 09 10 10 11 12 13 14 15 15 16 17 18 19 20 20 21 22 23 24 25 25
3pluto: 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
On se retrouve avec des groupes de 6 images dont la dernière est dupliquée...
Pour le mesurer, j'utilise mpv
comme lecteur vidéo car il permet de faire de l'image par image (raccourcis .
pour image suivante et ,
pour image précédente). On constate bien ce cycle de 6 images.
Ralentissons la vidéo d'un facteur 10 pour mieux se rendre compte de l'effet (= 3 images/sec).
1ffmpeg -i ina-70-fr.ts -filter:v "setpts=10.0*PTS" -s 640x360 -an -c:v libx264 -movflags +faststart -y slow-mo.mp4
Pour réparer et remettre à la bonne la cadence d'image (mais au prix d'un réencodage donc d'une dégradation de la qualité) :
1ffmpeg -r 25 -i ina-70-fr.ts -vf "select='mod(n+0,6)',setpts='N/25/TB'" -b:v 4000k -map 0 ina-70-fr-fixed.ts
Note: faire éventuellement varier le 0
de (n+0,6)
entre 0 et 5 pour retirer la bonne image en doublon.
Pour faire le test complet de la génération d'une vidéo à 30 FPS à la conversion en 25 FPS (avec incrustation du timecode pour voir les frames supprimées)
1ffmpeg -f lavfi -i testsrc=size=640x360:rate=30 -vf "drawtext=text='':x=(w-tw)/2:y=h-(2*lh):fontsize=40:fontcolor=white:box=1:boxcolor=black:boxborderw=4:timecode='00\:00\:00\:00':timecode_rate=30,format=yuv420p" -t 10 -y test-30.mp4
2ffmpeg -i test-30.mp4 -vf "select='mod(n+0,6)',setpts='N/25/TB'" -b:v 4000k -r 25 test-25.mp4
00:00:00:00
(non présent dans test-25.mp4, multiple de 6)00:00:00:01
00:00:00:02
00:00:00:03
00:00:00:04
00:00:00:05
00:00:00:06
(non présent dans test-25.mp4, multiple de 6)00:00:00:07
- (...)
Conclusion
pluto.tv ne pourrait-il pas permettre une diffusion à 25 fps afin de respecter l'oeuvre d'origine et ainsi éviter ces saccades régulières ?
Excepté ce détail technique, allez quand même jeter un oeil sur cette nouvelle chaîne qui a le mérite de remettre en lumière les émissions de la télé française des années 70, avec leur heure de diffusion d'origine. Le voyage dans le temps existe ! 🚀📺😎
Ressources
- https://pluto.tv/en/live-tv/ina-70-fr
- https://www.ina.fr/actualites-ina/fast-tv-samsung-70-pluto
- https://stackoverflow.com/questions/37088517/remove-sequentially-duplicate-frames-when-using-ffmpeg
- https://www.journaldulapin.com/2020/05/25/pal-speed-up-harry/
- https://en.wikipedia.org/wiki/Free_ad-supported_streaming_television
- https://en.wikipedia.org/wiki/Three-two_pull_down
- https://en.wikipedia.org/wiki/576i#PAL_speed-up
- https://www.youtube.com/watch?v=CuEZIJDEQyo
- https://superuser.com/questions/1804268/ffmpeg-remove-every-6th-frame-starting-from-the-3rd-frame