как узнать продолжительность аудио файла после загрузки с помощью FFMPEG - PullRequest
1 голос
/ 23 апреля 2010

Я загружаю аудиофайлы в asp.net, используя FFMPEG. Мой вопрос заключается в том, как узнать продолжительность файла (в секундах).

Пожалуйста, предложите мне.

Спасибо иС уважением Сринивас М

Ответы [ 2 ]

9 голосов
/ 05 мая 2010

Почему вы хотите проанализировать вывод? Вместо этого используйте API FFMpeg, чтобы получить длительность от аудиопотока файла. Нельзя полагаться на выходные строки, скажем, команда разработчиков решит изменить журналы в будущем. Поэтому используйте API, чтобы получить длительность.

Выполните следующие действия:

1.  av_register_all();

2.  AVFormatContext * inAudioFormat = NULL;
    inAudioFormat = avformat_alloc_context();
    int errorCode = av_open_input_file(& inAudioFormat, "your_audio_file_path", NULL, 0, NULL);

3.  int numberOfStreams = inAudioFormat->nb_streams;
    AVStream *audioStream = NULL;
    for (int i=0; i<numberOfStreams; i++)
    {
        AVStream *st = inAudioFormat->streams[i];

        if (st->codec->codec_type == CODEC_TYPE_AUDIO)
        {
            audioStream = st;
            break;
        }
    }

4.  double divideFactor;
    divideFactor = (double)1/rationalToDouble(audioStream->time_base);

5.  double durationOfAudio = (double) audioStream->duration / divideFactor;

6.  av_close_input_file(inAudioFormat);

Я не включил никаких проверок ошибок в этот код, вы можете решить это сами. Надеюсь, это поможет.

0 голосов
/ 24 апреля 2010

Вот что я делаю, и это прекрасно работает для меня.Позвоните

ffmpeg -i District9.mov

Затем найдите длину видео в приведенном ниже фрагменте с помощью регулярного выражения или простой проверки типа string.startWith(" Duration:"):

Seems stream 0 codec frame rate differs from container frame rate: 5994.00 
(5994/1) -> 29.97 (30000/1001)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/stu/Movies/District9.mov':
  Duration: 00:02:32.20, start: 0.000000, bitrate: 9808 kb/s
    Stream #0.0(eng): Video: h264, yuv420p, 1920x1056, 29.97tbr, 2997tbn, 5994tbc
    Stream #0.1(eng): Audio: aac, 44100 Hz, 2 channels, s16
    Stream #0.2(eng): Data: tmcd / 0x64636D74

Вы сможете последовательнои безопасно найдите Duration: hh:mm:ss.nn и проанализируйте его, чтобы определить размер исходного видеоклипа.

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