2012-01-13 18 views
10

flv videosunu a264 kullanarak mp4'a dönüştürmeye çalışıyorum, ancak sonuç videosunun ses/görüntü eşzamanlaması yoktur. Ses iyi görünüyor ama video yavaş görünüyor ve bu nedenle ses ile senkronize değil. İşteffmpeg, senkronize olmayan bir ses/video dosyası oluşturuyor

komut çalıştırıyorum edilir:

/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 

Ve çıktı:

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 

Ben video ve ses hattı mükemmel emin olmak için eksik bir şey var mı?

+0

deneyin sen -i complaint.flv complaint.mp4 ffmpeg 'ise, senkronizasyon dışı hala geliyor? VLC'de çaldığınızda orijinal dosya senkronizasyon dışı mı? – sashoalm

+0

Bu benim için çalışmaz, temel olarak flv oluşturmada kullanılan kodeklerden dolayı (h264'ten farklı) – marcelorocks

+0

Cevabınızdan 'ffmpeg -i complaint.flv complaint.mp4' çıktısını veremiyorum. senkronize değil veya değil. Bir problemde hata ayıklama şekliniz bu, onu izole etmeye çalışıyorsunuz. Orijinal sadece senkronizasyon dışı mı? Eğer VLC böyle çalarsa, yapabileceğiniz hiçbir şey yoktur. Yoksa ffmpeg ile genel bir sorun mu yoksa h264 kodekiyle mi? – sashoalm

cevap

14

Bunu deneyenler için, ses codec'i için yuv420p kullanmak yerine flaşı h264'e kaydetmekten daha iyi oldum. Büyüleyici bir şekilde çalıştı. Bayrağa -async 1 eklenmesi de yardımcı oldu.

Güncelleme: ffmpeg belgelerinde (http://ffmpeg.org/ffmpeg.html) bu biraz göz atın:

-async: Ses senkron yöntemi. Ses akışını zaman damgalarıyla eşleştirmek için "uzatır/sıkar", parametre, saniyenin saniyede sesin değiştirildiği maksimum örnek sayısıdır. -async 1, yalnızca ses akışının başlangıcının daha sonra düzeltilmeden düzeltildiği özel bir durumdur. Bu seçenek kullanımdan kaldırılmıştır. Bunun yerine aresample ses filtresini kullanın.

Burada aresample filtresi okuyabilirsiniz: http://ffmpeg.org/trac/ffmpeg/wiki/FilteringGuide

+3

"h264'te, ses codec'i için yuva420p kullanmak yerine." ??? Anlamadım. yuv420p resim formatı, h264 gibi video codec'i değil, ses cedec'i de değil. Senkronizasyonu almak için ne yaptın? – user1914692

+0

Bu eşdeğer mi? 'Aresample = uyumsuz = 1 ' – chovy

İlgili konular