Ffmpeg преобразование изображений jpeg в видео

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

все изображения являются yuv420 jpeg, взяты из камеры android. Они сохраняются как отдельные файлы в папке, они все одинакового размера и формата. Они названы как последовательность 7-значных имен, начиная с нуля (так " 0000000.jpg " to " 0001000.jpg", в качестве примера).

Это мой строка (имена папок отредактированы для ясности):

avconv -r 1 -f image2 -i %07d.jpg -vcodec libx264 -crf 18 -preset slower video.mp4

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

однако ffmpeg дает мне это (жирный шрифт указывает на ошибку)

ffmpeg version 0.8.5-6:0.8.5-1, Copyright (c) 2000-2012 the Libav developers
  built on Jan 13 2013 12:05:48 with gcc 4.7.2
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
[mjpeg @ 0x233aea0] overread 8
Input #0, image2, from '%07d.jpg':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: mjpeg, yuvj420p, 640x480 [PAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
File 'video.mp4' already exists. Overwrite ? [y/N] y
[buffer @ 0x233b340] w:640 h:480 pixfmt:yuvj420p
[libx264 @ 0x2339fa0] using SAR=1/1
[libx264 @ 0x2339fa0] using cpu capabilities: MMX2 SSE2Fast FastShuffle SSEMisalign LZCNT
[libx264 @ 0x2339fa0] profile Main, level 3.1
[libx264 @ 0x2339fa0] 264 - core 123 r2189 35cf912 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=8 deblock=1:0:0 analyse=0x1:0x131 me=umh subme=9 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=2 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=0 b_adapt=2 b_bias=0 direct=3 weightb=0 open_gop=1 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=60 rc=crf mbtree=1 crf=18.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.25 aq=1:1.00
Output #0, mp4, to 'video.mp4':
  Metadata:
    encoder         : Lavf53.21.1
    Stream #0.0: Video: libx264, yuvj420p, 640x480 [PAR 1:1 DAR 4:3], q=-1--1, 25 tbn, 25 tbc
Stream mapping:
  Stream #0.0 -> #0.0
Press ctrl-c to stop encoding
[mjpeg @ 0x233aea0] overread 8
frame=    0 fps=  0 q=0.0 Lsize=       0kB time=10000000000.00 bitrate=   0.0kbits/s    
video:0kB audio:0kB global headers:0kB muxing overhead 610.000000%

импорт строк (который красный) являются те, которые говорят:"[mjpeg @ 0x233aea0] overread 8".

Это заставляет меня думать, что, возможно, он пытается читать изображения в формате JPEG движения вместо обычных файлов jpeg, и как-то не. Я пробовал с/без "- f image2", с тем же результатом. И я также пробовал использовать avconv, с тем же результатом.

Я должен отметить, что изображения действительны, и если я конвертирую их все в *.png (дорогостоящий и трудоемкий процесс) все это работает. Но я предпочел бы просто иметь возможность использовать JPEG-файлы без промежуточного преобразования. После всего, что ffmpeg-это для перекодирования.

есть ли у кого-нибудь хороший способ конвертировать *.jpg в видео с использованием ffmpeg?

19
задан Knetic
19.05.2023 1:13 Количество просмотров материала 3416
Распечатать страницу

1 ответ

[mjpeg @ 0x233aea0] overread 8 это ошибка, которая выдается, когда ffmpeg пытается прочитать изображение JPEG (или кадр из потока MJPEG) блок за блоком, но есть еще оставшиеся биты.

в этом случае, даже если ваши изображения могут хорошо отображаться в других зрителях, это то, что FFmpeg не может (или не будет) обрабатывать. Чтобы исправить это, вам нужно повторно сохранить изображения, либо как PNGs, как вы пытались раньше, или как JPEG. Вы можете сделать такое Пакетное преобразование с помощью утилиты, для пример:

for f in *.JPG; do mogrify "$f"; done

это позволит повторно сохранить файлы JPEG под тем же именем. Обратите внимание, что вы потеряете качество в этом процессе, поэтому он не идеален, и я бы пошел с PNGs в качестве промежуточных продуктов, поскольку они без потерь.

кстати: это всегда хорошая идея, чтобы использовать последнюю версию ffmpeg, который вы можете скачать как статическую сборку (просто скачать, извлечь, использовать), или скомпилировать себя. Пакеты, поставляемые с Ubuntu, всегда устарели, и – в зависимости от вашей версии Ubuntu-даже не "реальный" FFmpeg, а libav fork (который можно использовать, но нужно знаете разницу).

не забывайте, что изображения должны иметь последовательные имена при использовании %07d.jpg синтаксис ffmpeg, без пропуска номеров. См. также документация на image2 muxer для больше вариантов.

6
отвечен slhck 2023-05-20 09:01

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх