J'ai une séquence de PNG (en voici un exemplaire ) que je transforme en vidéo avec ffmpeg:
ffmpeg -r 10 -i image%03d.png -s 1380x720 -c:v libx264 -qscale 10 -r 30
basf_merck_libx264.mp4
Avec VLC, tout est beau et dandy, mais sur YouTube, tout ce que je vois est gris!? Pourquoi?
Après un certain temps, une barre horizontale avec des taches colorées s'affiche:
Lorsque j'ajoute «-pix_fmt yuv420p» à la commande, YouTube affiche correctement le clip. Mais alors la plus haute qualité que je peux choisir est 480p, ce qui est trop faible à cet effet.
sortie ffmpeg
C:\Users\Raffael\Documents\proj>ffmpeg -r 10 -i image%03d.png -s 1380x720 -c:v libx264 -qscale 10 -r 30 basf_merck_libx264.mp4
ffmpeg version N-48785-g2ea3f37 Copyright (c) 2000-2013 the FFmpeg developers
built on Jan 12 2013 20:45:33 with gcc 4.7.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnu
tls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-l
ibopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwol
ame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
--enable-filter=frei0r
libavutil 52. 14.100 / 52. 14.100
libavcodec 54. 86.100 / 54. 86.100
libavformat 54. 59.107 / 54. 59.107
libavdevice 54. 3.102 / 54. 3.102
libavfilter 3. 32.100 / 3. 32.100
libswscale 2. 1.103 / 2. 1.103
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Input #0, image2, from 'image%03d.png':
Duration: 00:00:02.04, start: 0.000000, bitrate: N/A
Stream #0:0: Video: png, rgb24, 1380x720, 25 fps, 25 tbr, 25 tbn, 25 tbc
Please use -q:a or -q:v, -qscale is ambiguous
File 'basf_merck_libx264.mp4' already exists. Overwrite ? [y/N] y
using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle Cache64
[libx264 @ 00000000021c6fe0] profile High 4:4:4 Predictive, level 3.2, 4:4:4 8-bit
[libx264 @ 00000000021c6fe0] 264 - core 129 r2230 1cffe9f - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options:
cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 dead
zone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_int
ra=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_lookahea
d=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'basf_merck_libx264.mp4':
Metadata:
encoder : Lavf54.59.107
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv444p, 1380x720, q=-1--1, 15360 tbn, 30 tbc
Stream mapping:
Stream #0:0 -> #0:0 (png -> libx264)
Press [q] to stop, [?] for help
frame= 151 fps= 16 q=-1.0 Lsize= 1995kB time=00:00:04.96 bitrate=3290.5kbits/s dup=100 drop=0
video:1992kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.127092%
[libx264 @ 00000000021c6fe0] frame I:1 Avg QP:22.19 size: 57949
[libx264 @ 00000000021c6fe0] frame P:54 Avg QP:26.90 size: 36277
[libx264 @ 00000000021c6fe0] frame B:96 Avg QP:21.56 size: 236
[libx264 @ 00000000021c6fe0] consecutive B-frames: 5.3% 1.3% 85.4% 7.9%
[libx264 @ 00000000021c6fe0] mb I I16..4: 71.1% 2.5% 26.4%
[libx264 @ 00000000021c6fe0] mb P I16..4: 0.6% 0.5% 5.7% P16..4: 3.1% 2.1% 2.9% 0.0% 0.0% skip:85.0%
[libx264 @ 00000000021c6fe0] mb B I16..4: 0.2% 0.1% 0.0% B16..8: 4.7% 0.1% 0.0% direct: 0.0% skip:94.9% L0:77.6% L1:22.3% BI: 0.1%
[libx264 @ 00000000021c6fe0] 8x8 transform intra:7.7% inter:5.2%
[libx264 @ 00000000021c6fe0] coded y,u,v intra: 59.5% 54.3% 52.9% inter: 1.3% 1.0% 0.6%
[libx264 @ 00000000021c6fe0] i16 v,h,dc,p: 81% 15% 4% 0%
[libx264 @ 00000000021c6fe0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 5% 64% 3% 2% 4% 3% 4% 3%
[libx264 @ 00000000021c6fe0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 13% 21% 7% 6% 7% 6% 7% 6%
[libx264 @ 00000000021c6fe0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 00000000021c6fe0] ref P L0: 65.3% 9.0% 20.2% 5.5%
[libx264 @ 00000000021c6fe0] ref B L0: 73.0% 21.7% 5.3%
[libx264 @ 00000000021c6fe0] ref B L1: 90.8% 9.2%
[libx264 @ 00000000021c6fe0] kb/s:3241.64
J'ai collecté les informations sur mon site Web: http://www.joyofdata.de/blog/hd-clips-with-ffmpeg-for-youtube-and-vimeo/
Réponses:
YouTube s'attend à ce que votre vidéo soit codée H.264 . Si vous utilisez
libx264
, respectez les suggestions d'encodage de YouTube:Conseils:
-qscale
est un moyen de définir la qualité, mais-qscale
seul est ambigu. À utiliser-qscale:v
pour-qscale:a
les encodeurs vidéo et audio qui le prennent en charge. N'utilisez cette option que si vous savez ce que cela signifie.x264 a une meilleure option pour la qualité de réglage:
-crf
. Le facteur de débit constant est un mode de codage de qualité constante. Des valeurs plus faibles signifient une meilleure qualité, mais tout ce qui est inférieur à 18 peut ne pas être visuellement meilleur. La valeur par défaut est 23, mais quelque chose comme 20 serait préférable car YouTube réencode à nouveau votre vidéo.-pix_fmt yuv420p
doit être utilisé pour activer le sous-échantillonnage 4: 2: 0 pour l'entrée PNG, qui n'est généralement pas du tout sous-échantillonné (4: 4: 4, comme observé dans votre sortie) et contient souvent un canal Alpha. YouTube ne gère pas cela correctement.-r
n'est pas nécessaire pour définir la fréquence d'images de sortie, car YouTube gère de toute façon presque toutes les fréquences d'images. Lors de la lecture de 10 images par seconde en entrée, le changement de la fréquence d'images de sortie à quelque chose de plus élevé (par exemple 30) ne fera que dupliquer les images, ce qui n'est pas nécessaire.-s:v 1380x720
est une résolution bizarre. Pensez à utiliser la résolution native 16: 9 720p 1280 × 720 et à recréer vos tracés si nécessaire. Cela vous évitera des problèmes et des problèmes de boîte aux lettres sur YouTube, et le respect de dimensions inhabituelles pourrait empêcher votre vidéo d'être affichée en pleine résolution ou offerte avec le paramètre de qualité 720p.Utilisez le conteneur MP4 au lieu de MOV, que YouTube vous suggère d'utiliser. MP4 est pratiquement identique dans ses fonctionnalités à MOV, mais a un meilleur support dans les appareils de lecture. En général, préférez cela à MOV quand vous le pouvez.
la source
-qscale
aient un sens. Carlibx264
, c'est la même chose que le réglage-qp
, n'est-ce pas? C'est une option qui s'applique à la compression x264, donc la source étant PNG n'est pas pertinente. Quoi qu'il en soit,-crf
c'est un meilleur choix que-qp
ou-b:v
pour un passage avec une qualité cible. (plutôt qu'un débit binaire cible).-framerate 10 -i input -r 30
générera des doublons lors de la sortie vers mp4. (pas pour mkv, pour des raisons liées au ffmpeg supportant vfr dans mkv, je pense.) Si votre contenu est de 10 fps, faites juste une vidéo de sortie de 10 fps. Je pense que YouTube prend en charge la fréquence d'images que vous souhaitez (jusqu'à 60). Les caméras de téléphone portable enregistrent des vidéos h.264 à fréquence d'images variable en mp4 (surtout en basse lumière), donc si vous pouvez les télécharger directement sur YouTube, tout ira bien.-r 30
commandement du PO sans le changer.ffmpeg -y -framerate 1 -i static_image.png -i bg_music.mp3 -s:v 1280x720 -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p output.mp4
), malheureusement, je reçois toujours la mystérieuse erreur "la vidéo n'a pas pu être traitée". Je ne sais pas comment le déboguer, malheureusement.