C 关于尝试同步音频和视频

C 关于尝试同步音频和视频,c,audio,video,sdl-2,C,Audio,Video,Sdl 2,我有一个使用SDL2/SDL_混音器和其他几个声音库的小附带项目。我已经尝试了一段时间来同步我的音频和视频,但一直都没有成功。这些东西都是新的,所以请原谅穷人的逻辑和编码。起初,我想在每一帧后将延迟设置为SDL_延迟(30),然后再设置该范围内的其他一些数字。不完全正确。然后我试着用蜱来做。在这里,我将获得当前_ticks和上一个_ticks之间的差异,并设置一个延迟,如果ticks之间的增量为,则同步音频和视频的基本方法是选择一个用作计时器源,并根据该计时器显示另一个。最简单的通常是音频,但因

我有一个使用SDL2/SDL_混音器和其他几个声音库的小附带项目。我已经尝试了一段时间来同步我的音频和视频,但一直都没有成功。这些东西都是新的,所以请原谅穷人的逻辑和编码。起初,我想在每一帧后将延迟设置为SDL_延迟(30),然后再设置该范围内的其他一些数字。不完全正确。然后我试着用蜱来做。在这里,我将获得当前_ticks和上一个_ticks之间的差异,并设置一个延迟,如果ticks之间的增量为,则同步音频和视频的基本方法是选择一个用作计时器源,并根据该计时器显示另一个。最简单的通常是音频,但因为它通常是预先缓冲的,所以您需要一些方法来测量音频流中实际从扬声器中传出的时间。一旦你得到了,只需等待音频到达下一个视频帧的正确时间并显示它。

同步音频和视频的基本方法是选择一个作为计时器源,然后根据该计时器显示另一个。最简单的通常是音频,但因为它通常是预先缓冲的,所以您需要一些方法来测量音频流中实际从扬声器中传出的时间。一旦你得到了它,你只需等待音频到达下一个视频帧的正确时间并显示它。

你知道如何使用SDL audio API实现这一点吗?你填充了一个缓冲区,所以看不到你是如何知道缓冲量或当前位置的?@paulm:看看mplayer的ao_sdl模块是如何做到这一点的。看不到任何同步?这可能比SSL“拉”方法只是避免出现明显的缓冲,只在需要音频之前调用你的回调。我不知道。您可能应该问一个关于如何在SDL API中确定音频缓冲深度的新问题。您知道如何使用SDL音频API来确定音频缓冲深度吗?你填充了一个缓冲区,所以看不到你是如何知道缓冲量或当前位置的?@paulm:看看mplayer的ao_sdl模块是如何做到这一点的。看不到任何同步?这可能比SSL“拉”方法只是避免出现明显的缓冲,只在需要音频之前调用你的回调。我不知道。您可能应该问一个关于如何在SDLAPI中确定音频缓冲深度的新问题。