Как установить выходную частоту кадров "так же, как источник" в ffmpeg

ffmpeg -i input.3gp -someoptions output.flv

по умолчанию всегда будет использовать частоту кадров 30 для вывода независимо от частоты кадров исходного файла.

Я знаю, как установить заданную частоту кадров, например, "-r 15" для 15 кадров в секунду, но как мне установить частоту кадров на "такую ​​же, как у источника"?

Вот вывод из ffmpeg:

$ ffmpeg -i video7741.3gp -ar 22050 video7741.flv
ffmpeg version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
  built on Jun 12 2012 16:37:58 with gcc 4.6.3
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video7741.3gp':
  Metadata:
    major_brand     : 3gp5
    minor_version   : 768
    compatible_brands: 3gp53gp43g2aisom
    creation_time   : 2011-07-13 19:45:38
  Duration: 00:00:08.96, start: 0.000000, bitrate: 78 kb/s
    Stream #0.0(eng): Video: h263, yuv420p, 128x96 [PAR 12:11 DAR 16:11], 64 kb/s, 7.46 fps, 29.97 tbr, 15750 tbn, 29.97 tbc
    Metadata:
      creation_time   : 2011-07-13 19:45:38
    Stream #0.1(eng): Audio: amrnb, 8000 Hz, 1 channels, flt, 12 kb/s
    Metadata:
      creation_time   : 2011-07-13 19:45:38
File 'video7741.flv' already exists. Overwrite ? [y/N] y
[buffer @ 0x91db320] w:128 h:96 pixfmt:yuv420p
Incompatible sample format 'flt' for codec 'adpcm_swf', auto-selecting format 's16'
Output #0, flv, to 'video7741.flv':
  Metadata:
    major_brand     : 3gp5
    minor_version   : 768
    compatible_brands: 3gp53gp43g2aisom
    creation_time   : 2011-07-13 19:45:38
    encoder         : Lavf53.21.0
    Stream #0.0(eng): Video: flv, yuv420p, 128x96 [PAR 12:11 DAR 16:11], q=2-31, 200 kb/s, 1k tbn, 29.97 tbc
    Metadata:
      creation_time   : 2011-07-13 19:45:38
    Stream #0.1(eng): Audio: adpcm_swf, 22050 Hz, 1 channels, s16, 88 kb/s
    Metadata:
      creation_time   : 2011-07-13 19:45:38
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press ctrl-c to stop encoding
Warning, using s16 intermediate sample format for resampling
Multiple frames in a packet from stream 1
frame=   66 fps=  0 q=5.0 Lsize=     194kB time=8.74 bitrate= 181.4kbits/s    
video:92kB audio:97kB global headers:0kB muxing overhead 2.364636%

3 ответа

Обычно частота кадров автоматически устанавливается на «такую ​​же, как у источника». Пока вы не укажете никакихопция, которая устанавливает определенную фиксированную частоту кадров.

Одним заметным исключением является случай, когда (1) ваш исходный формат использует переменную частоту кадров и (2) по умолчанию используется фиксированная частота кадров для выходного формата (например, это происходит с MP4). Чтобы получить в этом случае частоту кадров «такую ​​же, как у источника» , вы делаете (согласно этому ответу ):

      ffmpeg -i input.3gp -vsync vfr output.flv

Без этой опции будет использоваться частота кадров по умолчанию, равная частоте кадров контейнера исходного файла. Частота кадров контейнера — это максимальное значение, которое может иметь переменная частота кадров исходного файла. Чтобы компенсировать случаи, когда переменная частота кадров ниже,затем дублирует некоторые входные кадры в выходной файл. Это приводит к увеличению выходного файла (7% в одном тесте, который я проводил).

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

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

Много лет спустя, но я попал сюда через Google, так что я все равно отвечу. Вы положили -re перед вводом, например ffmpeg -re -i input.3gp -someoptions output.flv

Из документов ffmpeg: https://www.ffmpeg.org/ffmpeg-all.html

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