Hice un conjunto de screencasts usando recordmydesktop en ubuntu 12.10. El resultado es un archivo ogv. Cuando veo el archivo ogv usando el reproductor de películas predeterminado (tótem), se ve bien: el audio y el video están sincronizados. Cuando se transcodifica (por mí o por YouTube), el audio y el video no están sincronizados. Parece que me salto una diapositiva o dos mientras narro.
Actualizar
Sospecho que el problema se caracteriza más adecuadamente por la caída de fotogramas duplicados durante la transcodificación. La conversión de video donde se mueve el mouse parece funcionar normalmente bien. Pero cuando solo estoy hablando durante una diapositiva, esos cuadros duplicados se descartan.
Vi esto pero no es mi situación (tratando de pasar de ogv -> cualquier cosa) /superuser/436187/ffmpeg-convert-video-w-dropped-frames-out-of-sync
¡Los archivos AVI parecen traducirse correctamente! Supongo que esto será una gran pista para alguien. Todavía me gustaría rastrear el problema subyacente. Estoy probando la conversión de mis videos anteriores a AVI, pero esto lleva un tiempo ya que tengo que verificar cada transición.
Ejemplos
Este es el archivo OGV original de gtk-recordmydesktop: http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ogv
El video comienza con una diapositiva de 10 segundos, luego avanza a 3 diapositivas más de 5 segundos cada una. Cada vez que avanzo las diapositivas, también toco el micrófono (10s, 15s, 20s, 25s).
Aquí hay algunas conversiones que se hicieron (cada una muestra sus propios problemas de sincronización de video):
http://dl.dropbox.com/u/64693533/sync_test/sync_test1.mp4
- Este muestra la primera diapositiva en el primer cuadro, pero avanza rápidamente.
- esto se hizo usando el ffmpeg de stock
http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ffmpeg-static.mp4
- este está bastante cerca, aunque por alguna razón a los 13 años decide avanzar
- Esto se hizo utilizando la compilación estática de ffmpeg de hace unos días.
Aquí está en youtube: puede ver que alrededor de los 13 segundos avanza temprano (de la diapositiva 1 -> diapositiva 2):
Aquí está la prueba de que el archivo OGV funciona correctamente:
ffmpeg traducción
Al usar ffmpeg o avconv, parece que obtengo resultados similares a los de YouTube (las transiciones parecen ocurrir temprano pero no necesariamente al mismo tiempo).
Aquí está el comando que uso (con una compilación estática reciente de ffmpeg) y la salida:
$ ~ / ffmpeg / ffmpeg -i JSP.ogv JSP.mp4 ffmpeg versión N-50025-gb8bb661 Copyright (c) 2000-2013 los desarrolladores de FFmpeg construido el 17 de febrero de 2013 05:23:03 con gcc 4.6 (Debian 4.6.3-1) configuración: --prefix = / root / ffmpeg-static / 64bit --extra-cflags = '- I / root / ffmpeg-static / 64bit / include -static' --extra-ldflags = '- L / root / ffmpeg- static / 64bit / lib -static '--extra-libs =' - lxml2 -lexpat -lfreetype '--enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable -zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-grey --enable-libass - -enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx libavutil 52. 17.101 / 52. 17.101 libavcodec 54. 91.103 / 54. 91.103 libavformat 54. 63.100 / 54. 63.100 libavdevice 54. 3.103 / 54. 3.103 libavfilter 3. 38.100 / 3. 38.100 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 [ogg @ 0x34d4640] No se implementan múltiples fisbone para la misma secuencia. Actualice su versión de FFmpeg a la más nueva de Git. Si el problema persiste, significa que su archivo tiene una característica que no se ha implementado. [ogg @ 0x34d4640] Error al analizar el encabezado para la secuencia 0 [ogg @ 0x34d4640] Archivo roto, fotograma clave no marcado correctamente. Entrada # 0, ogg, de 'JSP.ogv': Duración: 00: 12: 49.67, inicio: 0.000000, velocidad de bits: 224 kb / s Secuencia # 0: 0: Datos: ninguno Stream # 0: 1: Video: theora, yuv420p, 1600x880 [SAR 1: 1 DAR 20:11], 15 fps, 15 tbr, 15 tbn, 15 tbc Metadatos RECORDMYDESKTOP: 0.3.8.1 Secuencia # 0: 2: Audio: vorbis, 22050 Hz, mono, fltp, 89 kb / s [libx264 @ 0x369c5e0] usando SAR = 1/1 [libx264 @ 0x369c5e0] utilizando capacidades de CPU: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX Perfil [libx264 @ 0x369c5e0] Alto, nivel 4.0 [libx264 @ 0x369c5e0] 264 - núcleo 129 r2230 1cffe9f - Códec AVC H.264 / MPEG-4 - Copyleft 2003-2012 - http://www.videolan.org/x264.html - opciones: cabac = 1 ref = 3 deblock = 1: 0: 0 analizar = 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 deadzone = 21,11 fast_pskip = 1 chroma_qp_offset = -2 subprocesos = 6 lookahead_threads = 1 sliced_threads = 0 nr = 0 diezmar = 1 entrelazado = 0 bluray_compat = 0 constreñido_intra = 0 bframes = 3 b_pyramid = 2 b_adapt = 1 b_bias = 0 directo = 1 pesob = 1 open_gop = 0 weightp = 2 keyint = 250 keyint_min = 15 scenecut = 40 intra_refresh = 0 rc_lookahead = 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 Salida # 0, mp4, a 'JSP.mp4': Metadatos codificador: Lavf54.63.100 Stream # 0: 0: Video: h264 ([33] [0] [0] [0] / 0x0021), yuv420p, 1600x880 [SAR 1: 1 DAR 20:11], q = -1--1, 15360 mil millones , 15 tbc Metadatos RECORDMYDESKTOP: 0.3.8.1 Stream # 0: 1: Audio: aac ([64] [0] [0] [0] / 0x0040), 22050 Hz, mono, s16, 128 kb / s Mapeo de flujo: Stream # 0: 1 -> # 0: 0 (theora -> libx264) Secuencia # 0: 2 -> # 0: 1 (vorbis -> libvo_aacenc) Presione [q] para detener, [?] Para obtener ayuda [ogg @ 0x34d4640] Archivo roto, sin fotograma clave no marcado correctamente. Último mensaje repetido 2 veces Archivo roto, sin fotograma clave no marcado correctamente. = 00: 00: 08.37 bitrate = 28.7kbits / s dup = 66 drop = 0 Archivo roto, el fotograma clave no está marcado correctamente.hora = 00: 00: 51.01 tasa de bits = 125.3kbits / s dup = 675 caída = 0 Archivo roto, el fotograma clave no está marcado correctamente.hora = 00: 00: 55.05 velocidad de bits = 140.2kbits / s dup = 782 caída = 0 Archivo roto, fotograma clave no marcado correctamente.hora = 00: 00: 59.60 bitrate = 140.5kbits / s dup = 836 drop = 0 [ogg @ 0x34d4640] Archivo roto, fotograma clave no marcado correctamente. Archivo roto, fotograma clave no marcado correctamente. Tiempo = 00: 01: 08.00 velocidad de bits = 143.0kbits / s dup = 900 drop = 0 Archivo roto, el fotograma clave no está marcado correctamente. Tiempo = 00: 01: 11.86 tasa de bits = 141.6kbits / s dup = 910 caída = 0
... repetido muchas veces ...
Archivo roto, fotograma clave no marcado correctamente.hora = 00: 12: 47.62 bitrate = 153.0kbits / s dup = 9087 drop = 0 marco = 11521 fps = 87 q = -1.0 Tamaño de L = 14849kB tiempo = 00: 12: 49.48 bitrate = 158.1kbits / s dup = 9087 drop = 0 video: 2401kB audio: 12024kB subtítulo: 0 encabezados globales: 0kB sobrecarga de muxing 2.938094% [libx264 @ 0x369c5e0] fotograma I: 49 Promedio QP: 16.05 tamaño: 29658 [libx264 @ 0x369c5e0] cuadro P: 2912 Promedio QP: 9.88 tamaño: 114 [libx264 @ 0x369c5e0] fotograma B: 8560 Promedio QP: 12.76 tamaño: 78 [libx264 @ 0x369c5e0] tramas B consecutivas: 0.9% 0.1% 0.2% 98.9% [libx264 @ 0x369c5e0] mb I I16..4: 90.8% 0.4% 8.8% [libx264 @ 0x369c5e0] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 0.0% 0.0% 0.0% 0.0% 0.0% omitir: 99.9% [libx264 @ 0x369c5e0] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.3% 0.0% 0.0% directo: 0.0% omisión: 99.7% L0: 65.3% L1: 34.6% BI: 0.1% [libx264 @ 0x369c5e0] transformación 8x8 intra: 0.5% inter: 15.8% [libx264 @ 0x369c5e0] codificado y, uvDC, uvAC intra: 6.4% 0.1% 0.1% inter: 0.0% 0.0% 0.0% [libx264 @ 0x369c5e0] i16 v, h, dc, p: 94% 4% 2% 0% [libx264 @ 0x369c5e0] i8 v, h, dc, ddl, ddr, vr, hd, vl, hu: 19% 22% 44% 1% 2% 2% 3% 1% 6% [libx264 @ 0x369c5e0] i4 v, h, dc, ddl, ddr, vr, hd, vl, hu: 35% 17% 19% 4% 5% 5% 5% 5% 5% [libx264 @ 0x369c5e0] i8c dc, h, v, p: 100% 0% 0% 0% [libx264 @ 0x369c5e0] P-Frames ponderados: Y: 0.0% UV: 0.0% [libx264 @ 0x369c5e0] ref P L0: 82.5% 1.4% 11.9% 4.3% [libx264 @ 0x369c5e0] ref B L0: 47.2% 52.4% 0.4% [libx264 @ 0x369c5e0] ref B L1: 99,2% 0,8% [libx264 @ 0x369c5e0] kb / s: 25.60
El video todavía avanza temprano pero en diferentes momentos. Parece que gtk-recordmydesktop está generando un "archivo roto". Lo que es molesto es que el OGV funciona, por lo que parece que debería poder hacer que esto funcione con algún conjunto de opciones.
He descubierto que puedo reproducir el video en kdenlive y parece que funciona allí. Todavía me gustaría saber qué está pasando. kdenlive hace un trabajo mucho mejor, pero a veces todavía avanza temprano.
fuente
ffmpeg
binario incluido .Respuestas:
¿Por qué convertirme a OGV cuando tu carga final va a ser a YouTube? Puedo estar equivocado, pero puedes convertirlo a un códec de video x264 con AAC Audio incluso en Linux y subirlo a YouTube teniendo en cuenta que eso es lo que prefieren cargar de todos modos. ¿Has intentado hacer un h264 y subirlo a youtube en lugar del archivo OGV y ver si ese era el problema? Porque apostaría que si eso lo resuelve, entonces sabes que era un problema con el OGV que se estaba cargando en YouTube, y si no lo resuelve, podría ser un problema de velocidad de fotogramas con la interpretación de YouTube o algo similar.
Ha habido muchos problemas con los archivos OGV cargados en YouTube en el pasado. No puedo imaginar que esté 100% fijo incluso en este punto.
http://support.google.com/youtube/bin/answer.py?hl=es&answer=1722171
EDITAR: también noté que su metraje original está a 15 fps ... esta podría ser la fuente del problema
EDITAR 2: Parece que he leído un poco mal la pregunta ... ya que estás comenzando con un archivo de video que es OGV, y vi que vas a MP4 ... esto cambia un poco las cosas ... .pero voy a adivinar que tiene algo que ver con el audio de 15 fps y 22050 Hz ... Sé que la frecuencia de muestreo no tiene nada que ver con la sincronización del audio, pero por experiencia cuando se usan frecuencias de cuadros y frecuencias de muestreo de audio no estándar, He tendido a ver a la deriva ... hacer que estos se sincronicen puede ser bastante difícil sin poder editarlos después de la grabación inicial con un editor de video barato ...
Si bien el software ha mejorado con respecto a la deriva de audio, sigue siendo un problema común cuando se usan tasas de cuadros y frecuencias de muestreo poco comunes, ya que los puntos de sincronización de fotogramas clave no son estándar y podrían redondear fotogramas clave, etc.
Verá dónde dice "Archivo roto, fotograma clave no marcado correctamente". a eso se refiere ...
mi consejo para ti sería acercarlo lo más posible, llevarlo a un editor de video y deslizar y cortar el audio para que coincida como lo deseas. Desafortunadamente a veces así es como se soluciona
Los transcodificadores basados en software no siempre funcionan como deberían ... teniendo en cuenta por qué una configuración de protocolos y / o una configuración ávida vendría con hardware para garantizar aún más las capacidades de sincronización y velocidades de cuadros constantes, etc.
Otra cosa que podría intentar es convertir el metraje a una velocidad de fotogramas estándar e intentar volver a casar el audio ... ya que estoy bastante seguro de que es la deriva del video ... probablemente disminuyendo ligeramente y luego acelerando hacia al final o viceversa.
EDITAR: pude hacer que el video se sincronice con el original usando este comando ffmpeg ... puede que necesite la cláusula rate, que es lo que sospechaba
ffmpeg -i sync_test1.ogv -strict experimental -pix_fmt yuv420p -r 15 -vcodec h264 -acodec aac sync_test1.mp4
fuente
-r 15
es lo mismo que omitirlo porque ffmpeg heredará la velocidad de fotogramas de entrada de forma predeterminada, y los archivos de salida resultantes, con o sin,-r 15
son exactamente iguales con ffmpeg de git head (versión N-50285-gad89952). Si está trabajando para usted usando una versión anterior de ffmpeg, esto podría ser una regresión y debería informarse al rastreador de errores de FFmpeg .Luché con un problema similar en Ubuntu 12.04.3 LTS. Solucioné el problema usando la compilación estática ffmpeg que está disponible en http://johnvansickle.com/ffmpeg/
fuente
Intente simplemente cambiar el contenedor a avi en lugar de transcodificar, lo que parece funcionar mejor para YouTube:
fuente