FFMpeg-enable = between 매개 변수가 추가 된 경우 오버레이가 표시되지 않음

Aug 20 2020

아래 명령을 사용하여 오버레이를 사용하여 비디오간에 전환 효과를 추가하여 하나의 비디오가 끝나려고 할 때 오버레이가 표시되도록합니다. 오버레이를 표시하기 전에 패딩을 추가하고 비디오를 연결하여 하나의 단일 비디오를 만든 다음 오버레이를 표시해야합니다. :

ffmpeg 
-i input1.mp4 
-i input2.mp4 
-i input3.mp4 
-i transition1.mp4 
-i transition2.mp4 
-filter_complex 
"[0:v]pad=width=1080:height=1920:x=(1080-iw)*0.5:y=(1920-ih)*0.5:color=black[video0];
[1:v]pad=width=1080:height=1920:x=(1080-iw)*0.5:y=(1920-ih)*0.5:color=black[video1];
[2:v]pad=width=1080:height=1920:x=(1080-iw)*0.5:y=(1920-ih)*0.5:color=black[video2];
[video0][video1][video2]concat=n=3:v=1:a=0[outv];
[3:v]colorkey=0x00d800:0.1[t0];
[t0]scale=w=1080:h=1920[tr0];
[4:v]colorkey=0x00d800:0.1[t1];
[t1]scale=w=1080:h=1920[tr1];
[outv][tr0]overlay=0:0:enable='between(t\,7\,9)'[out0];
[out0][tr1]overlay=0:0:enable='between(t\,12\,15)'[out1];
[0:a][1:a][2:a]concat=n=3:v=0:a=1[audio]" 
-vsync 0 -c:v libx264 -pix_fmt yuv420p -map [out1] -map [audio] -preset ultrafast output.mp4

그러나 위의 명령은 오버레이 비디오를 표시하지 않습니다. 오버레이 매개 변수에서 enable = between (t, start, end)를 제거하면 모든 오버레이가 비디오 시작시 표시됩니다. 저는 비디오 편집과 FFMpeg에 매우 초보자입니다. 아무도 내가 여기서 뭘 잘못하고 있는지 안내해 줄 수 있습니까?

다음은 콘솔의 로그입니다.

ffmpeg version v4.4-dev-416
I/mobile-ffmpeg:  Copyright (c) 2000-2020 the FFmpeg developers
      built with Android (6454773 based on r365631c2) clang version 9.0.8 (https://android.googlesource.com/toolchain/llvm-project 98c855489587874b2a325e7a516b99d838599c6f) (based on LLVM 9.0.8svn)
      configuration: --cross-prefix=aarch64-linux-android- --sysroot=/files/android-sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/sysroot --prefix=/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/ffmpeg --pkg-config=/usr/bin/pkg-config --enable-version3 --arch=aarch64 --cpu=armv8-a --cc=aarch64-linux-android24-clang --cxx=aarch64-linux-android24-clang++ --extra-libs='-L/home/taner/Projects/mobile-ffmpeg/prebuilt/android-arm64/cpu-features/lib -lndk_compat' --target-os=android --enable-neon --enable-asm --enable-inline-asm --enable-cross-compile --enable-pic --enable-jni --enable-optimizations --enable-swscale --enable-shared --enable-v4l2-m2m --disable-outdev=fbdev --disable-indev=fbdev --enable-small --disable-openssl --disable-xmm-clobber-test --disable-debug --enable-lto --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-videotoolbox --disable-audiotoolbox --disable-appkit --disable-alsa --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gmp --enable-gnutls --enable-libmp3lame --enable-libass --enable-iconv --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libopencore-amrnb --enable-libshine --enable-libspeex --enable-libwavpack --enable-libkvazaar --enable-libx264 --enable-gpl --enable-libxvid --enable-gpl --enable-libx265 --enable-gpl --enable-libvidstab --enable-gpl --enable-libilbc --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libaom --enable-libtwolame --disable-sdl2 --enable-libvo-amrwbenc --enable-zlib --enable-mediacodec
      libavutil      56. 55.100 / 56. 55.100
      libavcodec     58. 96.100 / 58. 96.100
      libavformat    58. 48.100 / 58. 48.100
      libavdevice    58. 11.101 / 58. 11.101
      libavfilter     7. 87.100 /  7. 87.100
      libswscale      5.  8.100 /  5.  8.100
      libswresample   3.  8.100 /  3.  8.100

I/mobile-ffmpeg: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input1.mp4':
      Metadata:
        major_brand     : 
    mp42
        minor_version   : 
    0
        compatible_brands: 
    isommp42
        creation_time   : 
    2020-08-12T17:21:49.000000Z
        com.android.version: 
    9
      Duration: 
I/mobile-ffmpeg: 00:00:08.12
    , start: 
    0.000000
    , bitrate: 
    17298 kb/s
        Stream #0:0
    (eng)
    : Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 16309 kb/s
    , SAR 1:1 DAR 16:9
    , 
    28.70 fps, 
    29.50 tbr, 
    90k tbn, 
    60 tbc
     (default)
        Metadata:
          rotate          : 
    90
          creation_time   : 
    2020-08-12T17:21:49.000000Z
          handler_name    : 
    VideoHandle
        Side data:
          
    displaymatrix: rotation of -90.00 degrees
        Stream #0:1
I/mobile-ffmpeg: (eng)
    : Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 192 kb/s
     (default)
        Metadata:
          creation_time   : 
    2020-08-12T17:21:49.000000Z
          handler_name    : 
    SoundHandle
I/mobile-ffmpeg: Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'input2.mp4':
      Metadata:
        major_brand     : 
    isom
        minor_version   : 
    512
        compatible_brands: 
    isomiso2avc1mp41
        encoder         : 
    Lavf57.25.100
I/mobile-ffmpeg:   Duration: 
    00:00:05.97
    , start: 
    0.000000
    , bitrate: 
    770 kb/s
        Stream #1:0
    (und)
    : Audio: aac (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 128 kb/s
     (default)
        Metadata:
          handler_name    : 
    SoundHandler
        Stream #1:1
    (und)
    : Video: h264 (avc1 / 0x31637661), yuv420p, 368x480, 608 kb/s
    , 
    27.29 fps, 
I/mobile-ffmpeg: 120 tbr, 
    12k tbn, 
    60 tbc
     (default)
        Metadata:
          handler_name    : 
    VideoHandler
I/mobile-ffmpeg: Input #2, mov,mp4,m4a,3gp,3g2,mj2, from 'input3.mp4':
      Metadata:
        major_brand     : 
    isom
        minor_version   : 
    512
        compatible_brands: 
    isomiso2avc1mp41
I/mobile-ffmpeg:     encoder         : 
    Lavf55.19.104
      Duration: 
    00:00:13.05
    , start: 
    0.000000
    , bitrate: 
    2453 kb/s
        Chapter #2:0: 
    start 0.000000, 
    end 13.033000
        Metadata:
          title           : 
        Stream #2:0
    (und)
    : Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s
     (default)
I/mobile-ffmpeg:     Metadata:
          handler_name    : 
    SoundHandler
        Stream #2:1
    (und)
    : Video: h264 (avc1 / 0x31637661), yuv420p, 640x480, 2320 kb/s
    , 
    25 fps, 
    25 tbr, 
    1200k tbn, 
    50 tbc
     (default)
        Metadata:
          handler_name    : 
    VideoHandler
        Stream #2:2
    (eng)
    : Data: bin_data (text / 0x74786574), 0 kb/s
I/mobile-ffmpeg:     Metadata:
          handler_name    : 
    SubtitleHandler
I/mobile-ffmpeg: Input #3, mov,mp4,m4a,3gp,3g2,mj2, from 'transition1.mp4':
      Metadata:
        major_brand     : 
    mp42
        minor_version   : 
    0
I/mobile-ffmpeg:     compatible_brands: 
    mp41isom
        creation_time   : 
    2020-08-17T09:24:04.000000Z
      Duration: 
    00:00:02.22
    , start: 
    0.000000
    , bitrate: 
    2445 kb/s
        Stream #3:0
    (und)
    : Video: h264 (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 2414 kb/s
    , 
    30 fps, 
    30 tbr, 
    30k tbn, 
    60 tbc
     (default)
I/mobile-ffmpeg:     Metadata:
          creation_time   : 
    2020-08-17T09:24:04.000000Z
          handler_name    : 
    VideoHandler
          encoder         : 
    AVC Coding
        Stream #3:1
    (und)
    : Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 79 kb/s
     (default)
        Metadata:
          creation_time   : 
I/mobile-ffmpeg: 2020-08-17T09:24:04.000000Z
          handler_name    : 
I/mobile-ffmpeg: SoundHandler
I/mobile-ffmpeg: Input #4, mov,mp4,m4a,3gp,3g2,mj2, from 'transition2.mp4':
      Metadata:
        major_brand     : 
    mp42
        minor_version   : 
    0
        compatible_brands: 
    mp41isom
        creation_time   : 
    2020-08-17T09:21:33.000000Z
      Duration: 
    00:00:02.22
    , start: 
    0.000000
    , bitrate: 
    2331 kb/s
I/mobile-ffmpeg:     Stream #4:0
    (und)
    : Video: h264 (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 2298 kb/s
    , 
    30 fps, 
    30 tbr, 
    30k tbn, 
    60 tbc
     (default)
        Metadata:
          creation_time   : 
    2020-08-17T09:21:33.000000Z
          handler_name    : 
    VideoHandler
          encoder         : 
    AVC Coding
        Stream #4:1
    (und)
I/mobile-ffmpeg: : Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 79 kb/s
     (default)
        Metadata:
          creation_time   : 
    2020-08-17T09:21:33.000000Z
          handler_name    : 
    SoundHandler
I/mobile-ffmpeg: Stream mapping:
      Stream #0:0 (h264) -> pad
      Stream #0:1 (aac) -> concat:in0:a0
      Stream #1:0 (aac) -> concat:in1:a0
      Stream #1:1 (h264) -> pad
      Stream #2:0 (aac) -> concat:in2:a0
      Stream #2:1 (h264) -> pad
      Stream #3:0 (h264) -> colorkey
      Stream #4:0 (h264) -> colorkey
I/mobile-ffmpeg:   overlay
     -> Stream #0:0 (libx264)
      concat
     -> Stream #0:1 (aac)
    Press [q] to stop, [?] for help
W/mobile-ffmpeg: [graph 0 input from stream 0:0 @ 0x73485c3fc0] sws_param option is deprecated and ignored
    [graph 0 input from stream 1:1 @ 0x73485c4140] sws_param option is deprecated and ignored
    [graph 0 input from stream 2:1 @ 0x73485c4200] sws_param option is deprecated and ignored
    [graph 0 input from stream 3:0 @ 0x73485c42c0] sws_param option is deprecated and ignored
W/mobile-ffmpeg: [graph 0 input from stream 4:0 @ 0x73485c4380] sws_param option is deprecated and ignored
W/mobile-ffmpeg: [swscaler @ 0x7324db9000] No accelerated colorspace conversion found from yuv420p to argb.
W/mobile-ffmpeg: [swscaler @ 0x7324876000] No accelerated colorspace conversion found from yuv420p to argb.
I/mobile-ffmpeg: [libx264 @ 0x7332f9a500] using SAR=1/1
W/mobile-ffmpeg: [libx264 @ 0x7332f9a500] MB rate (8160000000) > level limit (16711680)
I/mobile-ffmpeg: [libx264 @ 0x7332f9a500] using cpu capabilities: ARMv8 NEON
I/mobile-ffmpeg: [libx264 @ 0x7332f9a500] profile Constrained Baseline, level 6.2, 4:2:0, 8-bit
    [libx264 @ 0x7332f9a500] 264 - core 160 - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 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=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
I/mobile-ffmpeg: Output #0, mp4, to 'output.mp4':
      Metadata:
I/mobile-ffmpeg:     major_brand     : 
    mp42
        minor_version   : 
    0
        compatible_brands: 
    isommp42
        com.android.version: 
    9
        encoder         : 
    Lavf58.48.100
        Chapter #0:0: 
    start 0.000000, 
    end 13.033000
        Metadata:
          title           : 
        Stream #0:0
I/mobile-ffmpeg: : Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive), 1080x1920 [SAR 1:1 DAR 9:16], q=-1--1
    , 
    1000k tbn, 
    1000k tbc
     (default)
        Metadata:
          encoder         : 
    Lavc58.96.100 libx264
        Side data:
          
    cpb: 
    bitrate max/min/avg: 0/0/0 buffer size: 0 
    vbv_delay: N/A
        Stream #0:1
    : Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s
     (default)
        Metadata:
I/mobile-ffmpeg:       encoder         : 
    Lavc58.96.100 aac
E/Progress: Progress: 3.6918316
D/mobile-ffmpeg: Progress: frame: 1, time: 1002, Pct: 0.036918
I/mobile-ffmpeg: frame=    1 fps=0.0 q=0.0 size=       0kB time=00:00:01.00 bitrate=   0.5kbits/s speed=1.13x      

답변

1 Gyan Aug 20 2020 at 02:17

오버레이 필터는 두 입력을 타임 스탬프별로 동기화하므로 오버레이 비디오의 두 번째 X가 기본 비디오의 두 번째 X 위에 인쇄됩니다. 따라서 overlay=0:0:enable='between(t\,7\,9)'인수가이면 ffmpeg는 타임 스탬프 7.00으로 기본 비디오 위에 타임 스탬프 7.00이있는 오버레이 프레임을 오버레이하는 것을 목표로 시작합니다. 오버레이 비디오가 그렇게 길지 않으면 효과가 없습니다.

필요한 동기화를 생성하려면 오버레이 비디오 타임 스탬프를 수정해야합니다.

[3:v]colorkey=0x00d800:0.1,scale=w=1080:h=1920,setpts=PTS-STARTPTS+7/TB[tr0];

setpts는 첫 번째 전환 스트림을 타임 스탬프 7로 시작하도록 이동합니다 enable='between(t\,7\,9)'. 이제 .