- 58
- 0
看到SDL2中 Audio Example 时,对其中的一些代码有些疑惑,代码如下:
// sdl_audio_example.c
#define MAX_AUDIO_FRAME_SIZE 192000
// TODO: 1. 主要的疑问就在这里了,这三个变量的含义是什么??
// TODO: 2. audio_chunk是否可以省略不用了,直接audio_pos = out_buffer??
static Uint8 *audio_chunk;
static Uint32 audio_len;
static Uint8 *audio_pos;
void audio_callback(void *udata, Uint8 *stream, int len)
{
if ( audio_len == 0 )
return;
len = ( len > audio_len ? audio_len : len );
SDL_MixAudio(stream, audio_pos, len, SDL_MIX_MAXVOLUME);
audio_pos += len;
audio_len -= len;
}
int main(int argc, char *argv[]){
// do something ...
uint8_t *out_buffer = (uint8_t *)av_malloc(MAX_AUDIO_FRAME_SIZE * 3 / 2);
int out_buffer_size = av_samples_get_buffer_size(NULL, nb_channels, nb_samples, AV_SAMPLE_FMT_S16, 1);
for(;;){
AVFrame *frame = ...;
swr_convert(swr_ctx,
&out_buffer,
MAX_AUDIO_FRAME_SIZE,
(const uint_8 *)frame->data[0],
frame->nb_samples);
audio_chunk = (uint8_t *)out_buffer;
audio_len = out_buffer_size;
audio_pos = audio_chunk;
}
return 0;
}
问题
如上代码所示:
- audio_chunk、audio_len、audio_pos这三个变量分别代表的含义
- audio_pos说是一个静态缓冲区,加上len是如何更新位置的??是否可以画图描述一下?
- audio_chunk是否可以省略掉,直接audio_pos=out_buffer??
感激不尽!!
1
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
填海的精灵 普通会员 1楼
在使用SDL2播放音频时,有时候可能会遇到一些问题,比如音量调节不准确,播放进度不稳定等。下面我会列出一些可能的问题以及相应的解决方法:
-
音量调节不准确:这可能是因为音频流的缓冲不足。你可以尝试增加音频流的缓冲大小,或者尝试在播放过程中定期停止和恢复音频流。另外,你也可以尝试使用更复杂的音频处理函数,比如使用ALSA的ioctl()函数。
-
播放进度不稳定:这可能是因为音频流的大小或者频率不均匀。你可以尝试改变音频流的大小,或者改变音频流的频率,或者调整缓冲大小。另外,你也可以尝试使用更复杂的音频处理函数,比如使用ALSA的ioctl()函数。
-
音频失真:这可能是因为音频处理函数的问题。你可以尝试改变音频处理函数的参数,或者尝试使用更复杂的音频处理函数。另外,你也可以尝试使用更精确的频率分析方法,比如使用ALSA的frequency分析函数。
-
播放速度过快:这可能是因为音频流的缓冲不足。你可以尝试增加音频流的缓冲大小,或者尝试在播放过程中定期停止和恢复音频流。另外,你也可以尝试使用更复杂的音频处理函数,比如使用ALSA的ioctl()函数。
-
音频流中断:这可能是因为音频流的缓冲不足。你可以尝试增加音频流的缓冲大小,或者尝试在播放过程中定期停止和恢复音频流。另外,你也可以尝试使用更复杂的音频处理函数,比如使用ALSA的ioctl()函数。
以上是一些可能的问题以及相应的解决方法,希望对你有所帮助。如果你在使用中遇到更多问题,建议你查阅相关的文档或者在线搜索。
-
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

