как использовать libavcodec / ffmpeg для определения длительности видеофайла

Мне нужна была библиотека для выполнения основных функций, таких как длина, размер и т. Д., Для видеофайла (я предполагаю по метаданным или тегам), поэтому я выбрал ffmpeg . Допустимые форматы видео - это прежде всего те, которые преобладают в файлах фильмов, а именно. wmv, wmvhd, avi, mpeg, mpeg-4 и т. Д. Если можете, пожалуйста, помогите мне с методами, которые нужно использовать для определения длительности видеофайла . Я использую платформу Linux.

17
задан Kunal Vyas 23 June 2011 в 09:17
поделиться

1 ответ

используемый эта функция его работа:

extern "C"
JNIEXPORT jint JNICALL
Java_com_ffmpegjni_videoprocessinglibrary_VideoProcessing_getDuration(JNIEnv *env,
                                                                      jobject instance,
                                                                      jstring input_) {
    av_register_all();
    AVFormatContext *pFormatCtx = NULL;
    if (avformat_open_input(&pFormatCtx, jStr2str(env, input_), NULL, NULL) < 0) {
        throwException(env, "Could not open input file");
        return 0;
    }


    if (avformat_find_stream_info(pFormatCtx, NULL) < 0) {
        throwException(env, "Failed to retrieve input stream information");
        return 0;
    }

    int64_t duration = pFormatCtx->duration;

    avformat_close_input(&pFormatCtx);
    avformat_free_context(pFormatCtx);
    return (jint) (duration / AV_TIME_BASE);
}

, Когда я использую (jint) (продолжительность / AV_TIME_BASE) эта видео продолжительность понимает превратно.

0
ответ дан 30 November 2019 в 11:07
поделиться
Другие вопросы по тегам:

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