void WlFFmpeg::start() {
//因为在加载中初始化了audio,所以这里有个检查
if (audio == NULL) {
return;
}
//播放,设置opensl
audio->play();
//读取数据,把数据从文件写入队列
while (playstatus != NULL && !playstatus->exit) {
AVPacket *avPacket = av_packet_alloc();
//这里读取文件
if (av_read_frame(pFormatCtx, avPacket) == 0) {
if (avPacket->stream_index == audio->streamIndex) {
//写入队列
audio->queue->putAvpacket(avPacket);
} else {
av_packet_free(&avPacket);
av_free(avPacket);
}
} else {
av_packet_free(&avPacket);
av_free(avPacket);
while (playstatus != NULL && !playstatus->exit) {
if (audio->queue->getQueueSize() > 0) {
continue;
} else {
playstatus->exit = true;
break;
}
}
break;
}
}
exit = true;
if (LOG_DEBUG) {
LOGD("解码完成");
}
}