mengapa proses FFMPEG lambat?

Sep 02 2020

Saya mencoba memproses video 4gb menggunakan ffmpeg di server dengan 1 CPU & 2GB RAM tetapi perintahnya macet selama 5 menit kemudian mulai dan proses sangat lambat. Berikut adalah keluaran konsol:

Perintah

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

Keluaran

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 


Bagaimana cara meningkatkan kecepatan?

==================

Saya mencoba mengikuti perintah dan mendapatkan kesalahan:

Perintah

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

Kesalahan

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

Jawaban

2 llogan Sep 03 2020 at 00:29

trim / atrim bisa lambat

Filter trim / atrim harus memecahkan kode video hingga mencapai stempel waktu yang diinginkan. Ini bisa lambat.

Alasan saya menyarankan trim dalam jawaban Anda sebelumnya adalah karena Anda awalnya ingin menggunakan frame (bukan timestamp) sebagai unit yang dapat dilakukan trim, tetapi -ss+ -t/ -totidak bisa.

-ss+ -to/ -tlebih cepat

Anda dapat menggunakan opsi -ss+ -to/ -tinput untuk dengan cepat melompat ke bingkai utama terdekat, lalu mulai mendekode.

Contoh

Menggunakan -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
  • Menggunakan -tosebagai opsi input membutuhkan FFmpeg 4.0 atau yang lebih baru. Atau gunakan -topsi seperti yang ditunjukkan di bawah ini.

  • Untuk penggunaan video saja -filter_complex "[0:v][1:v]concat=n=2:v=1:a=0[v]" -map "[v]" output.mp4

Menggunakan -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