Как изменить частоту кадров аудио с помощью ffmpeg? - PullRequest
0 голосов
/ 11 февраля 2020

Со страниц справочника ffmpeg:

-s[:stream_specifier] size (input/output,per-stream)
    Set frame size.

    As an input option, this is a shortcut for the video_size private option, recognized by some demuxers for which the frame size is either not stored in the file or is configurable -- e.g.
    raw video or video grabbers.

    As an output option, this inserts the "scale" video filter to the end of the corresponding filtergraph. Please use the "scale" filter directly to insert it at the beginning or some other
    place.

    The format is wxh (default - same as source).

[...]

-r[:stream_specifier] fps (input/output,per-stream)
    Set frame rate (Hz value, fraction or abbreviation).

    As an input option, ignore any timestamps stored in the file and instead generate timestamps assuming constant frame rate fps.  This is not the same as the -framerate option used for some
    input formats like image2 or v4l2 (it used to be the same in older versions of FFmpeg).  If in doubt use -framerate instead of the input option -r.

    As an output option, duplicate or drop input frames to achieve constant output frame rate fps.

Таким образом, эти два параметра должны изменить размер кадра и частоту кадров моего аудиопотока, верно?

Хорошо посмотрите, что происходит когда я фиксирую размер кадра на 1024 и меняю частоту кадров:

$ ffmpeg -i in.mp3 -s:a 1024 -r:a 15 out.wav
...
size=    2592kB time=00:00:15.04 bitrate=1411.3kbits/s speed= 262x 

$ ffmpeg -i in.mp3 -s:a 1024 -r:a 30 out.wav
...
size=    2592kB time=00:00:15.04 bitrate=1411.3kbits/s speed= 277x 

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

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Таким образом, эти два параметра должны изменить размер и частоту кадров моего аудиопотока, верно?

-s и -r - это параметры видео, а не параметры звука.

Из той же документации, которую вы цитировали (man ffmpeg):

   Video Options
       -vframes number (output)
           Set the number of video frames to output. This is an obsolete alias
           for "-frames:v", which you should use instead.

       -r[:stream_specifier] fps (input/output,per-stream)
           Set frame rate (Hz value, fraction or abbreviation).

        […]

       -s[:stream_specifier] size (input/output,per-stream)
           Set frame size.

Ссылаясь на fftools/ffmpeg_opt.c:

/* video options */
{ "vframes",      OPT_VIDEO | HAS_ARG  | OPT_PERFILE | OPT_OUTPUT,           { .func_arg = opt_video_frames },
    "set the number of video frames to output", "number" },
{ "r",            OPT_VIDEO | HAS_ARG  | OPT_STRING | OPT_SPEC |
                  OPT_INPUT | OPT_OUTPUT,                                    { .off = OFFSET(frame_rates) },
    "set frame rate (Hz value, fraction or abbreviation)", "rate" },
{ "s",            OPT_VIDEO | HAS_ARG | OPT_SUBTITLE | OPT_STRING | OPT_SPEC |
                  OPT_INPUT | OPT_OUTPUT

Эти недостатки OPT_AUDIO.

Как изменить размер / частоту кадров моего аудиофайла?

Мне кажется, вы ищете asetnsamples , atempo / резиновая полоса , asetpts в зависимости от того, что вы хотите сделать точно.

0 голосов
/ 11 февраля 2020

Количество выборок в кадре определяется кодированием и может быть изменено. Частота дискретизации измеряется в образцах в секунду. Изменение частоты дискретизации меняет числитель, а не знаменатель. То есть это не повлияет на время.

Вы ищете фильтр атемпо, если ваша цель - ускорить звук.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...