Попытка согласовать с FFMpeg, но безуспешно - PullRequest
0 голосов
/ 11 марта 2020

Я пытался создать приложение php, которое более или менее действует как видеоредактор. Я бы хотел, чтобы мои пользователи вставляли изображения и видео, а затем объединяли их в определенном порядке и добавляли musi c. Я решил использовать ffmpeg для этой цели.

Мне удалось создать mp4 из этих изображений и добавить musi c к mp4s с помощью следующих команд

$ ffmpeg -r 0.1 -i %05d.morph.jpg output.mp4

$ ffmpeg -i output.mp4 -i audio.mp3 -c:v copy -c:a aac -b:a 128k final.mp4

This дает достойные результаты. Но именно здесь начинаются проблемы.

Я пытался объединить эти созданные mp4s (БЕЗ musi c), но, похоже, не могу этого сделать. Я также не могу сопоставить их с дубликатом себя. (Я использовал демультиплексор concat, как указано в этой ссылке: Как объединить два файла MP4 с помощью FFmpeg? )

$ cat mylist.txt
file 'output.mp4'
file 'vid1.mp4'
file 'output2.mp4'

$ ffmpeg -f concat -safe 0 -i mylist.txt -c copy outputSemi.mp4

В результате получилось видео (соответствующей длины). ), однако воспроизводится только первое видео и повторяется снова и снова, часто с зелеными экранами, смешивающимися между кадрами.

Любая помощь будет полезна.


Рисунок I должен включать результат команды concat

ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.8)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.2.1_2 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-13.jdk/Contents/Home/include/darwin -fno-stack-check' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc70f00bc00] Auto-inserting h264_mp4toannexb bitstream filter
Input #0, concat, from 'mylist.txt':
  Duration: N/A, start: 0.000000, bitrate: 1507 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 4864x3648 [SAR 1:1 DAR 4:3], 1507 kb/s, 0.10 fps, 0.10 tbr, 16384 tbn, 0.20 tbc
    Metadata:
      handler_name    : VideoHandler
File 'outputFFMPEG.mp4' already exists. Overwrite ? [y/N] y
Output #0, mp4, to 'outputFFMPEG.mp4':
  Metadata:
    encoder         : Lavf58.29.100
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 4864x3648 [SAR 1:1 DAR 4:3], q=2-31, 1507 kb/s, 0.10 fps, 0.10 tbr, 16384 tbn, 16384 tbc
    Metadata:
      handler_name    : VideoHandler
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fc70e80b600] Auto-inserting h264_mp4toannexb bitstream filter
frame=    5 fps=0.0 q=-1.0 Lsize=    9543kB time=00:00:40.00 bitrate=1954.4kbits/s speed= 169x    
video:9542kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.009467%
...