Tengo una secuencia de PNG ( aquí hay una muestra ) que convierto en un video con ffmpeg:
ffmpeg -r 10 -i image%03d.png -s 1380x720 -c:v libx264 -qscale 10 -r 30
basf_merck_libx264.mp4
¿Con VLC todo se ve bien y elegante pero en youtube todo lo que veo es gris? ¿por qué?
Después de un rato se muestra una barra horizontal con manchas coloridas:
Cuando agrego '-pix_fmt yuv420p' al comando, youtube muestra el clip correctamente. Pero la mejor calidad que puedo elegir es 480p, que es demasiado baja para este propósito.
salida 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
Recopilé la información en mi sitio web: http://www.joyofdata.de/blog/hd-clips-with-ffmpeg-for-youtube-and-vimeo/
Respuestas:
YouTube espera que tu video tenga codificación H.264 . Si lo usa
libx264
, siga las sugerencias de codificación de YouTube:Consejos:
-qscale
es una forma de establecer calidad, pero-qscale
solo es ambiguo. Úselo-qscale:v
para-qscale:a
codificadores de video y audio que lo admitan. No use esta opción a menos que sepa lo que significa.x264 tiene una mejor opción para la calidad del entorno:
-crf
. El Factor de velocidad constante es un modo de codificación de calidad constante. Los valores más bajos significan una mejor calidad, pero cualquier cosa por debajo de 18 podría no ser visualmente mejor. El valor predeterminado es 23, pero algo así como 20 sería mejor ya que YouTube vuelve a codificar su video.-pix_fmt yuv420p
debe usarse para habilitar el muestreo descendente 4: 2: 0 para la entrada PNG, que generalmente no está muestreado en absoluto (4: 4: 4, como se observa en su salida) y a menudo contiene un canal Alfa. YouTube no manejará esto correctamente.-r
no es necesario para configurar la velocidad de fotogramas de salida, ya que YouTube manejará casi todas las velocidades de fotogramas de todos modos. Al leer 10 imágenes por segundo como entrada, cambiar la velocidad de fotogramas de salida a algo más alto (por ejemplo, 30) solo duplicará fotogramas, lo cual no es necesario.-s:v 1380x720
Es una resolución extraña. Piense en usar la resolución nativa 16: 9 720p 1280 × 720 y volver a generar sus trazados si es necesario. Esto le ahorrará algunos problemas y problemas de buzón en YouTube, y atenerse a dimensiones inusuales podría evitar que su video se muestre en resolución completa o se ofrezca en la configuración de calidad 720p.Use el contenedor MP4 en lugar de MOV, que YouTube sugiere que use. MP4 es prácticamente idéntico en funcionalidad a MOV, pero tiene mejor soporte en dispositivos de reproducción. En general, prefiera eso sobre MOV cuando pueda.
fuente
-qscale
tengan sentido. Porquelibx264
es lo mismo que configurar-qp
, ¿no? Es una opción que se aplica a la compresión x264, por lo que la fuente PNG es irrelevante. En cualquier caso,-crf
es una mejor opción que-qp
o-b:v
para un solo pase con una calidad objetivo. (en lugar de una tasa de bits objetivo).-framerate 10 -i input -r 30
generará duplicados cuando salga a mp4. (no para mkv, por razones relacionadas con ffmpeg que admite vfr en mkv, creo). Si su contenido es de 10 fps, simplemente haga un video de salida de 10 fps. Creo que youtube admite cualquier framerate que desee (hasta 60). Las cámaras de los teléfonos celulares graban video h.264 de velocidad de cuadro variable en mp4 (especialmente con poca luz), por lo que si puede cargarlas directamente a YouTube, estará bien.-r 30
comando del OP sin cambiarlo.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
), desafortunadamente todavía recibo el misterioso error "el video no pudo procesar". No estoy seguro de cómo depurarlo, desafortunadamente.