我使用 ffmpeg 转码一个只有一个 GOP 的 FLV 文件,也就是说,只有第一帧是 I 帧。问题是我的输出文件有多个 I 帧,但我需要它只在开头有一个。
目的是改变比特率。
我使用这个命令来转换:
ffmpeg -y -copyts -i 1.flv -acodec copy -vcodec libx264 -r 30 -b:v 500k -g 500 -keyint_min 500 1_500k.flv
FFmpeg 的输出:
ffmpeg version 1.2 Copyright (c) 2000-2013 the FFmpeg developers
built on May 3 2013 10:11:18 with gcc 4.1.2 (GCC) 20080704 (Red Hat 4.1.2-48)
configuration: --prefix=/usr/local/lib --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-x11grab --enable-swscale --enable-version3 --disable-ffplay --disable-ffserver --enable-filter=movie --enable-frei0r --enable-libfaac --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --extra-ldflags=-ldl --enable-shared --enable-libopenjpeg --enable-encoder=png --enable-encoder=bmp --enable-encoder=wmv1 --enable-encoder=wmv2
libavutil 52. 18.100 / 52. 18.100
libavcodec 54. 92.100 / 54. 92.100
libavformat 54. 63.104 / 54. 63.104
libavdevice 54. 3.103 / 54. 3.103
libavfilter 3. 42.103 / 3. 42.103
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Input #0, flv, from '1.flv':
Duration: 00:00:03.86, start: 1.000000, bitrate: 195 kb/s
Stream #0:0: Video: vp6f, yuv420p, 320x240, 30 tbr, 1k tbn, 1k tbc
Stream #0:1: Audio: mp3, 22050 Hz, mono, s16p, 48 kb/s
[libx264 @ 0xbffcc0] using cpu capabilities: MMX2 SSE2Fast FastShuffle SSEMisalign LZCNT
[libx264 @ 0xbffcc0] profile High, level 2.0
[libx264 @ 0xbffcc0] 264 - core 118 r0+7M 0176d43 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - 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=1 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=500 keyint_min=251 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=500 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, flv, to '1_500k.flv':
Metadata:
encoder : Lavf54.63.104
Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p, 320x240, q=-1--1, 500 kb/s, 1k tbn, 30 tbc
Stream #0:1: Audio: mp3 ([2][0][0][0] / 0x0002), 22050 Hz, mono, 48 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (vp6f -> libx264)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 75 fps=0.0 q=18.0 Lsize= 148kB time=00:00:03.88 bitrate= 311.7kbits/s
video:127kB audio:17kB subtitle:0 global headers:0kB muxing overhead 2.455463%
[libx264 @ 0xbffcc0] frame I:1 Avg QP:19.31 size: 14022
[libx264 @ 0xbffcc0] frame P:53 Avg QP:13.74 size: 1965
[libx264 @ 0xbffcc0] frame B:21 Avg QP:21.83 size: 551
[libx264 @ 0xbffcc0] consecutive B-frames: 62.7% 0.0% 0.0% 37.3%
[libx264 @ 0xbffcc0] mb I I16..4: 2.7% 64.0% 33.3%
[libx264 @ 0xbffcc0] mb P I16..4: 0.1% 0.2% 0.0% P16..4: 40.3% 5.5% 10.6% 0.0% 0.0% skip:43.4%
[libx264 @ 0xbffcc0] mb B I16..4: 0.1% 0.1% 0.0% B16..8: 30.6% 3.5% 2.5% direct: 2.8% skip:60.4% L0:43.8% L1:49.3% BI: 6.9%
[libx264 @ 0xbffcc0] final ratefactor: 14.33
[libx264 @ 0xbffcc0] 8x8 transform intra:64.8% inter:86.4%
[libx264 @ 0xbffcc0] coded y,uvDC,uvAC intra: 87.5% 96.0% 75.6% inter: 22.7% 21.9% 9.5%
[libx264 @ 0xbffcc0] i16 v,h,dc,p: 29% 19% 48% 5%
[libx264 @ 0xbffcc0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 9% 22% 34% 6% 4% 4% 8% 5% 9%
[libx264 @ 0xbffcc0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 20% 13% 7% 6% 5% 9% 6% 10%
[libx264 @ 0xbffcc0] i8c dc,h,v,p: 59% 19% 16% 6%
[libx264 @ 0xbffcc0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0xbffcc0] ref P L0: 79.2% 7.6% 8.3% 4.9%
[libx264 @ 0xbffcc0] ref B L0: 91.0% 6.4% 2.6%
[libx264 @ 0xbffcc0] ref B L1: 93.3% 6.7%
[libx264 @ 0xbffcc0] kb/s:362.09
答案1
您的输出文件已只有一个 I 帧。
您可以在 x264 日志中看到这一点:
[libx264 @ 0xbffcc0] frame I:1 Avg QP:19.31 size: 14022
[libx264 @ 0xbffcc0] frame P:53 Avg QP:13.74 size: 1965
[libx264 @ 0xbffcc0] frame B:21 Avg QP:21.83 size: 551
帧类型旁边的数字是计数。