Почему не используется ffmpeg для создания 2x2-видео «мозаичной сетки», работающей на меня?


1

На моем ПК с Windows 7 я широко использовал Windows Live Movie Maker и Windows Media Encoder для создания и редактирования видео (я также использовал другое программное обеспечение, такое как «Showbiz», «Super C» и «AVIdemux»). Недавно мне захотелось создать «сетчатую мозаику» в 2x2 компоновке исходных видео в целевом видео. После некоторого размахивания и скрежещения зубов я узнал о ffmpeg, загрузил Windows «build» с сайта ffmpeg.org и установил его на свой компьютер. Я попытался использовать команду в окне cmd (иначе «DOS») для простой задачи конвертации WMV-видео (с необычным соотношением сторон) в AVI, и это получилось отлично. Сначала выходное изображение было довольно низкоуровневым, но добавив -b: v 3M исправил это. Затем, для моей реальной цели, следуя этому примеру, я нашел онлайн, все как одну строку:

ffmpeg -i 1.avi -i 2.avi -i 3.avi -i 4.avi -filter_complex "nullsrc = size = 640x480 [base]; [0: v] setpts = PTS-STARTPTS, scale = 320x240 [upperleft]; [1: v] setpts = PTS-STARTPTS, scale = 320x240 [upperright]; [2: v] setpts = PTS-STARTPTS, scale = 320x240 [lowerleft]; [3: v] setpts = PTS-STARTPTS, scale = 320x240 [lowerright]; [base] [upperleft] overlay = shortest = 1 [tmp1]; [tmp1] [upperright] overlay = shortest = 1: x = 320 [tmp2]; [tmp2] [lowerleft] overlay = shortest = 1: y = 240 [tmp3]; [tmp3] [lowerright] overlay = shortest = 1: x = 320: y = 240 "-c: v libx264 output.mkv

Исходя из этого, я попробовал свою собственную команду в окне cmd, таким образом:

ffmpeg -i PatrShdY.wmv -i TJC.wmv -i TwSlRawD.wmv -i NightmrC.wmv -filter_complex "nullsrc = size = 1056x594 [base]; [0: v] setpts = PTS-STARTPTS, масштаб = 528x297 [ul]; [1: v] setpts = PTS-STARTPTS, scale = 528x297 [ur]; [2: v] setpts = PTS-STARTPTS, масштаб = 528x297 [11]; [3: v] setpts = PTS-STARTPTS, scale = 528x297 [lr]; [base] [ul] overlay = shortest = 1 [t1]; [t1] [ur] overlay = shortest = 1: x = 528 [t2]; [t2] [ll] overlay = shortest = 1: y = 297 [t3]; [t3] [lr] overlay = shortest = 1: x = 528: y = 297 "-b: v 3M mos1.wmv

В« репортаже »упоминаются некоторые« угадывающие »проблемы со звуком, но это не было Большая проблема заключалась в том, что он неоднократно упоминал «frame = 1» вместо увеличения числа, и действительно, результат mos1.wmv имел четыре изображения, помещенные правильно, но которые были не более чем одним неподвижным изображением из каждого исходного видео. четыре исходных видеоролика длились 30 секунд, а выход «работал» в течение 30 секунд, но ничего не показывал, показывая один набор неподвижных изображений. Размер выходного файла около 500 кб соответствовал этому. Полный репортаж:

ffmpeg version N-87867-g0655810072 Copyright (c) 2000-2017 the FFmpeg developers 

    built with gcc 7.2.0 (GCC) 
    configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --e 
nable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libblur 
ay --enable-libfreetype --enable-libmp3lame --enable-libopenjpeg --enable-libopu 
s --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --ena 
ble-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-lib 
x264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-z 
lib --enable-gmp --enable-libvidstab --enable-cuda --enable-cuvid --enable-d3d11 
va --enable-nvenc --enable-dxva2 --enable-avisynth --enable-libmfx 
    libavutil  55. 79.100/55. 79.100 
    libavcodec  57.108.100/57.108.100 
    libavformat 57. 84.100/57. 84.100 
    libavdevice 57. 11.100/57. 11.100 
    libavfilter  6.108.100/6.108.100 
    libswscale  4. 9.100/4. 9.100 
    libswresample 2. 10.100/2. 10.100 
    libpostproc 54. 8.100/54. 8.100 
[wmv3 @ 000000000048b200] Extra data: 8 bits left, value: 0 
Guessed Channel Layout for Input Stream #0.0 : mono 
Input #0, asf, from 'PatrShdY.wmv': 
    Metadata: 
    title   : In the woodshed 
    WMFSDKNeeded : 0.0.0.0000 
    DeviceConformanceTemplate: [email protected] 
    WMFSDKVersion : 12.0.7601.17514 
    IsVBR   : 1 
    VBR Peak  : 2156613 
    Buffer Average : 1555 
    Duration: 00:00:30.02, start: 0.000000, bitrate: 2496 kb/s 
    Stream #0:0(eng): Audio: wmav2 (a[1][0][0]/0x0161), 32000 Hz, mono, fltp, 
20 kb/s 
    Stream #0:1(eng): Video: wmv3 (Main) (WMV3/0x33564D57), yuv420p, 1024x576, 
2441 kb/s, 30 fps, 30 tbr, 1k tbn, 1k tbc 
[wmv3 @ 0000000000459ea0] Extra data: 8 bits left, value: 0 
Guessed Channel Layout for Input Stream #1.0 : stereo 
Input #1, asf, from 'TJC.wmv': 
    Metadata: 
    title   : White -- 'nuff said!! 
    WMFSDKNeeded : 0.0.0.0000 
    DeviceConformanceTemplate: [email protected] 
    WMFSDKVersion : 12.0.7601.17514 
    IsVBR   : 1 
    VBR Peak  : 2181663 
    Buffer Average : 2514 
    Duration: 00:00:30.02, start: 0.000000, bitrate: 2481 kb/s 
    Stream #1:0(eng): Audio: wmav2 (a[1][0][0]/0x0161), 32000 Hz, stereo, fltp 
, 24 kb/s 
    Stream #1:1(eng): Video: wmv3 (Main) (WMV3/0x33564D57), yuv420p, 1024x576, 
2441 kb/s, 30 fps, 30 tbr, 1k tbn, 1k tbc 
[wmv3 @ 0000000000506360] Extra data: 8 bits left, value: 0 
Input #2, asf, from 'TwSlRawD.wmv': 
    Metadata: 
    WMFSDKNeeded : 0.0.0.0000 
    DeviceConformanceTemplate: M0 
    WMFSDKVersion : 12.0.7601.17514 
    IsVBR   : 0 
    Duration: 00:00:30.04, start: 0.000000, bitrate: 2276 kb/s 
    Stream #2:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 1024x576, 
90k tbr, 90k tbn, 90k tbc 
    Metadata: 
     comment   : Movie/video screen capture 
    Stream #2:1: Video: wmv3 (Main) (WMV3/0x33564D57), yuv420p, 1024x576, 2200 
kb/s, 25 fps, 25 tbr, 1k tbn, 1k tbc 
    Stream #2:2: Audio: wmapro (b[1][0][0]/0x0162), 32000 Hz, stereo, fltp, 32 
kb/s 
[wmv3 @ 00000000004cc1a0] Extra data: 8 bits left, value: 0 
Guessed Channel Layout for Input Stream #3.0 : stereo 
Input #3, asf, from 'NightmrC.wmv': 
    Metadata: 
    title   : In a Nightmare 
    WMFSDKNeeded : 0.0.0.0000 
    DeviceConformanceTemplate: [email protected] 
    WMFSDKVersion : 12.0.7601.17514 
    IsVBR   : 1 
    VBR Peak  : 3032434 
    Buffer Average : 1675 
    Duration: 00:00:30.02, start: 0.000000, bitrate: 3483 kb/s 
    Stream #3:0(eng): Audio: wmav2 (a[1][0][0]/0x0161), 32000 Hz, stereo, fltp 
, 24 kb/s 
    Stream #3:1(eng): Video: wmv3 (Main) (WMV3/0x33564D57), yuv420p, 1024x576, 
3441 kb/s, 30 fps, 30 tbr, 1k tbn, 1k tbc 
[wmv3 @ 0000000000451fe0] Extra data: 8 bits left, value: 0 
[wmv3 @ 0000000000504b60] Extra data: 8 bits left, value: 0 
[wmv3 @ 00000000004ccb40] Extra data: 8 bits left, value: 0 
Stream mapping: 
    Stream #0:1 (wmv3) -> setpts (graph 0) 
    Stream #1:1 (wmv3) -> setpts (graph 0) 
    Stream #2:0 (mjpeg) -> setpts (graph 0) 
    Stream #3:1 (wmv3) -> setpts (graph 0) 
    overlay (graph 0) -> Stream #0:0 (msmpeg4) 
    Stream #1:0 -> #0:1 (wmav2 (native) -> wmav2 (native)) 
Press [q] to stop, [?] for help 
[swscaler @ 00000000034d1f20] deprecated pixel format used, make sure you did se 
t range correctly 
Output #0, asf, to 'mos2.wmv': 
    Metadata: 
    title   : Patrik Janovic in the woodshed 
    WMFSDKNeeded : 0.0.0.0000 
    DeviceConformanceTemplate: [email protected] 
    WMFSDKVersion : 12.0.7601.17514 
    IsVBR   : 1 
    VBR Peak  : 2156613 
    Buffer Average : 1555 
    WM/EncodingSettings: Lavf57.84.100 
    Stream #0:0: Video: msmpeg4v3 (msmpeg4) (MP43/0x3334504D), yuv420p(progres 
sive), 1056x594 [SAR 1:1 DAR 16:9], q=2-31, 3000 kb/s, 25 fps, 1k tbn, 25 tbc (d 
efault) 
    Metadata: 
     encoder   : Lavc57.108.100 msmpeg4 
    Side data: 
     cpb: bitrate max/min/avg: 0/0/3000000 buffer size: 0 vbv_delay: -1 
    Stream #0:1(eng): Audio: wmav2 (a[1][0][0]/0x0161), 32000 Hz, stereo, fltp 
, 128 kb/s 
    Metadata: 
     encoder   : Lavc57.108.100 wmav2 
frame= 1 fps=0.0 q=6.1 size=  33kB time=00:00:00.25 bitrate=1044.1kbits/s 
frame= 1 fps=0.8 q=6.1 size=  33kB time=00:00:01.21 bitrate= 219.8kbits/s 
frame= 1 fps=0.6 q=6.1 size=  33kB time=00:00:02.30 bitrate= 116.0kbits/s 
frame= 1 fps=0.5 q=6.1 size=  33kB time=00:00:03.60 bitrate= 74.1kbits/s 
frame= 1 fps=0.4 q=6.1 size=  33kB time=00:00:04.86 bitrate= 55.0kbits/s 
frame= 1 fps=0.3 q=6.1 size=  33kB time=00:00:06.01 bitrate= 44.4kbits/s 
frame= 1 fps=0.3 q=6.1 size=  33kB time=00:00:07.74 bitrate= 34.5kbits/s 
frame= 1 fps=0.2 q=6.1 size=  33kB time=00:00:09.15 bitrate= 29.2kbits/s 
frame= 1 fps=0.2 q=6.1 size=  33kB time=00:00:10.24 bitrate= 26.1kbits/s 
frame= 1 fps=0.2 q=6.1 size=  33kB time=00:00:12.35 bitrate= 21.6kbits/s 
frame= 1 fps=0.2 q=6.1 size=  33kB time=00:00:13.05 bitrate= 20.5kbits/s 
frame= 1 fps=0.2 q=6.1 size=  33kB time=00:00:14.46 bitrate= 18.5kbits/s 
frame= 1 fps=0.1 q=6.1 size=  33kB time=00:00:16.19 bitrate= 16.5kbits/s 
frame= 1 fps=0.1 q=6.1 size=  33kB time=00:00:17.98 bitrate= 14.9kbits/s 
frame= 1 fps=0.1 q=6.1 size=  33kB time=00:00:18.88 bitrate= 14.2kbits/s 
frame= 1 fps=0.1 q=6.1 size=  33kB time=00:00:20.28 bitrate= 13.2kbits/s 
frame= 1 fps=0.1 q=6.1 size=  33kB time=00:00:21.69 bitrate= 12.3kbits/s 
frame= 1 fps=0.1 q=6.1 size=  33kB time=00:00:23.26 bitrate= 11.5kbits/s 
frame= 1 fps=0.1 q=6.1 size=  33kB time=00:00:24.32 bitrate= 11.0kbits/s 
frame= 1 fps=0.1 q=6.1 size=  33kB time=00:00:25.08 bitrate= 10.7kbits/s 
frame= 1 fps=0.1 q=6.1 size=  33kB time=00:00:25.98 bitrate= 10.3kbits/s 
frame= 1 fps=0.1 q=6.1 size=  33kB time=00:00:28.49 bitrate= 9.4kbits/s 
frame= 1 fps=0.1 q=6.1 size=  33kB time=00:00:29.95 bitrate= 8.9kbits/s 
frame= 1 fps=0.1 q=6.1 Lsize=  524kB time=00:00:29.95 bitrate= 143.2kbits/s speed=2.54x 
video:31kB audio:470kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 4.417643% 

Я решил попробовать пример, более близкий к примеру, который я бы использовал ound онлайн, используя пару видеороликов AVI с размером кадра 320x240. У более короткого из двух источников было 4 + минуты, так что это ожидаемая продолжительность вывода. Я поставил два источника в сетку 2x2 с «шахматной доской». В ретроспективе, я полагаю, мне не нужно было НАЗВАТЬ каждого из них дважды, но я новичок в ffmpeg, так что не ненавидите меня! Моя команда для этого:

FFmpeg -i asianpho.avi -i WareMorg.avi -i WareMorg.avi -i asianpho.avi -filter_complex «nullsrc = размер = 640x480 [база]; [0: V] = setpts PTS -STARTPTS, scale = 320x240 [ul]; [1: v] setpts = PTS-STARTPTS, scale = 320x240 [ur]; [2: v] setpts = PTS-STARTPTS, scale = 320x240 [ll]; [3: v ] setpts = PTS-STARTPTS, scale = 320x240 [lr]; [base] [ul] overlay = shortest = 1 [tmp1]; [tmp1] [ur] overlay = shortest = 1: x = 320 [tmp2]; [tmp2 ] [ll] overlay = shortest = 1: y = 240 [tmp3]; [tmp3] [lr] overlay = shortest = 1: x = 320: y = 240 "-c: v libx264 output.mkv

результат ЭТО сообщил о создании 4 + минут видео (и не все «frame = 1») - это были не неподвижные изображения, но это были правильно РАЗМЕЩЕННЫЕ изображения, которые были мерцающим, мигающим беспорядочным беспорядком с завинчиванием поток, размер файла 41.4 МиллибарЯ просил, чтобы предоставить полный отчет о нем:

https://pastebin.com/6DrjGPmA

Так что я делаю, или, не так? Как я могу заставить его работать?

  0

В журнале нет ошибок. Я подозреваю, что WMV не могут быть правильно проанализированы ffmpeg. 19 окт. 172017-10-19 05:27:28

  0

@AlanRat - колодец стрелять. Извините за этот ответ. Он не был преднамеренным и автоматически включался системой. Я не вижу немедленного исправления в моих элементах управления, но я отредактирую один из ваших ответов, чтобы включить ваш ответ из комментария и восстановить его. Это должно хотя бы дать вам ответный ответ. Я также заберусь, чтобы очистить его, поскольку это была специальная проблема, а не то, что действительно должно было ударить по автоматическому запрету. 22 окт. 172017-10-22 04:25:42

  0

Хорошо, похоже, что вы вернули свой ответ и вопрос был достаточно, чтобы система решила, что вы не очень рисковали для ответов ... yay !!! 22 окт. 172017-10-22 04:38:37

1

Мне пришло в голову, что я мог бы «обойти» проблему.

Мои исходные файлы - все файлы WMV, созданные Windows Media Encoder (главным образом) и Windows Live Movie Maker, оба из которых могут ТОЛЬКО производить этот тип файла.

Как мой первый пробный запуск с ffmpeg состоял в том, чтобы преобразовать отдельный один из этих файлов WMV в другой тип, а THAT был успешным, я решил использовать ffmpeg для преобразования каждого исходного файла отдельно в MP4. Тогда эти файлы действительно могут быть успешно сформированы в «сетку мозаики» с ffmpeg.