如何解决FFMPEG、H264 编码:如果帧大小超过级别限制,是否会导致视频编码失败?
我想用 h264 编码重新编码一个 mp4 文件。 运行以下命令:
ffmpeg -i input.mp4 -f mp4 -vcodec h264 -profile:v baseline -level 3.0 -pix_fmt yuv420p -color_range 2 -vf scale=1080:1920 -acodec aac -async 1 output.mp4
进程失败,提示 Video encoding Failed.
ffmpeg 给出的错误信息:
[h264 @ 0x7a467000] Reinit context to 640x1152,pix_fmt: yuv420p\n
Input #0,mov,mp4,m4a,3gp,3g2,mj2,from 'input.mp4':\n
Metadata:\n
major_brand : mp42\n
minor_version : 0\n
compatible_brands: mp42mp41iso4\n
creation_time : 2020-07-26T20:32:55.000000Z\n
Duration: 00:00:36.20,start: 0.000000,bitrate: 938 kb/s\n
Stream #0:0(und): Video: h264,1 reference frame (avc1 / 0x31637661),yuv420p(left),640x1138 (640x1152),935 kb/s,30 fps,30 tbr,15360 tbn,60 tbc (default)\n
Metadata:\n
creation_time : 2020-07-26T20:32:55.000000Z\n
handler_name : Vireo Eyes v2.5.3\n
encoder : AVC Coding\n
Matched encoder 'libx264' for codec 'h264'.\n
Stream mapping:\n
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))\nPress [q] to stop,[?] for help\n
[Parsed_scale_0 @ 0x80be6220] w:1080 h:1920 flags:'bicubic' interl:0\n
[graph 0 input from stream 0:0 @ 0x80be6280] w:640 h:1138 pixfmt:yuv420p tb:1/15360 fr:30/1 sar:0/1\n
[graph 0 input from stream 0:0 @ 0x80be6280] sws_param option is deprecated and ignored\n[Parsed_scale_0 @ 0x80be6220] w:640 h:1138 fmt:yuv420p sar:0/1 -> w:1080 h:1920 fmt:yuv420p sar:0/1 flags:0x4\n
[libx264 @ 0x7a1d4000] frame MB size (68x120) > level limit (1620)\n
[libx264 @ 0x7a1d4000] DPB size (1 frames,8160 mbs) > level limit (0 frames,8100 mbs)\n
[libx264 @ 0x7a1d4000] MB rate (244800) > level limit (40500)\n[libx264 @ 0x7a1d4000] using cpu capabilities: ARMv6 NEON\n
[libx264 @ 0x7a1d4000] profile Constrained Baseline,level 3.0,4:2:0,8-bit\n[libx264 @ 0x7a1d4000] 264 - core 160 - H.264/MPEG-4 AVC codec - copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 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=0 weightp=0 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\n
Output #0,to 'output.mp4':\n
Metadata:\n
major_brand : mp42\n
minor_version : 0\n
compatible_brands: mp42mp41iso4\n
encoder : Lavf58.48.100\n
Stream #0:0(und): Video: h264 (libx264),yuv420p(pc,left),1080x1920,q=-1--1,30 tbc (default)\n
Metadata:\n
creation_time : 2020-07-26T20:32:55.000000Z\n
handler_name : Vireo Eyes v2.5.3\n
encoder : Lavc58.96.100 libx264\n
Side data:\n
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A\n
frame= 3 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x \n
frame= 7 fps=6.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x \n
frame= 11 fps=6.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x \n
frame= 15 fps=6.3 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x \n
frame= 19 fps=6.3 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x \n
frame= 23 fps=6.3 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x \n
frame= 26 fps=6.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x \n
frame= 30 fps=6.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x \n
frame= 33 fps=6.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x \n
Video encoding Failed\n[AVIOContext @ 0x7a42cd80] Statistics: 0 seeks,1 writeouts\n
[AVIOContext @ 0x7a42ccc0] Statistics: 229376 bytes read,0 seeks\nConversion Failed!\n\n\n\n\n
我试图找出失败的原因。我从 frame MB size (68x120) > level limit (1620)
行的错误消息猜测,帧大小超过 h264 级别限制可能是问题所在。
是这个问题吗?如果是,那么解决方案是什么?如果不是,出了什么问题?
有人可以帮忙吗?谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。