美文网首页
Android万能音频播放器06--计算当前的播放时长和总时长

Android万能音频播放器06--计算当前的播放时长和总时长

作者: 张俊峰0613 | 来源:发表于2019-01-07 19:55 被阅读0次

    计算

    首先,如果直播来说的话是没有播放时间的,只有播放音视频时才有;

    • 总时长:
    duration = pFormatCtx->duration / AV_TIME_BASE;
    
    • 当前AVframe时间:
    AVRational time_base = pFormatCtx->streams[i]->time_base
    now_time = frame->pts * av_q2d(time_base);
    
    • 当前播放时间:
    公式:PCM实际数据大小 / 每秒理论PCM大小;
    clock += buffersize / ((double)(sample_rate * 2 * 2));
    

    实现

    获取输入的音频的时长和时间基:

    audio->duration = pAFmtCtx->duration / AV_TIME_BASE;//单位是秒
    

    记录当前AVframe时间:

    audio->time_base = pAFmtCtx->streams[i]->time_base;
    now_time = frame->pts * av_q2d(time_base);
    
    if (now_time < clock){
        now_time = clock;
    }
    clock = now_time;
    

    当前播放时间:

    jfAudio->clock += buffer_size / ((double)(jfAudio->sample_rate * 2 * 2));
    

    然后,给Java层回调!

    相关文章

      网友评论

          本文标题:Android万能音频播放器06--计算当前的播放时长和总时长

          本文链接:https://www.haomeiwen.com/subject/vhgurqtx.html