Значение вывода ffmpeg (tbc, tbn, tbr) [закрыто]

Есть способ сделать то, что вы хотите, используя только scanf:

int readCoefficents(double complex *c) {
    int i = 0;
    double real;
    double img;
    char buf[2];
    while (scanf("%1[\n]", buf) == 0) {         // loop until a blank line or EOF
        if (scanf("%lf %lf", &real, &img) == 2) // read two floats
            c[i++] = real + img * I;
        scanf("%*[^\n]");                       // skip the rest of the line
        scanf("%*1[\n]");                       // and the newline
    }
    c[i++] = 1 + 0*I; // most significant coefficient is assumed to be 1
    return i;
}

Если пользователь вводит только 1 поплавок в строке, он будет читать следующую строку для второго значения. Если какой-либо случайный мусор введен, он перейдет к новой строке и повторит попытку со следующей строкой. В противном случае он просто начнет считывать пары значений float до тех пор, пока пользователь не войдет в пустую строку или не достигнет EOF.

147
задан paper1111 18 July 2018 в 13:15
поделиться

1 ответ

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

  • tbn = временная база в AVStream, которая пришла из контейнера
  • tbc = временная база в AVCodecContext для кодека, используемого для конкретного потока
  • tbr = tbr угадывается из видеопотока и является значением, которое пользователи хотят видеть когда они ищут частоту кадров видео

Этот вопрос также задавался в списках рассылки FFmpeg: Что означает вывод ffmpeg? tbr tbn tbc etc?

182
ответ дан 23 November 2019 в 21:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: