logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 15-04-2020 11:45:00

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

[Résolu] FFMpeg encoder en haute qualité

Bonjour les ami(e)s smile

J'ai une vidéo x265 que j'aimerais convertir en x264 avec FFmpeg.

Selon la documentation j'ai utilisé cette ligne de commande (j'omets volontairement l'audio car pour le moment ce n'est pas important.)

ffmpeg -y -i "video_in.mkv" -c:v libx264 -crf 18 "video_out.mkv"



Le résultat est pas top, blizzard car ffmpeg est réputé pour son excellent travail donc je ne dois pas utilisé la bonne ligne de commande.

Je fais un test avec HandBrake le résultat est super ! Donc j'analyse son log est je tombe là-dessus.

Input #0, matroska,webm, from '/home/slyfox/Bureau/in.mkv':
  Metadata:
    title           : Video test 2160p 10bit 4KLight HDR BluRay AC3 5.1 x265-QTZ
    ENCODER         : Lavf58.20.100
  Duration: 00:00:10.15, start: 0.386000, bitrate: 3086 kb/s
    Chapter #0:0: start 0.000000, end 10.000000
    Metadata:
      title           : Chapter 01
    Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x1608, SAR 1:1 DAR 160:67, 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc (default)
    Metadata:
      BPS-eng         : 3380713
      DURATION-eng    : 02:03:10.383000000
      NUMBER_OF_FRAMES-eng: 177192
      NUMBER_OF_BYTES-eng: 3123096300
      _STATISTICS_WRITING_APP-eng: mkvmerge v44.0.0 ('Domino') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2020-04-06 07:18:12
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      DURATION        : 00:00:10.145000000
    Stream #0:1(fre): Subtitle: ass (default) (forced)
    Metadata:
      title           : FR Forced : SRT
      BPS-eng         : 0
      DURATION-eng    : 01:36:03.597000000
      NUMBER_OF_FRAMES-eng: 8
      NUMBER_OF_BYTES-eng: 358
      _STATISTICS_WRITING_APP-eng: mkvmerge v44.0.0 ('Domino') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2020-04-06 07:18:12
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      ENCODER         : Lavc58.35.100 ssa
      DURATION        : 00:00:00.000000000
[12:34:18] scan: decoding previews for title 1
[12:34:20] scan: 10 previews, 3840x1608, 23.976 fps, autocrop = 0/0/0/0, aspect 2.39:1, PAR 1:1
[12:34:20] libhb: scan thread found 1 valid title(s)
[12:34:20] starting job
[12:34:20] job configuration:
[12:34:20]  * source
[12:34:20]    + /home/slyfox/Bureau/in.mkv
[12:34:20]    + title 1, chapter(s) 1 to 1
[12:34:20]    + container: matroska,webm
[12:34:20]    + data rate: 3086 kbps
[12:34:20]  * destination
[12:34:20]    + /home/slyfox/Bureau/in.m4v
[12:34:20]    + container: MPEG-4 (libavformat)
[12:34:20]      + align initial A/V stream timestamps
[12:34:20]  * video track
[12:34:20]    + decoder: hevc
[12:34:20]    + filters
[12:34:20]      + Framerate Shaper (mode=2:rate=27000000/900000)
[12:34:20]        + frame rate: 23.976 fps -> peak rate limited to 30.000 fps
[12:34:20]      + Crop and Scale (width=1920:height=1080:crop-top=0:crop-bottom=0:crop-left=0:crop-right=0)
[12:34:20]        + source: 3840 * 1608, crop (0/0/0/0): 3840 * 1608, scale: 1920 * 1080
[12:34:20]    + Output geometry
[12:34:20]      + storage dimensions: 1920 x 1080
[12:34:20]      + pixel aspect ratio: 90 : 67
[12:34:20]      + display dimensions: 2579 x 1080
[12:34:20]    + encoder: H.264 (libx264)
[12:34:20]      + preset:  fast
[12:34:20]      + profile: main
[12:34:20]      + level:   4.0
[12:34:20]      + quality: 18.00 (RF)
[12:34:20]      + color profile: 9-16-9
[12:34:20] sync: expecting 243 video frames
[12:34:20] encx264: min-keyint: 24, keyint: 240
[12:34:20] encx264: encoding at constant RF 18.000000
[12:34:20] encx264: unparsed options: level=4.0:ref=2:8x8dct=0:weightp=1:subme=6:vbv-bufsize=25000:vbv-maxrate=20000:rc-lookahead=30
x264 [info]: using SAR=90/67
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
x264 [info]: profile Main, level 4.0
[12:34:21] sync: first pts video is 0
[12:34:21] sync: "Chapter 1" (1) at frame 1 time 0
[12:34:25] reader: done. 1 scr changes
[12:34:27] work: average encoding speed for job is 40.447674 fps
[12:34:27] vfr: 233 frames output, 0 dropped and 0 duped for CFR/PFR
[12:34:27] vfr: lost time: 0 (0 frames)
[12:34:27] vfr: gained time: 0 (0 frames) (0 not accounted for)
[12:34:27] hevc-decoder done: 233 frames, 0 decoder errors
[12:34:27] sync: got 233 frames, 243 expected
[12:34:27] sync: framerate min 11.905 fps, max 23.981 fps, avg 23.872 fps
x264 [info]: frame I:2     Avg QP: 8.58  size: 15536
x264 [info]: frame P:62    Avg QP:14.84  size: 48473
x264 [info]: frame B:169   Avg QP:18.96  size:  8666
x264 [info]: consecutive B-frames:  1.3%  3.4%  7.7% 87.6%
x264 [info]: mb I  I16..4: 80.2%  0.0% 19.8%
x264 [info]: mb P  I16..4:  3.9%  0.0%  3.7%  P16..4: 36.8% 27.7% 17.5%  0.0%  0.0%    skip:10.3%
x264 [info]: mb B  I16..4:  3.8%  0.0%  0.2%  B16..8: 23.1%  4.1%  0.2%  direct:17.5%  skip:51.1%  L0:47.8% L1:41.4% BI:10.8%
x264 [info]: coded y,uvDC,uvAC intra: 15.9% 16.0% 6.2% inter: 15.4% 16.3% 1.1%
x264 [info]: i16 v,h,dc,p: 55% 22% 14% 10%
x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 15% 28%  3%  5%  4%  3%  3%  2%
x264 [info]: i8c dc,h,v,p: 87%  6%  7%  1%
x264 [info]: Weighted P-Frames: Y:48.4% UV:30.6%
x264 [info]: ref P L0: 90.0% 10.0%
x264 [info]: ref B L0: 94.0%  6.0%
x264 [info]: ref B L1: 97.2%  2.8%
x264 [info]: kb/s:3673.20
[12:34:27] mux: track 0, 233 frames, 4500822 bytes, 3673.59 kbps, fifo 256
[12:34:27] libhb: work result = 0




En particulier ces 3 ligne là me donne espoir de résoudre ce problème:

[12:34:20] encx264: min-keyint: 24, keyint: 240
[12:34:20] encx264: encoding at constant RF 18.000000
[12:34:20] encx264: unparsed options: level=4.0:ref=2:8x8dct=0:weightp=1:subme=6:vbv-bufsize=25000:vbv-maxrate=20000:rc-lookahead=30



M'inspirant de ceci je tape cette commande avec FFmepg:

ffmpeg -y -i "video_in.mkv" -c:v libx264 -crf 18 -x264opts "keyint=240:min-keyint=24:level=4.0:ref=2:8x8dct=0:weightp=1:subme=6:vbv-bufsize=25000:vbv-maxrate=20000:rc-lookahead=30" ""video_out.mkv""



Et là rien de mieux l'image est toujours aussi fade et manque de rendu des couleurs (voir images ci-dessous).

Original
1586951149.png

FFmpeg
1586951172.png


Que me conseillez-vous comme commande ? wink

Edit à toto : Pour que la lecture du code sur le forum soit lisible par tous, il faut bien séparer chaque commande de son retour. Modif fête. smile
Oh, quel beau BB …code où comment mettre en forme vos messages dans le fofo

Dernière modification par Slyfox (19-04-2020 01:05:24)

Hors ligne

#2 15-04-2020 12:56:00

Anonyme
Invité

Re : [Résolu] FFMpeg encoder en haute qualité

Bonjour Slyfox

Vois si tu peux piocher la dedans :


     ffmpeg -hide_banner -analyzeduration 1000M -probesize 1000M -vsync 2 -r "$FPS" -i "$TITLE/$i-$TITLE.vob" \
         -map 0:v -metadata title="$TITLE" \
         -c:v libx264 -b:v "$BITRATE_K" -maxrate "$BITRATE_K" -bufsize "$BUFSIZE_K" \
         -loglevel repeat+verbose -movflags faststart \
         -x264opts 'keyint=300:min-keyint=25:8x8dct:sliced-threads=0' \
         ${MAP_ID_STREAMS} -c:a copy ${ALLSHOW_TAG} -movflags +faststart -max_muxing_queue_size 9999 \
         -deblock 1:1 -flags +loop -qcomp 0.60 -qblur 0.5 -coder 1 -me_range 6 -sc_threshold 42 -bf 10 -trellis 2 -mbtree 1 -qmin 0 -qmax 52 \
         -filter:v hue=b=0.0:s=0.7,hqdn3d=1.5:1.5:4:4,unsharp=luma_msize_x=5:luma_msize_y=5:luma_amount=0.5,noise=c0s=2:c1s=2:c2s=2:c0f=a+t \
         -preset veryfast -y "$TITLE/$i-$TITLE.mkv"
 

Dernière modification par Anonyme (15-04-2020 12:57:54)

#3 15-04-2020 13:26:09

Anonyme
Invité

Re : [Résolu] FFMpeg encoder en haute qualité

C'est bizarre, je viens de tester ta commande et je dois dire que je ne remarque pas chez moi un tel changement de couleur. hmm


ffmpeg version n4.2.2

Dernière modification par Anonyme (15-04-2020 13:27:14)

#4 16-04-2020 07:59:24

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : [Résolu] FFMpeg encoder en haute qualité

Chez moi...

ffmpeg version 4.1.4-1~deb10u1 Copyright (c) 2000-2019 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



J'ai l'impression que HandBrake se basse sur FFmpeg mais en interne il y a des "options" ou filtres qui ne sont pas activé de base sur FFmpeg. (voir ci-dessus --disable-filter=resample)

Après est-ce que le fait que la vidéo que j'essaye de convertir est en 10 bits pose problème ???

Est-ce un problème avec libx264 et que HandBrake utilise une autre librairie ???

Dernière modification par Slyfox (16-04-2020 08:07:12)

Hors ligne

#5 16-04-2020 09:10:19

Anonyme
Invité

Re : [Résolu] FFMpeg encoder en haute qualité

Slyfox a écrit :



Après est-ce que le fait que la vidéo que j'essaye de convertir est en 10 bits pose problème ???

Est-ce un problème avec libx264 et que HandBrake utilise une autre librairie ???




Je ne pense pas.


Je vais peut-être te dire une conner.., mais si tu as un autre pc avec une autre configuration ... essaies un encodage avec ta commande.

Tu peux aussi avec ffmpeg par :



-filter:v hue=b=0.0:s=0.7



monter la saturation "couleur plus vive" .... ça doit rétablir le niveau de couleurs wink

Dernière modification par Anonyme (16-04-2020 09:12:43)

#6 16-04-2020 09:26:02

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : [Résolu] FFMpeg encoder en haute qualité

J'ai trouvé ! smile

Vidéo orignal:

Stream #0:0: Video: h264 (High), yuv420p(tv, bt2020nc/bt2020/smpte2084, progressive), 3840x1608 [SAR 1:1 DAR 160:67], 23.98 fps, 23.98 tbr, 1k tbn, 180k tbc (default)



Vidéo après conversion via la commande "traditionnelle" (ffmpeg -i "in.mkv" -c:v libx264 -crf 18 "out.mkv")

Stream #0:0: Video: h264 (High), yuv420p(progressive), 3840x1608 [SAR 1:1 DAR 160:67], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)



La différence est: yuv420p(tv, bt2020nc/bt2020/smpte2084, progressive)

Après une recherche sur internet voici la commande qui résout ce problème:

ffmpeg  -i in.mkv -c:v libx264 -crf 18 -pix_fmt yuv420p -x264-params "colormatrix=bt2020nc:colorprim=bt2020:transfer=smpte2084" -c:a copy out.mkv



Lien: https://trac.ffmpeg.org/wiki/colorspace

@ Anonyme

Merci pour ton aide et ton précieux temps. smile

EDIT:

Pour une vidéo x264 Full HD (1920x1080)  (peut-être plus compatible avec certains appareils que la commande ci-dessus):

ffmpeg  -i in.mkv -c:v libx264 -crf 18 -pix_fmt yuv420p -x264-params "colormatrix=bt2020nc:colorprim=bt2020:transfer=smpte2084" -vf scale=1920:-2 -c:a copy out.mkv

Dernière modification par Slyfox (25-04-2020 23:46:01)

Hors ligne

#7 16-04-2020 09:35:58

smolski
quasi...modo
Lieu : AIN
Distrib. : backports (buster) 10
Noyau : Linux 4.19.0-8-amd64
(G)UI : gnome
Inscription : 21-10-2008

Re : [Résolu] FFMpeg encoder en haute qualité

Mis le post en lien dans le tuto ffmpeg :
https://debian-facile.org/doc:media:ffmpeg#liens wink

saque eud dun (patois chtimi : fonce dedans)

Hors ligne

#8 16-04-2020 16:12:31

Anonyme
Invité

Re : [Résolu] FFMpeg encoder en haute qualité

Je viens de tester ta commande

C'est pas ça au niveau couleur chez moi, ça vire en saturation et l'image est super sombre. smile
mais, y a moyen d'embellir tout ça wink

Dernière modification par Anonyme (16-04-2020 16:14:06)

#9 16-04-2020 17:37:13

Slyfox
Membre
Distrib. : Linux pop-os
Noyau : Linux 6.2.6-76060206-generic
(G)UI : GNOME
Inscription : 15-12-2013

Re : [Résolu] FFMpeg encoder en haute qualité

Attention, la ligne de commande du poste 6 est valable seulement quand on fait:

ffmpeg -i video.mkv



est que la ligne "Stream #0:0: Video..." indique:

yuv420p(tv, bt2020nc/bt2020/smpte2084, progressive)

Dernière modification par Slyfox (17-04-2020 14:35:18)

Hors ligne

Pied de page des forums