gpt4 book ai didi

ffmpeg - 为什么FFMPEG过程很慢?

转载 作者:行者123 更新时间:2023-12-04 22:52:13 27 4
gpt4 key购买 nike

我尝试在具有 1 个 CPU 和 2GB RAM 的服务器上使用 ffmpeg 处理 4gb 视频,但该命令被挂起 5 分钟,然后启动并处理非常缓慢。以下是控制台输出:
命令

ffmpeg -i input.mp4 -filter_complex '[0:v]trim=823.2:867.3,setpts=PTS-STARTPTS[v0];[0:v]trim=1074.1:1101.4,setpts=PTS-STARTPTS[v1];[0:v]trim=1142.2:1198.9,setpts=PTS-STARTPTS[v2];[0:v]trim=1227.9:1320.0,setpts=PTS-STARTPTS[v3];[0:v]trim=1887.1:1990.8,setpts=PTS-STARTPTS[v4];[0:v]trim=2008.1:2091.3,setpts=PTS-STARTPTS[v5];[0:v]trim=3090.1:3105.1,setpts=PTS-STARTPTS[v6];[0:v]trim=3185.3:3222.2,setpts=PTS-STARTPTS[v7];[0:v]trim=3306.4:3336.5,setpts=PTS-STARTPTS[v8];[0:v]trim=3426.7:3465.7,setpts=PTS-STARTPTS[v9];[0:v]trim=3548.7:3586.5,setpts=PTS-STARTPTS[v10];[v0][v1][v2][v3][v4][v5][v6][v7][v8][v9][v10]concat=n=11:v=1[out]' -map '[out]' output.mp4
输出
ffmpeg version 3.4.8-0ubuntu0.2 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
configuration: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/tmp/down-net_http20200902-1614-1x7tk8f.mp4':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2020-08-28T14:02:14.000000Z
Duration: 01:00:18.73, start: 0.000000, bitrate: 8895 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 8871 kb/s, 15 fps, 15 tbr, 6k tbn, 12k tbc (default)
Metadata:
creation_time : 2020-08-28T14:02:14.000000Z
handler_name : Core Media Video
Stream mapping:
Stream #0:0 (h264) -> trim
Stream #0:0 (h264) -> trim
Stream #0:0 (h264) -> trim
Stream #0:0 (h264) -> trim
Stream #0:0 (h264) -> trim
Stream #0:0 (h264) -> trim
Stream #0:0 (h264) -> trim
Stream #0:0 (h264) -> trim
Stream #0:0 (h264) -> trim
Stream #0:0 (h264) -> trim
Stream #0:0 (h264) -> trim
concat -> Stream #0:0 (libx264)
Press [q] to stop, [?] for help
[libx264 @ 0x563bd0d2c520] using SAR=1/1
[libx264 @ 0x563bd0d2c520] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x563bd0d2c520] profile High, level 3.1
[libx264 @ 0x563bd0d2c520] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - 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 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=15 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 '/opt/app/tmp/file_1599089716.mp4':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
encoder : Lavf57.83.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 15 fps, 15360 tbn, 15 tbc (default)
Metadata:
encoder : Lavc57.107.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame= 0 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x


我怎样才能提高速度?
===================
我尝试了以下命令并收到错误:
命令
ffmpeg -ss 823.2 -to 867.3 -i /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4 -ss 1074.1 -to 1101.4 -i /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4 -ss 1142.2 -to 1198.9 -i /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4 -ss 1227.9 -to 1320.0 -i /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4 -ss 1887.1 -to 1990.8 -i /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4 -ss 2008.1 -to 2091.3 -i /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4 -ss 3090.1 -to 3105.1 -i /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4 -ss 3185.3 -to 3222.2 -i /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4 -ss 3306.4 -to 3336.5 -i /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4 -ss 3426.7 -to 3465.7 -i /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4 -ss 3548.7 -to 3586.5 -i /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4  -filter_complex '[0:v][1:v][2:v][3:v][4:v][5:v][6:v][7:v][8:v][9:v][10:v]concat=n=11:v=1:a=0[v]' -map '[v]' /opt/app/tmp/file_1599127170.mp4
错误
Option to (record or transcode stop time) cannot be applied to input url /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4 -- you are trying to apply an input option to an output file or vice versa. Move this option before the file it belongs to.
Error parsing options for input file /opt/app/tmp/down-net_http20200903-4776-1o4wkhk.mp4.
Error opening input files: Invalid argument

最佳答案

修剪/修剪可能很慢
trim/atrim 过滤器必须对视频进行解码,直到它达到所需的时间戳。这可能很慢。
我建议在您的 previous answer 中修剪的原因是因为您最初想使用帧(而不是时间戳)作为 trim 可以执行的单位,但是 -ss + -t/-to不能。-ss + -to/-t是比较快的
您可以使用 -ss + -to/-t输入选项以快速跳转到最近的关键帧,然后开始解码。
例子
使用 -to :

ffmpeg -ss 823.2 -to 867.3 -i input.mp4 -ss 1074.1 -to 1101.4 -i input.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" output.mp4
  • 使用 -to作为输入选项需要 FFmpeg 4.0 或更高版本。或使用 -t选项,如下所示。
  • 仅限视频使用 -filter_complex "[0:v][1:v]concat=n=2:v=1:a=0[v]" -map "[v]" output.mp4

  • 使用 -t :
    ffmpeg -ss 823.2 -t 44.1 -i input.mp4 -ss 1074.1 -t 27.3 -i input.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" output.mp4

    关于ffmpeg - 为什么FFMPEG过程很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63714902/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com