繁体   English   中英

如何使用FFmpeg库获取以.264为前缀的编解码器视频文件的持续时间?

[英]How do I get the duration of the codec video file that prefix .264 using the FFmpeg library?

我将FFmpeg库用于android ndk。 运行.mp4格式的视频没有问题。 实际上,我播放后缀为.264的视频文件。 但是,当我运行.264格式的视频时,代码将返回一个负数-232132。

这是代码:

extern "C"
JNIEXPORT jint JNICALL
Java_com_lscodex_just_videoplayertesting2_H264Decode_getDuration(JNIEnv *env, jobject instance) {

  AVFormatContext *formatContext = gvs->pFormatCtx;

    if (NULL != formatContext) {


         int durations = static_cast<jint>(formatContext->duration / AV_TIME_BASE);
         logd("VIDEO DURATION ---> %d", durations);
         return durations;
     } else {
         return -1;
     }
}

输出为VIDEO DURATION ---> -2077252342

您对我有什么建议吗?

我找不到对错误代码-2077252342的引用。 但是它无法确定.264的持续时间,因为.264没有/没有将持续时间编码到文件中。 那就是容器的工作。 如果帧速率恒定,则可以将帧速率乘以帧数以获得持续时间。 frame_count * (1/frames_per_second)

一种方法是对原始h264流中的所有数据包持续时间求和,但这需要读取整个文件。

使用ffprobe进行以下操作:

ffprobe -of default=noprint_wrappers=1:nokey=1 -show_entries packet=duration_time -i file.264

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM