2013-08-08 17 views
28

Quando provo a convertire un file WebM in MP4 l'uscita è molto molto mosso e sembra come se molti fotogrammi sono stati eliminati da ffmpegwebm alla conversione MP4 utilizzando ffmpeg

ho usato i seguenti comandi per convertire

ffmpeg -i movie.webm movie.mp4 
ffmpeg -i movie.webm -vcodec libx264 movie.mp4 
ffmpeg -i movie.webm -vcodec libx264 -qscale 0 movie.mp4 

Tutti hanno lo stesso problema. Quando uso ffprobe sembra mostrare i frame più o meno correttamente.

UPDATE:

built on Jun 14 2013 14:31:50 with gcc 4.7 (Ubuntu/Linaro 4.7.2-2ubuntu1) 
    configuration: --prefix=/home/user2/ffmpeg_build --extra-cflags=-I/home/user2/ffmpeg_build/include --extra-ldflags=-L/home/pavan4/ffmpeg_build/lib --bindir=/home/pavan4/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab 
    libavutil  52. 35.101/52. 35.101 
    libavcodec  55. 16.100/55. 16.100 
    libavformat 55. 8.102/55. 8.102 
    libavdevice 55. 2.100/55. 2.100 
    libavfilter  3. 77.101/3. 77.101 
    libswscale  2. 3.100/2. 3.100 
    libswresample 0. 17.102/0. 17.102 
    libpostproc 52. 3.100/52. 3.100 
Hyper fast Audio and Video encoder 
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... 

Use -h to get full help or, even better, run 'man ffmpeg' 

Input #0, matroska,webm, from '1.webm': 
    Duration: 00:00:10.64, start: 0.000000, bitrate: 5024 kb/s 
    Stream #0:0(eng): Video: vp8, yuv420p, 1280x720, SAR 1:1 DAR 16:9, 1k fps, 1k tbr, 1k tbn, 1k tbc (default) 
[libx264 @ 0x1d966a0] using SAR=1/1 
[libx264 @ 0x1d966a0] MB rate (3600000) > level limit (2073600) 
[libx264 @ 0x1d966a0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 
[libx264 @ 0x1d966a0] profile High, level 5.2 
[libx264 @ 0x1d966a0] 264 - core 133 r2 a3ac64b - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: 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=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=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 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.40 aq=1:1.00 
Output #0, mp4, to '1_conv4.mp4': 
    Metadata: 
    encoder   : Lavf55.8.102 
    Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0]/0x0021), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 16k tbn, 1k tbc (default) 
Stream mapping: 
Stream #0:0 -> #0:0 (vp8 -> libx264) 
Press [q] to stop, [?] for help 
frame= 168 fps=0.0 q=33.0 size=  62kB time=00:00:00.11 bitrate=4606.0kbits/frame= 293 fps=230 q=33.0 size=  138kB time=00:00:00.23 bitrate=4809.7kbits/ 

video:5620kB audio:0kB subtitle:0 global headers:0kB muxing overhead 2.212461% 
[libx264 @ 0x1d966a0] frame I:46 Avg QP:18.50 size: 39849 
[libx264 @ 0x1d966a0] frame P:2940 Avg QP:18.27 size: 1222 
[libx264 @ 0x1d966a0] frame B:7651 Avg QP:17.68 size: 43 
[libx264 @ 0x1d966a0] consecutive B-frames: 4.0% 0.2% 0.3% 95.5% 
[libx264 @ 0x1d966a0] mb I I16..4: 19.9% 63.2% 16.9% 
[libx264 @ 0x1d966a0] mb P I16..4: 0.2% 0.5% 0.1% P16..4: 3.9% 1.1% 0.6% 0.0% 0.0% skip:93.6% 
[libx264 @ 0x1d966a0] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.2% 0.0% 0.0% direct: 0.0% skip:99.8% L0:25.1% L1:74.9% BI: 0.0% 
[libx264 @ 0x1d966a0] 8x8 transform intra:63.6% inter:75.9% 
[libx264 @ 0x1d966a0] coded y,uvDC,uvAC intra: 61.5% 53.4% 24.4% inter: 0.5% 0.5% 0.0% 
[libx264 @ 0x1d966a0] i16 v,h,dc,p: 52% 19% 19% 11% 
[libx264 @ 0x1d966a0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 32% 17% 13% 4% 6% 9% 5% 8% 6% 
[libx264 @ 0x1d966a0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 18% 14% 5% 8% 10% 6% 6% 3% 
[libx264 @ 0x1d966a0] i8c dc,h,v,p: 55% 17% 24% 4% 
[libx264 @ 0x1d966a0] Weighted P-Frames: Y:0.0% UV:0.0% 
[libx264 @ 0x1d966a0] ref P L0: 82.5% 13.2% 4.0% 0.3% 
[libx264 @ 0x1d966a0] ref B L0: 60.2% 39.2% 0.6% 
[libx264 @ 0x1d966a0] ref B L1: 98.5% 1.5% 
[libx264 @ 0x1d966a0] kb/s:4327.77 
+0

un commento generale su "come chiedere", si prega di aggiungere almeno uno dei tuoi ffmpeg uscita di linea di comando per vedere la versione di ffmpeg e tutte le restanti informazioni sul flusso di file di input alla tua produzione mappatura del flusso di file. – alexbuisson

+0

@alexbuisson Ho aggiornato il post :) Ho pensato che stavo facendo qualcosa di banale, quindi non ho aggiunto l'output. –

+0

non dovrebbe essere così banale, ho appena eseguito lo stesso tipo di conversione con ffmpeg 'costruito il 4 giugno 2013 01:41:53 con gcc 4.7.3 (GCC)' senza problemi, mp4 sull'output ha una qualità corretta . Non so come aiutare :( – alexbuisson

risposta

42

Come vostro rapporto di file di input uno strano valore di frame rate 1k fps proveniente dal valore di TBS e TBR (guardare here for their definition)

l'encoder generano un risultato diverso, 16k tbn, 1k tbc (default)

Chiamando così:

ffmpeg -fflags +genpts -i 1.webm -r 24 1.mp4 

si configura ffmpeg per generare nuovi punti (a/ka Presentazione timestamp) per ogni fotogramma e si imposta l'obiettivo di frame-rate a 24.

Così l'output informazioni file MP4 (ffmpeg -i ....) cambiare da

Stream #0:0(eng): Video: h264 (High) (avc1/0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 4327 kb/s, 1000.09 fps, 1k tbr, 16k tbn, 2k tbc 

a

Stream #0:0(eng): Video: h264 (High) (avc1/0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1670 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc 
+0

Ho appena notato che per mp4 ffmpeg cambia automaticamente il bitrate a 2M mentre la sorgente è a 5M. Posso impostare automaticamente il bitrate da scegliere dalla fonte? –

+0

nessuna idea, è una domanda ricorrente su SOF e SuperUser, ma chiedere di nuovo a qualcuno potrebbe avere una soluzione, dalla mia parte metterei ogni riga in uno script, a prima lancia un ffmp es. -i sull'ingresso, catturando e analizzando l'output della riga di comando per trovare il bitrate, e dopo riutilizzare quel valore imposta il valore '-b: v' per transcodificare ... – alexbuisson

+0

questo file mp4 non è riproducibile sul browser, perché? –

Problemi correlati