2
ffmpeg -r 0.15 -qscale 2 -i /var/www/44693/%0d.jpg /var/www/44693/output11.mp4

С помощью этой команды я создаю видео из изображений, но первое изображение меняется так быстро. Другие просто в порядке.

Вот созданное видео.

Вывести в виде текста:

root@li465-71:~# ffmpeg -r 0.15 -qscale 2 -i /var/www/44693/%0d.jpg /var/www/446                                                                                        93/output11.mp4
ffmpeg version 0.8.1-4:0.8.1-0ubuntu1, Copyright (c) 2000-2011 the Libav develop                                                                                        ers
  built on Mar 22 2012 05:29:10 with gcc 4.6.3
This program is not developed anymore and is only provided for compatibility. Us                                                                                        e avconv instead (see Changelog for the list of incompatible changes).
[image2 @ 0x85dcaa0] max_analyze_duration reached

Seems stream 0 codec frame rate differs from container frame rate: 0.15 (3/20) -                                                                                        > 0.75 (3/4)
Input #0, image2, from '/var/www/44693/%0d.jpg':
  Duration: 00:01:13.33, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: mjpeg, yuvj420p, 800x600 [PAR 1:1 DAR 4:3], 0.15 fps, 0.                                                                                        75 tbr, 0.15 tbn, 0.15 tbc
File '/var/www/44693/output11.mp4' already exists. Overwrite ? [y/N] y
Incompatible pixel format 'yuvj420p' for codec 'mpeg4', auto-selecting format 'yuv420p'
[buffer @ 0x85df820] w:800 h:600 pixfmt:yuvj420p
[avsink @ 0x85de240] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src'                                                                             and the filter 'out'
[scale @ 0x85de680] w:800 h:600 fmt:yuvj420p -> w:800 h:600 fmt:yuv420p flags:0x4
Output #0, mp4, to '/var/www/44693/output11.mp4':
  Metadata:
    encoder         : Lavf53.21.0
    Stream #0.0: Video: mpeg4, yuv420p, 800x600 [PAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 3 tbn,                                                                             0.75 tbc
Stream mapping:
  Stream #0.0 -> #0.0
Press ctrl-c to stop encoding
frame=   50 fps=  0 q=2.0 Lsize=     949kB time=66.67 bitrate= 116.6kbits/s dup=39 drop=0                                                                               
video:948kB audio:0kB global headers:0kB muxing overhead 0.125724%

3 ответа3

5

Это баг, я это заметил сам. FFmpeg всегда выводит первое и второе изображения последовательно, любое выбранное вами время включается только после второго изображения. Например, если у вас есть один кадр для вывода каждые десять секунд, и вы делаете фильм со скоростью 25 кадров в секунду, первое изображение будет вашим первым кадром, ваше второе изображение начнется через 40 мс и станет вторым кадром. После этого второй кадр будет правильно продублирован с точностью до десяти секунд (10,040???). Я обошел это путем дублирования первого кадра.

2

Для начала:

  • -qscale не является параметром ввода и должен быть помещен после -i

  • Опция -qscale предназначена для видео MPEG-4 Part II, а не для видео h.264, которое по умолчанию использует mp4 . Это, вероятно, будет проигнорировано. Используйте -crf 20 (или другие нормальные значения от 19 до 24), чтобы изменить качество.

  • Ваш ввод неверно проанализирован, возможно, попытайтесь форсировать image2:

    ffmpeg -r 0.15 -f image2 -i /var/www/44693/%0d.jpg /var/www/44693/output11.mp4
    
  • В любом случае, частота кадров вашего кодека и частота кадров контейнера не совпадают, чего не должно быть.

  • Если это не помогло, используйте более свежую версию FFmpeg. Для Ubuntu следуйте этому руководству .

1

Похоже, это ошибка, см. Https://ffmpeg.org/trac/ffmpeg/ticket/1925. Чтобы обойти эту проблему, нужно использовать «-vf fps = XX» вместо «-r» (или дублировать первый кадр),

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .