FFMPEG x264 MP4编码全部灰色 [英] FFMPEG x264 MP4 Encoding all grey

查看:132
本文介绍了FFMPEG x264 MP4编码全部灰色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在CentOS 6.3上使用FFMPEG v1.1。



我配置了FFMPEG:

  ./ configure --arch = x86_64 --enable-libmp3lame --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libx264 --enable-pthreads --enable -gpl --enable-runtime-cpudetect 

当我运行一个简单的命令将现场输入记录到MP4由:

  ffmpeg -f video4linux2 -s 640x480 -i / dev / video0 /home/irdb/Desktop/test.mp4 

我什么都没有,只是一个灰色的屏幕,边缘有一些工件。但是当我运行与.MPG相同的命令时,它会显示出来。我需要MP4格式。



在旁边的笔记我正在运行x264-0.120通过yum安装



我的问题是,有没有问题与我编译ffmpeg的方式?或者可能还有其他的东西?



编辑:



请求:

 #ffmpeg -f video4linux2 -s 640x480 -t 5 -i / dev / video0 -strict 2 / home / irdb /Desktop/test.mp4 
ffmpeg版本N-50546-g1f5b5b8版权所有(c)2000-2013 FFmpeg开发人员
建于2013年3月7日00:17:44与gcc 4.4.6(GCC)20120305 (Red Hat 4.4.6-4)
配置:--enable-libmp3lame --enable-librtmp --enable-libtheora --enable- libvorbis --enable-libx264 --enable-pthreads --enable-gpl --enable-runtime-cpudetect
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
[video4linux2,v4l2 @ 0x3025120]估计持续时间比特率,这可能是不准确的
输入#0,video4linux2,v4l2,从'/ dev / video0':
持续时间:N / A,开始:128.640356,比特率:147456 kb / s
流#0:0:视频:rawvideo(YUY2 / 0x32595559),yuyv422,640x480,147456 kb / s,30 fps,30 tbr,1000k tbn,1000k tbc
[libx264 @ 0x3026f80]使用cpu功能:MMX2 SSE2Fast SSEMisalign LZCNT
[libx264 @ 0x3026f80] profile高4:2:2,级别3.0,4:2:2 8位
[libx264 @ 0x3026f80] 264 - 内核130 r2274 c832fe9 - H.264 / MPEG-4 AVC编解码器 - Copyleft 2003-2013 - http://www.videolan.org/x264.html - 选项:cabac = 1 ref = 3 deblock = 1:0:0 analyze = 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 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 scenec ut = 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
输出#0,mp4, /home/irdb/Desktop/test.mp4':
元数据:
编码器:Lavf54.63.104
流#0:0:视频:h264([33] [0] [0] [0] / 0x0021),yuv422p,640x480,q = -1--1,15360 tbn,30 tbc
流映射:
流#0:0 - > #0:0(rawvideo - > libx264)
按[q]停止,[?]寻求帮助
frame = 32 fps = 0.0 q = 0.0 size = 0kB time = 00:00:00.00 bitrate = N / A dup = 21 drframe = 46 fps = 46 q = 0.0 size = 0kB time = 00:00:00.00比特率= N / A dup = 28 drframe = 62 fps = 41 q = 29.0 size = 71kB time = 00 :00:00.33比特率= 1735.2kbits /帧= 76 fps = 38 q = 29.0大小= 169kB时间= 00:00:00.80比特率= 1731.2kbits /帧= 93 fps = 37 q = 29.0大小= 311kB时间= 00:00 :01.36比特率= 1862.3kbits /帧= 107 fps = 35 q = 29.0大小= 423kB时间= 00:00:01.83比特率= 1891.0kbits /帧= 123 fps = 35 q = 29.0大小= 537kB时间= 00:00:02.36比特率= 1860.2kbits /帧= 139 fps = 34 q = 29.0大小= 664kB时间= 00:00:02.90比特率= 1876.0kbits /帧= 150 fps = 29 q = -1.0 Lsize = 1174kB时间= 00:00:04.93比特率= 1948.7kbits / s dup = 81 drop = 0
视频:1172kB音频:0kB字幕:0全局标题:0kB多路复用开销0.133409%
[libx264 @ 0x3026f80]帧I:2平均QP:23.22大小:28460
[libx264 @ 0x3026f80]帧P:136平均QP:24.45大小:8397
[libx264 @ 0x3026f80]帧B:12平均QP:26.18大小:42
[libx264 @ 0x3026f80]连续B帧:88.0%4.0%0.0 %8.0%
[libx264 @ 0x3026f80] mb I I16..4:47.1%28.8%24.1%
[libx264 @ 0x3026f80] mb P I16..4:4.3%1.9%1.2%P16 .. 4:29.0%11.4%9.2%0.0%0.0%skip:43.0%
[libx264 @ 0x3026f80] mb B I16..4:0.0%0.0%0.0%B16..8:1.5%0.0%0.0%direct :0.0%skip:98.5%L0:16.5%L1:83.5%BI:0.0%
[libx264 @ 0x3026f80] 8x8变换帧内:26.4%inter:30.7%
[libx264 @ 0x3026f80] uvDC,uvAC intra:85.2%95.6%83.5%inter:10.9%38.6%24.0%
[libx264 @ 0x3026f80] i16 v,h,dc,p:33%19%40%8%
[ 12x55%5%3%4%4%3%8%
[libx264 @ 0x3026f80] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu:15%9%63%3%2%2%2%2%2%
[libx264 @ 0x3026f80] i8c dc,h ,v,p:66%11%14%9%
[libx264 @ 0x3026f80]加权P-Fra mes:Y:0.0%UV:0.0%
[libx264 @ 0x3026f80] ref P L0:56.6%7.5%8.1%27.8%
[libx264 @ 0x3026f80]参考B L0:83.3%16.7%
[libx264 @ 0x3026f80] ref B L1:90.7%9.3%
[libx264 @ 0x3026f80] kb / s:1918.95


解决方案

您的输出视频的像素格式可能不支持您用于显示视频的播放器。如果您观察输出日志,则可以看到 yuv422p 被选为格式。这是一个4:2:2的子采样色度,采用平面格式。



选择 -pix_fmt yuv420p (4:2:0 subsampling)应该给你一个可以在任何地方查看的H.264编码视频。

  ffmpeg -f video4linux2 -s 640x480 -i / dev / video0 \ 
-c:v libx264 -pix_fmt yuv420p / home / irdb /我在桌面/ test.mp4

只是一个很好的习惯,以便在FFmpeg默认为另一个格式的编码器时不要惊讶。例如,选择MPEG输出格式,FFmpeg选择另一个默认编码器MPEG-1( mpeg1video ),再次使用4:2:0子采样。


I am currently using FFMPEG v1.1 on CentOS 6.3.

I configured FFMPEG with:

./configure --arch=x86_64  --enable-libmp3lame  --enable-librtmp  --enable-libtheora --enable-libvorbis  --enable-libx264 --enable-pthreads --enable-gpl --enable-runtime-cpudetect 

when I run a simple command to record live input to MP4 by:

ffmpeg -f video4linux2 -s 640x480 -i /dev/video0 /home/irdb/Desktop/test.mp4

I get nothing, just a grey screen with some artifacts around the edges. However when I run the same command as .MPG it comes out fine. I need it in MP4 format however.

On a side note I am running x264-0.120 installed through yum

My question is, is there a problem with the way I compiled ffmpeg? Or is it possibly something else?

edit:

Output from example as requested:

# ffmpeg -f video4linux2 -s 640x480 -t 5 -i /dev/video0 -strict 2 /home/irdb/Desktop/test.mp4
ffmpeg version N-50546-g1f5b5b8 Copyright (c) 2000-2013 the FFmpeg developers
built on Mar  7 2013 00:17:44 with gcc 4.4.6 (GCC) 20120305 (Red Hat 4.4.6-4)
configuration: --enable-libmp3lame --enable-librtmp --enable-libtheora --enable-   libvorbis --enable-libx264 --enable-pthreads --enable-gpl --enable-runtime-cpudetect
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
[video4linux2,v4l2 @ 0x3025120] Estimating duration from bitrate, this may be   inaccurate
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 128.640356, bitrate: 147456 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 147456 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
[libx264 @ 0x3026f80] using cpu capabilities: MMX2 SSE2Fast SSEMisalign LZCNT
[libx264 @ 0x3026f80] profile High 4:2:2, level 3.0, 4:2:2 8-bit
[libx264 @ 0x3026f80] 264 - core 130 r2274 c832fe9 - 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=6 lookahead_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=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 '/home/irdb/Desktop/test.mp4':
Metadata:
encoder         : Lavf54.63.104
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 15360 tbn, 30 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo -> libx264)
Press [q] to stop, [?] for help
frame=   32 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=21    drframe=   46 fps= 46 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=28 drframe=    62 fps= 41 q=29.0 size=      71kB time=00:00:00.33 bitrate=1735.2kbits/frame=   76 fps=  38 q=29.0 size=     169kB time=00:00:00.80 bitrate=1731.2kbits/frame=   93 fps= 37  q=29.0 size=     311kB time=00:00:01.36 bitrate=1862.3kbits/frame=  107 fps= 35 q=29.0  size=     423kB time=00:00:01.83 bitrate=1891.0kbits/frame=  123 fps= 35 q=29.0 size=      537kB time=00:00:02.36 bitrate=1860.2kbits/frame=  139 fps= 34 q=29.0 size=     664kB  time=00:00:02.90 bitrate=1876.0kbits/frame=  150 fps= 29 q=-1.0 Lsize=    1174kB  time=00:00:04.93 bitrate=1948.7kbits/s dup=81 drop=0    
video:1172kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.133409%
[libx264 @ 0x3026f80] frame I:2     Avg QP:23.22  size: 28460
[libx264 @ 0x3026f80] frame P:136   Avg QP:24.45  size:  8397
[libx264 @ 0x3026f80] frame B:12    Avg QP:26.18  size:    42
[libx264 @ 0x3026f80] consecutive B-frames: 88.0%  4.0%  0.0%  8.0%
[libx264 @ 0x3026f80] mb I  I16..4: 47.1% 28.8% 24.1%
[libx264 @ 0x3026f80] mb P  I16..4:  4.3%  1.9%  1.2%  P16..4: 29.0% 11.4%  9.2%      0.0%  0.0%    skip:43.0%
[libx264 @ 0x3026f80] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  1.5%  0.0%  0.0%   direct: 0.0%  skip:98.5%  L0:16.5% L1:83.5% BI: 0.0%
[libx264 @ 0x3026f80] 8x8 transform intra:26.4% inter:30.7%
[libx264 @ 0x3026f80] coded y,uvDC,uvAC intra: 85.2% 95.6% 83.5% inter: 10.9% 38.6% 24.0%
[libx264 @ 0x3026f80] i16 v,h,dc,p: 33% 19% 40%  8%
[libx264 @ 0x3026f80] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  6% 12% 55%  5%  3%  4%  4%  3%  8%
[libx264 @ 0x3026f80] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15%  9% 63%  3%  2%  2%  2%  2%  2%
[libx264 @ 0x3026f80] i8c dc,h,v,p: 66% 11% 14%  9%
[libx264 @ 0x3026f80] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x3026f80] ref P L0: 56.6%  7.5%  8.1% 27.8%
[libx264 @ 0x3026f80] ref B L0: 83.3% 16.7%
[libx264 @ 0x3026f80] ref B L1: 90.7%  9.3%
[libx264 @ 0x3026f80] kb/s:1918.95

解决方案

Your output video's pixel format is probably unsupported in the player you're using to show the video. If you observe your output logs, you can see yuv422p being chosen as the format. That's a 4:2:2 subsampled chroma in a planar format.

Choosing -pix_fmt yuv420p (4:2:0 subsampling) should give you an H.264-encoded video that can be viewed everywhere.

ffmpeg -f video4linux2 -s 640x480 -i /dev/video0 \
-c:v libx264 -pix_fmt yuv420p /home/irdb/Desktop/test.mp4

I explicitly set the video codec here. Just a good habit to develop so as not to be surprised when FFmpeg defaults to another encoder for a format. For example, choosing an MPEG output format made FFmpeg choose another default encoder, MPEG-1 (mpeg1video), which uses 4:2:0 subsampling again.

这篇关于FFMPEG x264 MP4编码全部灰色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆