создавать видео из изображений jpg, используя ffmpeg

4538
floppydisk

Я хочу сделать короткое видео с замедленной съемкой, используя ffmpeg под Ubuntu 12.04 LTS. У меня есть папка, содержащая все изображения с именами DSC_0000.jpg DSC_0001.jpg и так далее. Я нашел этот вопрос ffmpeg: создать видео из изображений, и я пытаюсь запустить ту же команду, как указано здесь:

ffmpeg -i DSC_%d.jpg -vcodec mpeg4 timelapse.avi 

и это не с

DSC_% d.jpg: нет такого файла или каталога

Я также пытался

ffmpeg -i DSC_%04d.jpg -vcodec mpeg4 timelapse.avi 

и он терпит неудачу с той же ошибкой

А также по какой-то причине мой ffmpeg не понимает опцию -start_number, если я запускаю

ffmpeg -start_number 0 -i DSC_%d.jpg -vcodec mpeg4 timelapse.avi 

Я получаю эту ошибку:

Нераспознанная опция 'start_number'

Не удалось установить значение «0» для параметра «start_number»

Буду признателен за любую помощь

UPD1: я снова попробовал вторую команду и теперь по какой-то причине она работает. Но выходной видеофайл немного странный: он запускается нормально, но с каждым кадром качество ухудшается. И становится ужасно в конце видео. В результате видеофайл очень маленький (всего 1,2 Мб, а каждый из 46 кадров - 900 Кб). Но опция -start_number по- прежнему не работает. Вот полный вывод:

$ ffmpeg -i DSC_%04d.jpg -vcodec mpeg4 timelapse.avi ffmpeg version 0.10.12-7:0.10.12-1~precise1 Copyright (c) 2000-2014 the FFmpeg developers built on Apr 26 2014 09:49:36 with gcc 4.6.3 configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.12-1~precise1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static libavutil 51. 35.100 / 51. 35.100 libavcodec 53. 61.100 / 53. 61.100 libavformat 53. 32.100 / 53. 32.100 libavdevice 53. 4.100 / 53. 4.100 libavfilter 2. 61.100 / 2. 61.100 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 6.100 / 0. 6.100 libpostproc 52. 0.100 / 52. 0.100 Input #0, image2, from 'DSC_%04d.jpg': Duration: 00:00:01.84, start: 0.000000, bitrate: N/A Stream #0:0: Video: mjpeg, yuvj422p, 2304x1536 [SAR 300:300 DAR 3:2], 25 fps, 25 tbr, 25 tbn, 25 tbc File 'timelapse.avi' already exists. Overwrite ? [y/N] y Incompatible pixel format 'yuvj422p' for codec 'mpeg4', auto-selecting format 'yuv420p' [buffer @ 0x7134e0] w:2304 h:1536 pixfmt:yuvj422p tb:1/1000000 sar:300/300 sws_param: [buffersink @ 0x70bbe0] auto-inserting filter 'auto-inserted scale 0' between the filter 'src' and the filter 'out' [scale @ 0x6f7a20] w:2304 h:1536 fmt:yuvj422p -> w:2304 h:1536 fmt:yuv420p flags:0x4 Output #0, avi, to 'timelapse.avi': Metadata: ISFT : Lavf53.32.100 Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 2304x1536 [SAR 1:1 DAR 3:2], q=2-31, 200 kb/s, 25 tbn, 25 tbc Stream mapping: Stream #0:0 -> #0:0 (mjpeg -> mpeg4) Press [q] to stop, [?] for help frame= 46 fps= 17 q=31.0 Lsize= 1143kB time=00:00:01.84 bitrate=5090.2kbits/s  video:1137kB audio:0kB global headers:0kB muxing overhead 0.591912%   roman@Z500i5:~/Camera/Thunder/video$ ffmpeg -start_number 0 -i DSC_%04d.jpg -vcodec mpeg4 timelapse.avi ffmpeg version 0.10.12-7:0.10.12-1~precise1 Copyright (c) 2000-2014 the FFmpeg developers built on Apr 26 2014 09:49:36 with gcc 4.6.3 configuration: --arch=amd64 --disable-stripping --enable-pthreads --enable-runtime-cpudetect --extra-version='7:0.10.12-1~precise1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopencv --enable-libopenjpeg --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-postproc --enable-libcdio --enable-x11grab --enable-libx264 --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static libavutil 51. 35.100 / 51. 35.100 libavcodec 53. 61.100 / 53. 61.100 libavformat 53. 32.100 / 53. 32.100 libavdevice 53. 4.100 / 53. 4.100 libavfilter 2. 61.100 / 2. 61.100 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 6.100 / 0. 6.100 libpostproc 52. 0.100 / 52. 0.100 Unrecognized option 'start_number' Failed to set value '0' for option 'start_number' 

Мой ffmpeg устанавливается из этого ppa: https://launchpad.net/~jon-severinsson/+archive/ffmpeg

Вывод из ffmpeg из стандартных репозиториев Ubuntu состоял только из двух последних строк:

Unrecognized option 'start_number' Failed to set value '0' for option 'start_number' 

UPD2: см ответ ниже

4
Пожалуйста, включите полный вывод консоли `ffmpeg`. Я подозреваю, что вы используете поддельный "` ffmpeg` "из форка, который, вероятно, не поддерживает опцию` -start_number`. Выход консоли подтвердит это. LordNeckbeard 9 лет назад 1
По какой-то причине, наиболее известной только разработчикам, для ffmpeg по умолчанию установлено значение качества «мусор». Поэтому, если вы не укажете требуемое качество или битрейт, он будет кодировать его так, как если бы вы хотели отправить его кому-либо, просматривающему Интернет, по модему 14 Кбит / с в 1995 году. Попробуйте использовать параметр коэффициента постоянной скорости: `-crf n`, где n - это число от 1 (наивысшее качество / наименьшее сжатие) до 35 (иш) (качество мусора, совместимо с netscape navigator 1.0). -crf 20 даст вам приблизительно кодирование DVD качества. -start-number, вероятно, является избыточным, если ваши фотографии начинаются с 0. stib 9 лет назад 3
Спасибо за закрытие цикла по вашему вопросу. Тем не менее, он застрял в очереди вопросов без ответа. Формат вопросов и ответов основан на том, что вопросы - это просто вопросы, а решения публикуются в виде ответов. Вы разместили решение как часть вашего вопроса. Не могли бы вы опубликовать свое решение в качестве ответа? Благодарю. fixer1234 8 лет назад 0

1 ответ на вопрос

0
floppydisk

Finally I found a solution, but without ffmpeg. This command does what I wanted:

mencoder "mf://*.jpg" -mf fps=20:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vbitrate=7000 -oac copy -o timelapse.avi 

Seems a little bit overcomplicated, but it does the job :)