
Exemplo de vídeo:https://youtu.be/Ib_CxhxOpxI
Estou usando o seguinte comando:
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
Este comando funcionou com os vídeos anteriores. Mas os vídeos desta semana parecem mesclar todos os vídeos em um.
Isso quer dizer que você pode ver nas bordas do vídeo que todos os vídeos estão sobrepostos uns aos outros.
Parece que apenas um vídeo foi renderizado, mas na verdade todos eles foram renderizados, mas com um sistema de camadas estranho.
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
Arquivos de teste
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
Responder1
O problema com este comando é o uso incorreto do filtro de sobreposição que requer 2 fluxos de vídeo de entrada. O OP tinha apenas um e o segundo, o que fazia com que os vídeos fossem sobrepostos um sobre o outro em vez de um arquivo png. Além disso, a lista de entradas de vídeo não estava completa.
Portanto, o comando correto neste caso deve ser
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
`