Estoy intentando grabar un video corto de mi escritorio y subirlo a youtube. El problema es que cada vez que lo subo a YouTube o incluso a Dropbox (como video), la calidad es mucho peor.
Mi ejecución ffmpeg:
ffmpeg -f x11grab -s 1366x768 -r 30 -i :0.0 -codec:v libx264 -crf 10 -bf 20 -flags +cgop -pix_fmt yuv440p -movflags faststart help.mp4
Residencia en:
ffmpeg -i <input file> -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart <output_name>.mp4
que encontré aquí
Archivo original (.zip): https://www.dropbox.com/s/xlkr83rkqfxon23/help.mp4.zip?dl=0
Archivo después de subir a youtube: https://www.youtube.com/watch?v=ewEUgpXOpmg
Como puedes ver, pierdo calidad después de subir a youtube.
¿Usted me podría ayudar?
¿Cómo debo elegir los parámetros apropiados para grabar y subir videos de alta calidad?
Respuestas:
Intente tomar su video grabado y ampliarlo.
He escuchado que cuando el sistema de codificación de YT ve un video de resolución de supermegahighigh, lo trata de manera diferente y trabaja más duro para hacer que las versiones de menor resolución tengan una calidad superior a la entrada de 1080p / etc. Nunca he explorado esto, YMMV, pero vale la pena intentarlo.
El único problema es que la ampliación de escala es un proceso necesariamente con pérdidas; La escala de píxeles perfecta se ve terrible (ver más abajo). A menos que el sistema de codificación de YT sea asombroso, espero que se necesite un suavizado para que el video se vea bien cuando se vean las versiones de 1080p / 720p (recodificadas, escaladas hacia abajo).
Por lo tanto, se trata de lograr un equilibrio entre el proceso de mayor y menor escala introduciendo la menor cantidad posible de desenfoque / pérdida. Por lo general, este es un problema de prueba y error que requerirá información del mundo real (específico a lo que se mostrará en la pantalla; por ejemplo, la mayoría de texto).
(Además, no tengo idea si puede eliminar / ocultar / etc ciertas resoluciones de video al cargar video en YT, pero es casi seguro que esté ocultando la versión cargada 2K / 4K en este caso)
Jugué un poco con ffmpeg; Los dos bits de información que resultaron más útiles fueron los página de instrucciones de escalado y el documentación del escalador .
Esto es lo que se me ocurrió:
ffmpeg -i help.mp4 -c:v libx264 -preset ultrafast -vf scale=iw*4:-1:flags=neighbor+bitexact+accurate_rnd+full_chroma_int+full_chroma_inp+print_info -y help4x.mp4
-c:v libx264 -preset ultrafast
hace que la codificación sea más rápida, pero usa mucho disco (en este caso, 6,6 MB de salida frente a 1,7 MB de entrada). El aumento de escala parecía necesitar 1GB + de RAM y toda mi CPU, independientemente de la configuración de codificación, por lo que si tiene más ancho de banda que el tiempo, es posible que prefiera la aceleración. El codificador H264 tiene otras configuraciones de velocidad / rendimiento, ver https://trac.ffmpeg.org/wiki/Encode/H.264-vf scale=iw*4:-1
mejora el video 4x & gt;: D -iw
= ancho de entrada,*4
(multiplicar por 4) se explica por sí mismo,-1
= "averiguar el ancho desde la altura y mantener la relación de aspecto".flags=
:He seleccionado
neighbor
aquí para mostrarle cuál es el que no hace ningún efecto de difuminado / suavizado, es decir, duplicación / triplicado de píxeles perfectos / etc ... y para hacerle saber que en realidad se ve sorprendentemente mal reducido de nuevo (no esperaba eso). ).experimental
Se veía bien, no estoy seguro si era mejor que el predeterminadobicubic
. yo fuertemente recomendar hojear a través https://ffmpeg.org/ffmpeg-scaler.html , armando un video de prueba corto que muestre lo que realmente desea grabar, y probando todos los codificadores (posiblemente incluso subiendo todos los videos de prueba). Cualquier trabajo que hagas aquí, tengo curiosidad por los resultados que obtienes.encontré
accurate_rnd+full_chroma_int+full_chroma_inp+print_info
sobre https://superuser.com/questions/782133/ffmpeg-upscaling-video y los arrojó. No tengo idea de lo que hacen / si ayudan. :REbitexact
suena bien. No tengo idea de lo que esto también hace.print_info
le muestra qué escalador está usando justo debajo de "Presione [q] para detener".-y
permite sobrescribir . De lo contrario, ffmpeg lo molestará con una "sobrescritura (y / n)" cada vez.fuente