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

2019-01-07  本文已影响0人  张俊峰0613

计算

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

duration = pFormatCtx->duration / AV_TIME_BASE;
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层回调!

上一篇 下一篇

猜你喜欢

热点阅读