Hice un conjunto de screencasts usando recordmydesktop en ubuntu 12.10. La salida 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 o dos diapositivas mientras narro.
Sospecho que el problema se caracteriza más correctamente por la eliminación 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 desaparecen.
Vi esto, pero no es exactamente mi situación (intentar pasar de ogv -> cualquier cosa) https://superuser.com/questions/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 toma un tiempo ya que tengo que verificar cada transición.
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 s, luego avanza a 3 diapositivas más de 5 s cada una. Cada vez que avanzo diapositivas toco el micrófono también (10s, 15s, 20s, 25s).
Aquí hay algunas conversiones que se realizaron (cada una muestra sus propios problemas de tiempo de video):
http://dl.dropbox.com/u/64693533/sync_test/sync_test1.mp4
http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ffmpeg-static.mp4
Aquí está en youtube: puede ver que alrededor de los 13 s avanza temprano (desde la diapositiva 1 -> diapositiva 2):
Aquí hay una prueba de que el archivo OGV funciona correctamente:
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-gray --enable-libass - -habilitar-libfreetype --habilitar-libopenjpeg --habilitar-libspeex --habilitar-libvo-aacenc --habilitar-libvo-amrwbenc --habilitar-versión3 --habilitar-libvpx libavutil 52. 17.101 / 52. 17.101 libavcodec 54. 91.103 / 54. 91.103 formato libav 54. 63.100 / 54. 63.100 dispositivo libav 54. 3.103 / 54. 3.103 filtro libav 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 transmisión. Actualice su versión de FFmpeg a la más reciente de Git. Si el problema persiste, significa que su archivo tiene una función que no se ha implementado. [ogg @ 0x34d4640] Falló el análisis del 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, tasa de bits: 224 kb/s Secuencia #0:0: Datos: ninguno Transmisión #0:1: Video: theora, yuv420p, 1600x880 [SAR 1:1 DAR 20:11], 15 fps, 15 tbr, 15 tbn, 15 tbc Metadatos: GRABAR EN MI ESCRITORIO: 0.3.8.1 Transmisión #0:2: Audio: vorbis, 22050 Hz, mono, fltp, 89 kb/s [libx264 @ 0x369c5e0] usando SAR=1/1 [libx264 @ 0x369c5e0] usando capacidades de CPU: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX [libx264 @ 0x369c5e0] perfil Alto, nivel 4.0 [libx264 @ 0x369c5e0] 264 - core 129 r2230 1cffe9f - Códec H.264/MPEG-4 AVC - Copyleft 2003-2012 - http://www.videolan.org/x264.html - opciones: 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 deadzone=21,11 fast_pskip= 1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 diezmar=1 entrelazado=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 pesop=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 Secuencia #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1600x880 [SAR 1:1 DAR 20:11], q=-1--1, 15360 tbn , 15 por confirmar Metadatos: GRABAR EN MI ESCRITORIO: 0.3.8.1 Transmisión #0:1: Audio: aac ([64][0][0][0] / 0x0040), 22050 Hz, mono, s16, 128 kb/s Mapeo de flujo: Flujo #0:1 -> #0:0 (teora -> libx264) Corriente #0:2 -> #0:1 (vorbis -> libvo_aacenc) Presione [q] para detener, [?] para obtener ayuda [ogg @ 0x34d4640] Archivo roto, fotograma no clave no marcado correctamente. Último mensaje repetido 2 veces Archivo roto, sin fotograma clave no marcado correctamente. = 00: 00: 08.37 tasa de bits = 28.7 kbits / s dup = 66 drop = 0 Archivo roto, fotograma clave no marcado correctamente.time=00:00:51.01 bitrate=125.3kbits/s dup=675 drop=0 Archivo roto, fotograma clave no marcado correctamente.time=00:00:55.05 bitrate=140.2kbits/s dup=782 drop=0 Archivo roto, fotograma clave no marcado correctamente.time=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.time=00:01:08.00 bitrate=143.0kbits/s dup=900 drop=0 Archivo roto, fotograma clave no marcado correctamente.time=00:01:11.86 bitrate=141.6kbits/s dup=910 drop=0
...repetido muchas veces...
Archivo roto, fotograma clave no marcado correctamente.time=00:12:47.62 bitrate=153.0kbits/s dup=9087 drop=0 frame=11521 fps= 87 q=-1.0 Lsize= 14849kB time=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] marco I: 49 Promedio QP: 16.05 tamaño: 29658 [libx264 @ 0x369c5e0] marco P: 2912 QP promedio: 9.88 tamaño: 114 [libx264 @ 0x369c5e0] marco B: 8560 Promedio QP: 12.76 tamaño: 78 [libx264 @ 0x369c5e0] fotogramas B consecutivos: 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 % omitir: 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 cc, h, v, p: 100 % 0 % 0 % 0 % [libx264 @ 0x369c5e0] Marcos P ponderados: Y: 0,0 % UV: 0,0 % [libx264 @ 0x369c5e0] ref P L0: 82,5 % 1,4 % 11,9 % 4,3 % [libx264 @ 0x369c5e0] referencia B L0: 47,2 % 52,4 % 0,4 % [libx264 @ 0x369c5e0] referencia B L1: 99,2 % 0,8 % [libx264 @ 0x369c5e0] kb/s: 25,60
El video aún 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 un conjunto de opciones.
Descubrí que puedo renderizar el video en kdenlive y parece estar funcionando allí. Todavía me gustaría saber qué está pasando. kdenlive hace un trabajo mucho mejor, pero aún así avanza temprano a veces.
¿Por qué convertir a OGV cuando su carga final será en youtube? Puede que me equivoque, pero puede convertir a códec de video x264 con AAC Audio incluso en Linux y cargarlo en youtube considerando que es lo que prefieren cargar de todos modos. ¿Ha intentado hacer un h264 y subirlo a YouTube en lugar del archivo OGV y ver si ese era el problema? Porque apostaría a que si eso lo resuelve, entonces sabrá que fue un problema con el OGV que se subió a 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 subidos a YouTube en el pasado. No puedo imaginar que esté 100% arreglado 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
EDICIÓN 2: Parecía haber leído mal un poco la pregunta... siendo 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 supongo 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 fotogramas y frecuencias de muestreo de audio no estándar, He tendido a ver la deriva... hacer que estos se sincronicen puede ser bastante difícil y no poder editarlos después de la grabación inicial con un editor de video barato...
Si bien el software ha mejorado con respecto al audio a la deriva, sigue siendo un problema común cuando se usan velocidades de fotogramas y frecuencias de muestreo poco comunes, ya que los puntos de sincronización de fotogramas clave no son estándar y podrían estar redondeando fotogramas clave, etc.
Verá donde dice "Archivo roto, fotograma clave no marcado correctamente". a eso se refiere...
mi consejo para usted sería que lo acerque lo más posible, lo lleve a un editor de video y deslice y corte el audio para que coincida con la forma en que lo desea. Desafortunadamente, a veces así es como se arregla...
Los transcodificadores basados en software no siempre funcionan como deberían... por eso una configuración protools y/o una configuración ávida vendría con hardware para garantizar aún más las capacidades de sincronización y velocidades de cuadro constantes, etc...
Otra cosa que podría intentar es convertir el metraje a una velocidad de fotogramas estándar e intentar volver a mezclar el audio... ya que estoy bastante seguro de que el vídeo se está desviando... probablemente disminuyendo ligeramente la velocidad y luego acelerando hacia el final o viceversa.
EDITAR: Pude sincronizar el video con el original usando este comando ffmpeg... es posible que necesite la cláusula de tarifa, que es lo que sospechaba
ffmpeg -i sync_test1.ogv -strict experimental -pix_fmt yuv420p -r 15 -vcodec h264 -acodec aac sync_test1.mp4
-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 ellos, -r 15
son exactamente iguales con ffmpeg de git head (versión N-50285-gad89952). Si funciona para usted usando una versión anterior de ffmpeg, esto podría ser una regresión y debe 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 ffmpeg estática que está disponible en http://johnvansickle.com/ffmpeg/
Parece que este error todavía está en recordmydesktop
, o al menos obtuve exactamente los mismos síntomas aquí con la versión de Debian testing ( 0.3.8.1+svn602-1.1
).
Logré transcodificar este video casi correctamente, de la siguiente manera:
El resultado aún tiene la sincronización correcta (¡sí!), pero aún tiene un problema: el video resultante anuncia que dura más de 4 horas, mientras que mi video solo dura 25 minutos. Por lo tanto, Peertube lo enumera como un video de 4 horas, aunque una vez que comienza a reproducirlo, se muestra la duración correcta de 25 minutos, por lo que el problema no es demasiado grave.
El punto 3 es importante, pero el punto 2 también lo es: tal vez otros perfiles también funcionen, pero al menos el perfil H264 me dio un video inutilizable (ya sea con mala sincronización ffmpeg
o peor).
Intente simplemente cambiar el contenedor a avi en lugar de transcodificar, lo que parece funcionar mejor para youtube:
ffmpeg -i JSP.ogv -vcodec copy -acodec copy JSP.avi
llogan
amir t
llogan
ffmpeg
binario incluido.llogan
amir t
sopa malvada
amir t
llogan
sync_test1.ogv
e intente mostrar el problema usando solo codificadores nativos (nolib*
comolibx264
) si es posible.amir t