【发布时间】:2018-03-11 21:00:35
【问题描述】:
我正在尝试使用 ffmpeg 库和 Opus 编解码器对音频帧进行编码 但我遇到了这个错误:
Resource temporarily unavailable
我的源代码:
void encode_audio(uint8_t *frame , int frame_size , void (*onPacket)(uint8_t *packet , int packet_size)){
if(audio_encoder_codec_context != NULL){
memset(audio_encoder_frame_buffer , 0 , (size_t) audio_encoder_frame_size);
swr_convert(
s16_to_flt_resampler,
&audio_encoder_frame_buffer,
audio_encoder_frame_size,
(const uint8_t **) &frame,
frame_size
);
int result = avcodec_send_frame(audio_encoder_codec_context , audio_encoder_frame);
while(result >= 0){
result = avcodec_receive_packet(audio_encoder_codec_context , audio_encoder_packet);
char *a = malloc(1024);
av_strerror(result , a , 1024);
printf("%s\n",a);
if (result == AVERROR(EAGAIN) || result == AVERROR_EOF || result < 0){
break;
}
onPacket(audio_encoder_packet->data , audio_encoder_packet->size);
av_packet_unref(audio_encoder_packet);
}
}
}
【问题讨论】:
-
您找到解决方法了吗?我面临一个类似的问题,将帧编码为已从 Opus 解码的 AAC。
-
我用的是Ffmpeg 3.1.2,我无法解决这个问题,你可以使用ffmpeg 4.0,可能会解决这个问题
-
同样的错误,你是怎么解决的?