Тестовые файлы

Тестовые файлы

Пример видео:https://youtu.be/Ib_CxhxOpxI

Я использую следующую команду:

ffmpeg -i GX014186.MP4 -i GX014187.MP4 -i GX024187.MP4 -i GX034187.MP4 -i GX044187.MP4 -i GX054187.MP4 -i GX064187.MP4 -i scaled.png -filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a][3:v][3:a][4:v][4:a]concat=n=5:v=1:a=1[vv][a];[vv]overlay=main_w-overlay_w-5:main_h-overlay_h-5[v]" -map "[v]" -map "[a]" output.mp4

Эта команда работала с предыдущими видео. Но в видео этой недели она, похоже, объединяет все видео в одно.

То есть, по краям видео вы можете видеть, что все видео наложены друг на друга.

Таким образом, кажется, что отрендерено только одно видео, но на самом деле отрендерены все видео, но со странной системой слоев.

hutber@hutber:~/Videos$ ./concat.sh 
Please select folder:
1) mlt/       3) Week 2/   5) Week 4/   7) Week 6/   9) Week 8/
2) VLC/       4) Week 3/   6) Week 5/   8) Week 7/  10) Week 9/
#? 8
ffmpeg version N-49161-g50e194e6e1-static https://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
  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-gmp --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-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
  libavutil      56. 30.100 / 56. 30.100
  libavcodec     58. 53.101 / 58. 53.101
  libavformat    58. 28.101 / 58. 28.101
  libavdevice    58.  7.100 / 58.  7.100
  libavfilter     7. 55.100 /  7. 55.100
  libswscale      5.  4.101 /  5.  4.101
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'GX014183.MP4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    creation_time   : 2016-08-25T23:17:34.000000Z
    firmware        : HD6.01.01.60.00
  Duration: 00:08:03.50, start: 0.000000, bitrate: 66226 kb/s
    Stream #0:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 65937 kb/s, 239.76 fps, 239.76 tbr, 240k tbn, 239.76 tbc (default)
    Metadata:
      creation_time   : 2016-08-25T23:17:34.000000Z
      handler_name    : GoPro H.265
      encoder         : GoPro H.265 encoder
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:17:34.000000Z
      handler_name    : GoPro AAC  
    Stream #0:2(eng): Data: bin_data (gpmd / 0x646D7067), 33 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:17:34.000000Z
      handler_name    : GoPro MET  
    Stream #0:3(eng): Data: none (fdsc / 0x63736466), 36 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:17:34.000000Z
      handler_name    : GoPro SOS  
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'GX024183.MP4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    creation_time   : 2016-08-25T23:25:38.000000Z
    firmware        : HD6.01.01.60.00
  Duration: 00:08:03.48, start: 0.000000, bitrate: 66233 kb/s
    Stream #1:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 65936 kb/s, 239.76 fps, 239.76 tbr, 240k tbn, 239.76 tbc (default)
    Metadata:
      creation_time   : 2016-08-25T23:25:38.000000Z
      handler_name    : GoPro H.265
      encoder         : GoPro H.265 encoder
    Stream #1:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:25:38.000000Z
      handler_name    : GoPro AAC  
    Stream #1:2(eng): Data: bin_data (gpmd / 0x646D7067), 33 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:25:38.000000Z
      handler_name    : GoPro MET  
    Stream #1:3(eng): Data: none (fdsc / 0x63736466), 36 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:25:38.000000Z
      handler_name    : GoPro SOS  
Input #2, mov,mp4,m4a,3gp,3g2,mj2, from 'GX034183.MP4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    creation_time   : 2016-08-25T23:33:41.000000Z
    firmware        : HD6.01.01.60.00
  Duration: 00:08:03.48, start: 0.000000, bitrate: 66218 kb/s
    Stream #2:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 65921 kb/s, 239.76 fps, 239.76 tbr, 240k tbn, 239.76 tbc (default)
    Metadata:
      creation_time   : 2016-08-25T23:33:41.000000Z
      handler_name    : GoPro H.265
      encoder         : GoPro H.265 encoder
    Stream #2:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:33:41.000000Z
      handler_name    : GoPro AAC  
    Stream #2:2(eng): Data: bin_data (gpmd / 0x646D7067), 33 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:33:41.000000Z
      handler_name    : GoPro MET  
    Stream #2:3(eng): Data: none (fdsc / 0x63736466), 36 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:33:41.000000Z
      handler_name    : GoPro SOS  
Input #3, mov,mp4,m4a,3gp,3g2,mj2, from 'GX044183.MP4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    creation_time   : 2016-08-25T23:41:45.000000Z
    firmware        : HD6.01.01.60.00
  Duration: 00:08:03.50, start: 0.000000, bitrate: 66220 kb/s
    Stream #3:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 65926 kb/s, 239.76 fps, 239.76 tbr, 240k tbn, 239.76 tbc (default)
    Metadata:
      creation_time   : 2016-08-25T23:41:45.000000Z
      handler_name    : GoPro H.265
      encoder         : GoPro H.265 encoder
    Stream #3:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:41:45.000000Z
      handler_name    : GoPro AAC  
    Stream #3:2(eng): Data: bin_data (gpmd / 0x646D7067), 33 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:41:45.000000Z
      handler_name    : GoPro MET  
    Stream #3:3(eng): Data: none (fdsc / 0x63736466), 36 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:41:45.000000Z
      handler_name    : GoPro SOS  
Input #4, mov,mp4,m4a,3gp,3g2,mj2, from 'GX054183.MP4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    creation_time   : 2016-08-25T23:49:48.000000Z
    firmware        : HD6.01.01.60.00
  Duration: 00:08:03.48, start: 0.000000, bitrate: 66199 kb/s
    Stream #4:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 65902 kb/s, 239.76 fps, 239.76 tbr, 240k tbn, 239.76 tbc (default)
    Metadata:
      creation_time   : 2016-08-25T23:49:48.000000Z
      handler_name    : GoPro H.265
      encoder         : GoPro H.265 encoder
    Stream #4:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:49:48.000000Z
      handler_name    : GoPro AAC  
    Stream #4:2(eng): Data: bin_data (gpmd / 0x646D7067), 33 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:49:48.000000Z
      handler_name    : GoPro MET  
    Stream #4:3(eng): Data: none (fdsc / 0x63736466), 36 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:49:48.000000Z
      handler_name    : GoPro SOS  
Input #5, mov,mp4,m4a,3gp,3g2,mj2, from 'GX064183.MP4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    creation_time   : 2016-08-25T23:57:52.000000Z
    firmware        : HD6.01.01.60.00
  Duration: 00:05:28.77, start: 0.000000, bitrate: 64980 kb/s
    Stream #5:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 64684 kb/s, 239.76 fps, 239.76 tbr, 240k tbn, 239.76 tbc (default)
    Metadata:
      creation_time   : 2016-08-25T23:57:52.000000Z
      handler_name    : GoPro H.265
      encoder         : GoPro H.265 encoder
    Stream #5:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:57:52.000000Z
      handler_name    : GoPro AAC  
    Stream #5:2(eng): Data: bin_data (gpmd / 0x646D7067), 33 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:57:52.000000Z
      handler_name    : GoPro MET  
    Stream #5:3(eng): Data: none (fdsc / 0x63736466), 36 kb/s (default)
    Metadata:
      creation_time   : 2016-08-25T23:57:52.000000Z
      handler_name    : GoPro SOS  
Input #6, png_pipe, from '/home/hutber/Videos/scaled.png':
  Duration: N/A, bitrate: N/A
    Stream #6:0: Video: png, rgba(pc), 320x327 [SAR 2943:2944 DAR 45:46], 25 tbr, 25 tbn, 25 tbc
File '../Week_7_merged.mp4' already exists. Overwrite ? [y/N] y
Stream mapping:
  Stream #0:0 (hevc) -> concat:in0:v0
  Stream #0:1 (aac) -> concat:in0:a0
  Stream #1:0 (hevc) -> concat:in1:v0
  Stream #1:1 (aac) -> concat:in1:a0
  Stream #2:0 (hevc) -> concat:in2:v0
  Stream #2:1 (aac) -> concat:in2:a0
  Stream #3:0 (hevc) -> concat:in3:v0
  Stream #3:1 (aac) -> concat:in3:a0
  Stream #4:0 (hevc) -> concat:in4:v0
  Stream #4:1 (aac) -> concat:in4:a0
  Stream #5:0 (hevc) -> overlay:overlay
  overlay -> Stream #0:0 (libx264)
  concat:out:a0 -> Stream #0:1 (aac)
Press [q] to stop, [?] for help
[swscaler @ 0xd7aaec0] deprecated pixel format used, make sure you did set range correctly
[libx264 @ 0x7584640] using SAR=1/1
[libx264 @ 0x7584640] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7584640] profile Progressive High, level 5.2, 4:2:0, 8-bit
[libx264 @ 0x7584640] 264 - core 157 r2969 d4099dd - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - 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=18 lookahead_threads=3 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
Output #0, mp4, to '../Week_7_merged.mp4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    firmware        : HD6.01.01.60.00
    encoder         : Lavf58.28.101
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuvj420p(pc, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 239.76 fps, 240k tbn, 239.76 tbc (default)
    Metadata:
      encoder         : Lavc58.53.101 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      encoder         : Lavc58.53.101 aac
[hevc @ 0x78f7dc0] Could not find ref with POC 100:00:10.79 bitrate=27198.8kbits/s speed=0.333x    
frame=579608 fps=143 q=-1.0 Lsize= 1505572kB time=00:40:17.45 bitrate=5101.9kbits/s dup=46 drop=18 speed=0.597x    
video:1459191kB audio:37970kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.561760%
[libx264 @ 0x7584640] frame I:2334  Avg QP:17.89  size:171199
[libx264 @ 0x7584640] frame P:147051 Avg QP:22.49  size:  5517
[libx264 @ 0x7584640] frame B:430223 Avg QP:25.37  size:   659
[libx264 @ 0x7584640] consecutive B-frames:  0.9%  0.2%  0.2% 98.7%
[libx264 @ 0x7584640] mb I  I16..4:  8.8% 63.2% 28.0%
[libx264 @ 0x7584640] mb P  I16..4:  0.3%  0.4%  0.1%  P16..4:  5.3%  1.4%  1.2%  0.0%  0.0%    skip:91.4%
[libx264 @ 0x7584640] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  3.3%  0.2%  0.1%  direct: 0.1%  skip:96.3%  L0:39.5% L1:56.3% BI: 4.1%
[libx264 @ 0x7584640] 8x8 transform intra:60.0% inter:68.4%
[libx264 @ 0x7584640] coded y,uvDC,uvAC intra: 55.6% 57.8% 29.1% inter: 1.1% 0.7% 0.0%
[libx264 @ 0x7584640] i16 v,h,dc,p: 20% 18%  8% 54%
[libx264 @ 0x7584640] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 13% 21%  7%  7%  8%  6%  7%  7%
[libx264 @ 0x7584640] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 21% 18% 10%  8% 14%  9%  6%  5% 10%
[libx264 @ 0x7584640] i8c dc,h,v,p: 58% 18% 17%  7%
[libx264 @ 0x7584640] Weighted P-Frames: Y:0.4% UV:0.2%
[libx264 @ 0x7584640] ref P L0: 67.6% 12.8% 14.9%  4.6%  0.1%
[libx264 @ 0x7584640] ref B L0: 89.5%  9.0%  1.5%
[libx264 @ 0x7584640] ref B L1: 96.1%  3.9%
[libx264 @ 0x7584640] kb/s:4944.75
[aac @ 0x78a6ec0] Qavg: 180.332

Тестовые файлы

https://drive.google.com/drive/folders/187EjGlksHrHo7xBGdbArFEivD4wsqKXt?usp=sharing

#!/bin/bash

checkFolders(){    
    printf "Please select folder:\n"
    select d in */; do test -n "$d" && break; echo ">>> Invalid Selection"; done
}

checkFolders

cd "$d"

filesList=""
for file in $(ls -1v *.MP4);do 
    filesList="${filesList} -i ${file}"
done

videoName="${d/ /_}"

#ffmpeg $filesList -i /home/hutber/Videos/scaled.png -filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a][3:v][3:a][4:v][4:a]concat=n=5:v=1:a=1[vv][a];[vv]overlay=main_w-overlay_w-5:main_h-overlay_h-5[v]" -map "[v]" -map "[a]" ../${videoName%/}_merged.mp4
ffmpeg $filesList -i /home/hutber/Videos/scaled.png -bsf:v h264_mp4toannexb -reset_timestamps 1 -filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a][3:v][3:a][4:v][4:a]concat=n=5:v=1:a=1[vv][a];[vv]overlay=main_w-overlay_w-5:main_h-overlay_h-5[v]" -map "[v]" -map "[a]" ../${videoName%/}_merged.mp4

решение1

Проблема с этой командой заключается в неправильном использовании фильтра наложения, который требует 2 входных видеопотока. У OP был только один и второй, что приводило к наложению видео друг на друга вместо файла png. Также список видеовходов не был полным.

Поэтому правильная команда в этом случае должна быть такой:

ffmpeg -i GX014186.MP4 -i GX014187.MP4 -i GX024187.MP4 -i GX034187.MP4 -i GX044187.MP4 -i GX054187.MP4 -i GX064187.MP4 -i scaled.png -filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a][3:v][3:a][4:v][4:a][5:v][5:a][6:v][6:a]concat=n=7:v=1:a=1[vv][a];[vv][7:v]overlay=main_w-overlay_w-5:main_h-overlay_h-5[v]" -map "[v]" -map "[a]" output.mp4 `

Связанный контент