Конкат-файл изображения ffmpeg с различными расширениями

Я работал с ffmpeg, и у меня это получалось идеально несколько раз, но в последнее время я столкнулся с проблемой, когда все изображения из моего текстового файла не используются.

Мой текстовый файл выглядит как -

ffconcat version 1.0
file 'gallery-house-77-west-55th-street-01.jpg'
duration 4.44
file 'img03.jpg'
duration 4.44
file 'inside.png'
duration 4.44
file 'placeholder.png'

(количество файлов, имена файлов и расширения всегда будут отличаться)

И я пробовал несколько комбинаций, но на данный момент моя функция ffmpeg выглядит так:

ffmpeg -i audio.mp3 -safe 0 -f concat -i paths.txt -c:a copy -c:v libx264 \
-vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,fps=25,format=yuv420p" -vsync vfr -movflags +faststart -y output.mp4 2>&1');

При попытке запустить видео, кажется, конвертируется, но имеет различные странные поведения - иногда отображается только средний файл (изображение) в списке, или только первые 2 отображаются / отображаются.

Звук воспроизводится правильно, хотя.

Я попытался установить частоту кадров для входа, и я также попытался установить его для вывода, но это приводит к более странному поведению.

Это то, что отражается при запуске моей вышеупомянутой команды ffmpeg -

 libavutil      56. 15.100 / 56. 15.100
  libavcodec     58. 19.100 / 58. 19.100
  libavformat    58. 13.100 / 58. 13.100
  libavdevice    58.  4.100 / 58.  4.100
  libavfilter     7. 18.100 /  7. 18.100
  libswscale      5.  2.100 /  5.  2.100
  libswresample   3.  2.100 /  3.  2.100
  libpostproc    55.  2.100 / 55.  2.100
[mp3 @ 0xb46780] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'audio.mp3':
  Metadata:
    encoder         : Lavf57.71.100
  Duration: 00:00:19.98, start: 0.000000, bitrate: 48 kb/s
    Stream #0:0: Audio: mp3, 22050 Hz, mono, fltp, 48 kb/s
Input #1, concat, from 'paths.txt':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #1:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 754x424 [SAR 72:72 DAR 377:212], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
  Stream #1:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
  Stream #0:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
[swscaler @ 0xba25c0] deprecated pixel format used, make sure you did set range correctly
[libx264 @ 0xb710c0] using SAR=3393/3392
[libx264 @ 0xb710c0] using cpu capabilities: none!
[libx264 @ 0xb710c0] profile High, level 3.1
[libx264 @ 0xb710c0] 264 - core 155 r2901 7d0ff22 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - 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=22 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 'output.mp4':
  Metadata:
    encoder         : Lavf58.13.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 3393:3392 DAR 377:212], q=-1--1, 25 fps, 12800 tbn, 25 tbc
    Metadata:
      encoder         : Lavc58.19.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1: Audio: mp3 (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 48 kb/s
[swscaler @ 0xb93140] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0xb93140] Warning: data is not aligned! This can lead to a speed loss
[mjpeg @ 0xb6e200] mjpeg: unsupported coding type (cd)
[mjpeg @ 0xb6e200] mjpeg: unsupported coding type (c8)
[mjpeg @ 0xb6e200] Found EOI before any SOF, ignoring
[mjpeg @ 0xb6e200] mjpeg: unsupported coding type (c7)
Error while decoding stream #1:0: Invalid data found when processing input
[mjpeg @ 0xb6e200] invalid id 94
Error while decoding stream #1:0: Invalid data found when processing input
[mp4 @ 0xb6f8c0] Starting second pass: moving the moov atom to the beginning of the file
frame=    1 fps=0.0 q=28.0 Lsize=     179kB time=00:00:19.95 bitrate=  73.6kbits/s speed=44.1x    
video:58kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.446521%
[libx264 @ 0xb710c0] frame I:1     Avg QP:28.86  size: 58683
[libx264 @ 0xb710c0] mb I  I16..4: 21.2% 59.8% 19.0%
[libx264 @ 0xb710c0] 8x8 transform intra:59.8%
[libx264 @ 0xb710c0] coded y,uvDC,uvAC intra: 50.5% 65.2% 31.6%
[libx264 @ 0xb710c0] i16 v,h,dc,p: 10% 60%  3% 28%
[libx264 @ 0xb710c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 27% 26%  4%  4%  4%  6%  4%  7%
[libx264 @ 0xb710c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 33% 10%  5%  6%  5%  8%  5%  7%
[libx264 @ 0xb710c0] i8c dc,h,v,p: 47% 34% 11%  8%
[libx264 @ 0xb710c0] kb/s:11736.60

Есть идеи, что приводит к сбою последовательности изображений?

РЕДАКТИРОВАТЬ

После некоторой дополнительной отладки, я думаю, это может быть связано с тем, что все файлы не имеют одинакового расширения. Как я могу сделать так, чтобы это не должно было быть так, или это уже настройка по умолчанию, и проблема еще где?

РЕДАКТИРОВАТЬ 2

Я могу заставить его работать, когда все расширения изображения одинаковы, но когда он получает png или любое другое расширение изображения, он рендерит фильм, но фильм останавливается (не полностью), когда он попадает в этот кадр. Это происходит, когда я - 1. помещаю все jpgs перед png 2. запускаю следующую команду ----

ffmpeg -safe 0 -f concat -i paths.txt -c:v libx264 \
-vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -pix_fmt yuv420p -movflags +faststart -y output.mp4 2>&1

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

Как я могу исправить это так, чтобы он позволял смешивать любые файлы изображений?

1 ответ

Невозможно. Это не столько разные расширения, сколько разные кодеки. В случае изображений расширение отслеживает кодеки.

Вы должны будете преобразовать все входные данные в один и тот же кодек. Я рекомендую PNG.

Другие вопросы по тегам