Compression d'une vidéo

Hello :raising_hand_woman:

J’ai fait une vidéo qui fait 200 MB.
Via un compresseur en ligne, je suis arrivée à 132 MB.
J’aimerais la réduire davantage (arriver par exemple à 64 MB).
Comment puis-je faire ?

Merci !!

Si on suppose que la vidéo est compressée autant que possible, il est possible de réduire la résolution. C’est assez facile à faire en utilisant la ligne de commande et ffmpeg mais c’est pas très amical aux personnes non techniques (c’est le moins qu’on puisse dire). Voila comment réduire la résolution d’une vidéo de 480x352 à 240x176 ce qui la fait passer de ~100MB à ~50MB.

$ ffprobe bigger.mp4 
...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'bigger.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    artist          : TSV Productions
    encoder         : HandBrake 0.10.1 2015030800
  Duration: 00:22:33.02, start: 0.000000, bitrate: 627 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 480x352 [SAR 1:1 DAR 15:
$ ffmpeg -i bigger.mp4 -vf scale=240x176 smaller.mp4
...
frame=32440 fps=377 q=-1.0 Lsize=   49014kB time=00:22:33.00 bitrate= 296.8kbits/s dup=33 drop=0 speed=15.7x    
video:26986kB audio:21128kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.870604%
...
$ ffprobe smaller.mp4
...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'smaller.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    artist          : TSV Productions
    encoder         : Lavf58.20.100
  Duration: 00:22:33.02, start: 0.000000, bitrate: 296 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 240x176 [SAR 1:1 DAR 15:11], 163 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
...
$ ls -lh smaller.mp4 bigger.mp4
-rw-r--r-- 1 loic loic 102M Jul 14 14:29 bigger.mp4
-rw-r--r-- 1 loic loic  48M Jul 24 18:15 smaller.mp4

Si tu peux mettre la vidéo à dispostion (sur https://partage.mlalerte.org par exemple), je peux tenter de le faire avec l’interface graphique de kdenlive.

A++

:scream: :face_with_monocle: :nauseated_face: :grimacing:

:star_struck:
Tu veux le projet kdenlive ou les vidéos en mp4 ?

Juste une vidéo dont tu veux réduire l’encombrement, ça sera très bien :slight_smile: Je pense qu’il faut utiliser Crop, Scale and Tilt mais la doc est assez inexistante. Et l’interface est … cryptique donc ça va demander des essais :roll_eyes:

ss

Les mp4 sont dans le dossier. Tu peux prendre les versions les plus lourdes à la rigueur…
Ne t’acharne pas dessus, je peux probablement utiliser celles-ci sur pas mal de plateformes déjà

J’ai suivi les instructions pour faire une réduction de résolution de la vidéo via VLC et j’y suis arrivé (les instructions sont pas 100% correctes mais c’est trivial de s’en sortir).

$ ls -lh bigger.mp4 smaller.mp4 
-rw-r--r-- 1 loic loic 102M Jul 14 14:29 bigger.mp4
-rw-r--r-- 1 loic loic  49M Jul 24 18:42 smaller.mp4

Dans quel dossier sont les vidéos ?

Vidéos recevabilité

Je ne vois pas ce dossier sur https://partage.mlalerte.org/ ? :sweat_smile:

2 posts were split to a new topic: Deux méthodes de partage de dossiers via Nextcloud

C’est bon j’ai les vidéos, je travaille sur Recevabilité 132MB.mp4

1 Like

Recevabilité 132MB.mp4

$ ffprobe Recevabilité\ 132MB.mp4 
ffprobe version 4.1.6-1~deb10u1 Copyright (c) 2007-2020 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --prefix=/usr --extra-version='1~deb10u1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Recevabilité 132MB.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.83.100
  Duration: 00:04:31.15, start: 0.000000, bitrate: 3893 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 3759 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

Recevabilité 200MB.mp4

$ ffprobe Recevabilité\ 200MB.mp4 
ffprobe version 4.1.6-1~deb10u1 Copyright (c) 2007-2020 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --prefix=/usr --extra-version='1~deb10u1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Recevabilité 200MB.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.29.100
  Duration: 00:04:31.15, start: 0.000000, bitrate: 5856 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709/unknown/bt709), 1920x1080 [SAR 1:1 DAR 16:9], 5657 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 193 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

Les différences

Le gain de place vient d’un bitrate plus faible bitrate: 5856 kb/s pour 200MB et bitrate: 3893 kb/s pour 132MB.

$ diff -u /tmp/200.txt /tmp/132.txt 
--- /tmp/200.txt	2020-07-28 12:10:10.946827974 +0200
+++ /tmp/132.txt	2020-07-28 12:10:21.790934212 +0200
@@ -10,16 +10,16 @@
   libswscale      5.  3.100 /  5.  3.100
   libswresample   3.  3.100 /  3.  3.100
   libpostproc    55.  3.100 / 55.  3.100
-Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Recevabilité 200MB.mp4':
+Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Recevabilité 132MB.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
-    encoder         : Lavf58.29.100
-  Duration: 00:04:31.15, start: 0.000000, bitrate: 5856 kb/s
-    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709/unknown/bt709), 1920x1080 [SAR 1:1 DAR 16:9], 5657 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
+    encoder         : Lavf57.83.100
+  Duration: 00:04:31.15, start: 0.000000, bitrate: 3893 kb/s
+    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 3759 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
     Metadata:
       handler_name    : VideoHandler
-    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 193 kb/s (default)
+    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
     Metadata:
       handler_name    : SoundHandler

Les deux vidéos sont du 1080p Full HD. Je suis repartit de la vidéo de 200MB pour faire du 720p standard HD et du 480p 16:9

  • ffmpeg -i Recevabilité-1080p.mp4 -filter:v scale=-1:720 -c:a copy Recevabilité-720p.mp4
    • bitrate=1986.2kbits/s
    • 65MB
  • ffmpeg -i Recevabilité-1080p.mp4 -s 854x480 -c:a copy Recevabilité-480p.mp4
    • bitrate=1090.8kbits/s
    • 36MB

Je suppose que ce serait mieux pour toi si la vidéo en 720p était un peu en dessous des 64MB qui semble être un seuil imposé dans certains contextes ? J’envoie les deux fichiers sur https://partage.mlalerte.org de toute façon dans le dossier BS-LD.

1 Like

J’ai regardé en plein écran (sur un écran 4k) les vidéos 480p et 720p. Vu que c’est un plan fixe qui bouge pas beaucoup, la différence est à peine perceptible. Le son est dans tout les cas nickel. AMHA utiliser la vidéo 480p dans tout les cas est une options très viable.

1 Like

Oui je pense que ce sera très bien !
Les limites sont quand même assez hautes sur pas mal de plateformes donc je pourrai aviser en fonction.

1 Like

La solution la plus simple consiste en fait à envoyer la vidéo sur peertube qui va ensuite la convertir dans des formats de plus petite résolution. Et on peut ensuite télécharger le résultat.