使用ffmpeg调整大小后文件损坏

时间:2018-10-23 14:46:39

标签: python python-3.x video ffmpeg instagram

我正在制作一个将视频发送到instagram的机器人。但是instagram只允许 1:1宽高比视频,因此我正在尝试在python(ffmpy模块)中使用ffmpeg调整视频(.mp4)文件的大小。

这是我正在使用的ffmpeg代码 -analyzeduration 20M -probesize 20M -y -i FILE.MP4 -vf "scale=1080:1080:force_original_aspect_ratio=decrease,pad=1080:1080:(ow-iw)/2:(oh-ih)/2:white NEW_FILE.MP4

但这会损坏文件吗?调整大小之前的文件大小为1.815305 MB,但在ffmpeg作业之后为0.058714 MB。那有什么呢?

(我也尝试使用-aspect 1:1,但这也损坏了文件)

Ffmpy似乎可以正常工作,因为有时如果文件超过20 MB,我会运行该命令以减小文件大小-y -i FILE.MP4 -vcodec libx264 -crf 24 NEW_FILE.MP4,并且效果很好。

如果需要,这里是完整的日志:

Oct 23 07:32:03 test-instabot app/worker.1: MP4 SIZE BEFORE ASPECT RESIZE IS: 1.815305 MB 
Oct 23 07:32:03 test-instabot app/worker.1: ffmpeg version 4.0.2-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2018 the FFmpeg developers 
Oct 23 07:32:03 test-instabot app/worker.1:   built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516 
Oct 23 07:32:03 test-instabot app/worker.1:   configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg 
Oct 23 07:32:03 test-instabot app/worker.1:   libavutil      56. 14.100 / 56. 14.100 
Oct 23 07:32:03 test-instabot app/worker.1:   libavcodec     58. 18.100 / 58. 18.100 
Oct 23 07:32:03 test-instabot app/worker.1:   libavformat    58. 12.100 / 58. 12.100 
Oct 23 07:32:03 test-instabot app/worker.1:   libavdevice    58.  3.100 / 58.  3.100 
Oct 23 07:32:03 test-instabot app/worker.1:   libavfilter     7. 16.100 /  7. 16.100 
Oct 23 07:32:03 test-instabot app/worker.1:   libswscale      5.  1.100 /  5.  1.100 
Oct 23 07:32:03 test-instabot app/worker.1:   libswresample   3.  1.100 /  3.  1.100 
Oct 23 07:32:03 test-instabot app/worker.1:   libpostproc    55.  1.100 / 55.  1.100 
Oct 23 07:32:03 test-instabot app/worker.1: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './media/t4nYbas.mp4': 
Oct 23 07:32:03 test-instabot app/worker.1:   Metadata: 
Oct 23 07:32:03 test-instabot app/worker.1:     major_brand     : isom 
Oct 23 07:32:03 test-instabot app/worker.1:     minor_version   : 512 
Oct 23 07:32:03 test-instabot app/worker.1:     compatible_brands: isomiso2avc1mp41 
Oct 23 07:32:03 test-instabot app/worker.1:     encoder         : Lavf58.12.100 
Oct 23 07:32:03 test-instabot app/worker.1:   Duration: 00:00:06.04, start: 0.000000, bitrate: 2404 kb/s 
Oct 23 07:32:03 test-instabot app/worker.1:     Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 480x854, 2402 kb/s, 29.98 fps, 29.98 tbr, 19184 tbn, 59.95 tbc (default) 
Oct 23 07:32:03 test-instabot app/worker.1:     Metadata: 
Oct 23 07:32:03 test-instabot app/worker.1:       handler_name    : VideoHandler 
Oct 23 07:32:03 test-instabot app/worker.1: Stream mapping: 
Oct 23 07:32:03 test-instabot app/worker.1:   Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) 
Oct 23 07:32:03 test-instabot app/worker.1: Press [q] to stop, [?] for help 
Oct 23 07:32:03 test-instabot app/worker.1: [swscaler @ 0x6882200] Warning: data is not aligned! This can lead to a speed loss 
Oct 23 07:32:03 test-instabot app/worker.1: [libx264 @ 0x66c99c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX 
Oct 23 07:32:03 test-instabot app/worker.1: [libx264 @ 0x66c99c0] profile High, level 3.2 
Oct 23 07:32:03 test-instabot app/worker.1: [libx264 @ 0x66c99c0] 264 - core 155 r2901 7d0ff22 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - 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 
Oct 23 07:32:03 test-instabot app/worker.1: Output #0, mp4, to './media/t4nYbas.mp4': 
Oct 23 07:32:03 test-instabot app/worker.1:   Metadata: 
Oct 23 07:32:03 test-instabot app/worker.1:     major_brand     : isom 
Oct 23 07:32:03 test-instabot app/worker.1:     minor_version   : 512 
Oct 23 07:32:03 test-instabot app/worker.1:     compatible_brands: isomiso2avc1mp41 
Oct 23 07:32:03 test-instabot app/worker.1:     encoder         : Lavf58.12.100 
Oct 23 07:32:03 test-instabot app/worker.1:     Stream #0:0(und): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1080x1080, q=-1--1, 29.98 fps, 19184 tbn, 29.98 tbc (default) 
Oct 23 07:32:03 test-instabot app/worker.1:     Metadata: 
Oct 23 07:32:03 test-instabot app/worker.1:       handler_name    : VideoHandler 
Oct 23 07:32:03 test-instabot app/worker.1:       encoder         : Lavc58.18.100 libx264 
Oct 23 07:32:03 test-instabot app/worker.1:     Side data: 
Oct 23 07:32:03 test-instabot app/worker.1:       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1 
Oct 23 07:32:03 test-instabot app/worker.1: frame=    1 fps=0.0 q=29.0 Lsize=      57kB time=00:00:00.00 bitrate=9032923.1kbits/s speed=7.89e-05x     
Oct 23 07:32:03 test-instabot app/worker.1: video:57kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.383109% 
Oct 23 07:32:03 test-instabot app/worker.1: [libx264 @ 0x66c99c0] frame I:1     Avg QP:29.91  size: 57223 
Oct 23 07:32:03 test-instabot app/worker.1: [libx264 @ 0x66c99c0] mb I  I16..4: 12.6% 74.9% 12.5% 
Oct 23 07:32:03 test-instabot app/worker.1: [libx264 @ 0x66c99c0] 8x8 transform intra:74.9% 
Oct 23 07:32:03 test-instabot app/worker.1: [libx264 @ 0x66c99c0] coded y,uvDC,uvAC intra: 52.6% 24.4% 1.0% 
Oct 23 07:32:03 test-instabot app/worker.1: [libx264 @ 0x66c99c0] i16 v,h,dc,p: 94%  0%  5%  1% 
Oct 23 07:32:03 test-instabot app/worker.1: [libx264 @ 0x66c99c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 10% 28%  4%  6%  5%  7%  5%  7% 
Oct 23 07:32:03 test-instabot app/worker.1: [libx264 @ 0x66c99c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 21% 17% 15%  7%  9%  7%  9%  7%  9% 
Oct 23 07:32:03 test-instabot app/worker.1: [libx264 @ 0x66c99c0] i8c dc,h,v,p: 78%  9% 12%  2% 
Oct 23 07:32:03 test-instabot app/worker.1: [libx264 @ 0x66c99c0] kb/s:13722.08 
Oct 23 07:32:03 test-instabot app/worker.1: MP4 SIZE AFTER ASPECT RESIZE IS: 0.058714 MB

1 个答案:

答案 0 :(得分:2)

您的命令模板显示-i FILE.MP4NEW_FILE.MP4,但是在您的实际命令中,输入为./media/t4nYbas.mp4,输出为相同的./media/t4nYbas.mp4。 FFmpeg无法就地编辑文件。输出文件必须不同。