1.首先要解码每一帧数据,判断是否为音频帧
// 循环读取一帧视频
while (av_read_frame(fmt_ctx, &avPacket) >= 0) {
//判断是否为视频流
if (avPacket.stream_index == videoStream->index) {
LOGE(“AVStream is VideoStream”);
got_frame = 0;
//对该帧进行解码
ret = avcodec_decode_video2(dec_ctx, frame, &got_frame, &avPacket);
if (ret < 0) {
LOGE(“Error decoding video\n ret=%d”, ret);
break;
}
if (got_frame) {
av_frame_unref(filt_frame);
}
}else if(avPacket.stream_index==audioStream->index){ //音频流
LOGE("AVStream is AudioStream");
got_frame = 0;
encode_audio(env,&avPacket,frame);
}
av_frame_unref(frame);
av_packet_unref(&avPacket);
}
- 从音频帧取出音频原始数据
int encode_audio(JNIEnv * env, AVPacket* packet, AVFrame* frame){
//解码
int ret &#