FFmpeg fusionar imagen con video pierde calidad

0 voto negativo favorito Estoy fusionando una imagen con un video, mi comando se ve así:

ffmpeg -i background.mpg -i Menu.png -filter_complex "[0:v][1:v] overlay=25:25:enable='between(t,0,30)'" -pix_fmt yuv420p -c:a copy merge1.mpg

Eso funciona, pero algo extraño sucede.

Si ejecuto ese video fusionado, pierde calidad continuamente en cada segundo, en los primeros segundos la calidad está bien, pero luego pierde calidad (la resolución empeora).

¿Alguna idea de cómo está sucediendo esto y tal vez soluciones?

Editar:

Especifiqué una tasa de bits como Mulvya me sugiere que haga:

El comando se ve así ahora:

ffmpeg -i background.mpg -i Menu.png -filter_complex "[0:v][1:v] overlay=25:25:enable='between(t,0,30)'" -pix_fmt yuv420p -b:v 2000k -c:a copy merge1.mpg

Salida de consola:

ffmpeg version 2.8.4 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 5.2.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfr
eetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enab
le-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink
--enable-zlib
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mpeg, from 'C:\xampp\htdocs\myApp\storage\generator\projects\dvdrom\Ged\Menus\background.mpg':
  Duration: 00:00:30.00, start: 0.540000, bitrate: 1792 kb/s
    Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv), 720x576 [SAR 64:45 DAR 16:9], max. 1800 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
Input #1, png_pipe, from 'C:\xampp\htdocs\myApp\storage\generator\projects\dvdrom\Ged\Menus\imageSel.png':
  Duration: N/A, bitrate: N/A
    Stream #1:0: Video: png, rgba(pc), 720x480 [SAR 2835:2835 DAR 3:2], 25 tbr, 25 tbn, 25 tbc
File 'C:\xampp\htdocs\myApp\storage\generator\projects\dvdrom\Ged\Menus\image1.mpg' already exists. Overwrite ? [y/N] y
[mpeg @ 04dca7e0] VBV buffer size not set, using default size of 130KB
If you want the mpeg file to be compliant to some specification
Like DVD, VCD or others, make sure you set the correct buffer size
Output #0, mpeg, to 'C:\xampp\htdocs\myApp\storage\generator\projects\dvdrom\Ged\Menus\image1.mpg':
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0: Video: mpeg1video, yuv420p, 720x576 [SAR 64:45 DAR 16:9], q=2-31, 2000 kb/s, 25 fps, 90k tbn, 25 tbc (default)
    Metadata:
      encoder         : Lavc56.60.100 mpeg1video
Stream mapping:
  Stream #0:0 (mpeg2video) -> overlay:main
  Stream #1:0 (png) -> overlay:overlay
  overlay -> Stream #0:0 (mpeg1video)
Press [q] to stop, [?] for help
frame=  750 fps=443 q=2.0 Lsize=    5650kB time=00:00:29.96 bitrate=1544.9kbits/s
video:5624kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.468742%
Está predeterminado a una tasa de bits de 200k. Especifique una tarifa, por ejemplo-b:v 2000k
@Mulvya Lo probé no resolvió el problema
Mostrar la salida de la consola completa
Esa no es la salida completa de la consola. De todos modos, agrega-c:v mpeg2video -bufsize 2000k
lo siento, de alguna manera pensé en publicar solo el mensaje de error. ¿Quito -c:a ?
@Mulvya, ¿podría publicar el comando completo de alguna manera? Parece que no funciona cuando lo agrego.
Muestra la salida de la consola completa.
@Mulvya ok lo agregué a mi pregunta
Intentarffmpeg -i background.mpg -i Menu.png -filter_complex "[0:v][1:v] overlay=25:25:enable='between(t,0,30)'" -pix_fmt yuv420p -target pal-dvd -f dvd merge1.mpg
@Mulvya, lo siento por la respuesta tardía, funcionó, gracias, pero te gusta dar una respuesta para que pueda verificarla :)

Respuestas (1)

Parece que está buscando una salida con especificaciones de DVD. De manera predeterminada, FFmpeg codifica video MPEG-1 en un flujo de programa MPEG-1, cuando la extensión de salida es .mpg. Puede forzar MPEG-2 DVD especificando -f dvd. Y para un estándar como PAL, configure-target pal-dvd

Intentar

ffmpeg -i background.mpg -i Menu.png -filter_complex "[0:v][1:v] overlay=25:25:enable='between(t,0,30)'" -pix_fmt yuv420p -target pal-dvd -f dvd merge1.mpg
¿Qué pasa con la salida de calidad sin considerar el tipo de salida? Por ejemplo, quería fusionar videos mp4 y mi objetivo también es mp4, entonces, ¿qué debo escribir para una mejor calidad? @Mulvya
Para salida MP4, elimine la -targetopción. ffmpeg establecerá automáticamente la salida en CRF 23.
Gracias por la respuesta, pero ¿pueden informarme sobre la alta calidad? Déjeme publicar mi comando y ¡compruébelo!