2012-01-13 11 views
10

Estoy tratando de convertir un video flv en mp4 usando a264, pero el resultado del video tiene un audio/video desincronizado. El audio parece estar bien, pero el video parece lento y, por lo tanto, no está sincronizado con el audio.ffmpeg está generando un archivo de audio/video fuera de sincronización

Este es el comando Me postulo:

/opt/local/bin/ffmpeg -i complaint.flv -f mp4 -vcodec libx264 -acodec aac -copyts -strict experimental -fpre /opt/local/share/ffmpeg/libx264-lossless_slow.ffpreset -ab 44k -threads 0 -crf 23 complaint.mp4 

Y la salida:

Desktop /opt/local/bin/ffmpeg -i complaint.flv -f mp4 -vcodec libx264 -acodec aac -copyts -strict experimental -fpre /opt/local/share/ffmpeg/libx264-lossless_slow.ffpreset -ab 44k -threads 0 -crf 23 complaint.mp4 
ffmpeg version 0.7.8, Copyright (c) 2000-2011 the FFmpeg developers 
    built on Jan 12 2012 21:12:26 with gcc 4.2.1 (Apple Inc. build 5666) (dot 3) 
    configuration: --prefix=/opt/local --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libdirac --enable-libschroedinger --enable-libopenjpeg --enable-libxvid --enable-libx264 --enable-libvpx --enable-libspeex --mandir=/opt/local/share/man --enable-shared --enable-pthreads --cc=/usr/bin/gcc-4.2 --arch=x86_64 --enable-yasm 
    libavutil 50. 43. 0/50. 43. 0 
    libavcodec 52.123. 0/52.123. 0 
    libavformat 52.111. 0/52.111. 0 
    libavdevice 52. 5. 0/52. 5. 0 
    libavfilter 1. 80. 0/1. 80. 0 
    libswscale 0. 14. 1/0. 14. 1 
    libpostproc 51. 2. 0/51. 2. 0 
[flv @ 0x7fe57a04ac00] Estimating duration from bitrate, this may be inaccurate 
Input #0, flv, from 'complaint.flv': 
    Metadata: 
    duration  : 7 
    creationdate : Thu Jan 12 23:47:24 
    description  : Recorded using VideoRecording example. 
    Duration: 00:00:06.61, start: 0.000000, bitrate: N/A 
    Stream #0.0: Video: flv, yuv420p, 288x288, 1k tbr, 1k tbn, 1k tbc 
    Stream #0.1: Audio: nellymoser, 11025 Hz, mono, s16 
File 'complaint.mp4' already exists. Overwrite ? [y/N] y 
[buffer @ 0x7fe579c32cc0] w:288 h:288 pixfmt:yuv420p tb:1/1000000 sar:0/1 sws_param: 
[libx264 @ 0x7fe57a044600] using cpu capabilities: none! 
[libx264 @ 0x7fe57a044600] profile High, level 4.2 
[libx264 @ 0x7fe57a044600] 264 - core 118 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x33 me=umh subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=2 keyint=250 keyint_min=25 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.41 aq=1:1.00 
Output #0, mp4, to 'complaint.mp4': 
    Metadata: 
    duration  : 7 
    creationdate : Thu Jan 12 23:47:24 
    description  : Recorded using VideoRecording example. 
    encoder   : Lavf52.111.0 
    Stream #0.0: Video: libx264, yuv420p, 288x288, q=0-69, 200 kb/s, 1k tbn, 1k tbc 
    Stream #0.1: Audio: aac, 11025 Hz, mono, s16, 44 kb/s 
Stream mapping: 
    Stream #0.0 -> #0.0 
    Stream #0.1 -> #0.1 
Press [q] to stop, [?] for help 
frame= 6557 fps=106 q=-1.0 Lsize=  685kB time=00:00:03.62 bitrate=1549.1kbits/s dup=6367 drop=0  
video:615kB audio:17kB global headers:0kB muxing overhead 8.361360% 
frame I:27 Avg QP:19.98 size: 8242 
[libx264 @ 0x7fe57a044600] frame P:6530 Avg QP:30.71 size: 62 
[libx264 @ 0x7fe57a044600] mb I I16..4: 11.1% 79.3% 9.6% 
[libx264 @ 0x7fe57a044600] mb P I16..4: 0.1% 0.2% 0.0% P16..4: 1.2% 0.2% 0.3% 0.0% 0.0% skip:98.0% 
[libx264 @ 0x7fe57a044600] 8x8 transform intra:77.8% inter:64.9% 
[libx264 @ 0x7fe57a044600] coded y,uvDC,uvAC intra: 75.3% 81.3% 33.3% inter: 0.5% 0.7% 0.1% 
[libx264 @ 0x7fe57a044600] i16 v,h,dc,p: 78% 9% 10% 3% 
[libx264 @ 0x7fe57a044600] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 35% 11% 32% 3% 4% 5% 2% 5% 4% 
[libx264 @ 0x7fe57a044600] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 56% 7% 9% 3% 4% 7% 3% 7% 3% 
[libx264 @ 0x7fe57a044600] i8c dc,h,v,p: 45% 15% 34% 6% 
[libx264 @ 0x7fe57a044600] Weighted P-Frames: Y:0.0% UV:0.0% 
[libx264 @ 0x7fe57a044600] ref P L0: 80.5% 9.5% 10.0% 
[libx264 @ 0x7fe57a044600] kb/s:767.20 

¿Hay algo que me falta para asegurarse de que el vídeo y entrada de audio a la perfección?

+0

Si Try 'ffmpeg -i complaint.flv complaint.mp4', hace es que todavía fuera de sincronización? ¿El archivo original está desincronizado cuando lo reproduce en VLC? – sashoalm

+0

Eso no funciona para mí, principalmente debido a los códecs que se usaron en la creación de flv (diferente de h264) – marcelorocks

+0

De su respuesta no puedo entender si 'ffmpeg -i complaint.flv complaint.mp4' produjo una salida que es fuera de sincronización o no. Esa es la forma de depurar un problema, intenta aislarlo. ¿El original simplemente no está sincronizado? Si VLC lo juega de esa manera, entonces no hay nada que puedas hacer. ¿O es un problema general con ffmpeg, o es específicamente con el códec h264? – sashoalm

Respuesta

14

Para aquellos que pueden estar intentando esto, era mejor grabar flash en h264 de inmediato, en lugar de usar yuv420p para códec de audio. Eso funcionó como un encanto. Agregar la bandera -async 1 también ayudó.

actualización: Salida este bit de la documentación ffmpeg (http://ffmpeg.org/ffmpeg.html):

-async: método de sincronización de audio. "Extiende/aprieta" la transmisión de audio para que coincida con las marcas de tiempo, el parámetro es el máximo de muestras por segundo por el que se cambia el audio. -async 1 es un caso especial donde solo se corrige el inicio de la transmisión de audio sin ninguna corrección posterior. Esta opción ha quedado en desuso. Use el filtro de audio aresample en su lugar.

Usted puede leer sobre el filtro aresample aquí: http://ffmpeg.org/trac/ffmpeg/wiki/FilteringGuide

+3

"en h264 de inmediato, en lugar de usar yuv420p para el códec de audio". ??? No entiendo. yuv420p es formato de imagen, no códec de video como h264, ni audio cedec. Entonces, ¿qué hiciste para obtener la sincronización? – user1914692

+0

¿Es este el equivalente? 'aresample = async = 1' – chovy

Cuestiones relacionadas