![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SDL
文章平均质量分 65
破浪征程
我走过山时,山不说话
我路过海时,海不说话
小毛驴滴滴答答
倚天剑伴我走天涯。
大家都说我因为爱着杨过大侠
才在峨嵋山上出了家
其实我只是爱上了峨嵋山上的云和霞
像极了十六岁那年的烟花
展开
-
使用FFMPEG进行音频重采样
7.将输出的buffer拷贝到SDL2音频回调缓冲区中播放,或者直接写入文件,使用ffplay进行测试,也可以封装成Frame送到音频编码器中(如aac),进行编码后保存。4.创建一个输出buffer, 根据输出的音频参数(采样率,通道数,样本位深度)申请空间,填入默认数据,用于存储重采样后的数据。3.创建一个输入buffer, 根据输入的音频参数(采样率,通道数,样本位深度)申请空间,填入默认数据,用于存储输入音频数据。5.读取PCM数据,每次读取的大小等于输入buffer的大小。原创 2023-05-20 12:19:35 · 1516 阅读 · 0 评论 -
使用FFMPEG和SDL2实现音视频同步的简易视频播放器
这里我简单做了一个视频播放器,并简单做了音视频同步。1.如果当前视频帧与音频帧的播放时间差值小于或等于视频帧持续时间,则表示音视频同步,正常延时。2.如果视频帧比音频帧快,且大于视频帧一帧的时长,延时2倍的正常延时。3.如果视频帧比音频帧慢,且大于视频帧一帧的时长,则立即播放下一帧。4.创建解复用线程,音频解码播放线程,视频解码播放线程。6.根据音频帧和视频帧的差值计算延时。2.将取到的数据送至视频解码器中。5.计算视频帧的pts和持续时间。3.循环从解码器中取解码音频帧。3.循环从解码器中取解码视频帧。原创 2023-05-12 17:22:13 · 1691 阅读 · 4 评论 -
SDL2播放PCM数据的两种方案
那么 pcm_buffer_size 至少是 2 x 1024 x 4 = 8192 个字节,或其他整数倍。例如:通道数为2 ,每次样本数 1024, 样本深度 f32le(float 32 小端)每次读取的数据 是 ( 通道数 x 样本数 x 样本个数字节数) 整数倍。主动添加音频数据到播放数据队列中,push模式。使用回调的方式,也就是pull模式。原创 2023-05-06 17:43:11 · 383 阅读 · 0 评论 -
SDL(3)-键盘响应
尽量养成使用符号常量的习惯,不要直接使用数字,例如if(option == 1),当我们有大量这种判断时,我们回头再来排查会相当麻烦。在while循环前先赋值一个显示的surface,而后在SDL事件循环中判断是否触发了按键事件,如果是,我们根据按键类型呈现不同的图片。这里我们声明了一个函数loadSurface用来加载指定位置的图片,这样封装下可以有效降低代码量,也可以是程序看起来更清晰。跟之前一样,我们配置好头文件,lib文件和lib依赖项之后,我们在代码中首先定义一些变量。原创 2023-04-16 22:05:43 · 274 阅读 · 0 评论 -
SDL(2)-加载图片
由于默认的SDL库只能加载BMP格式的图片,如果需要加载png等其他格式的图片,需要下载一个扩展库。5.使用SDL_BlitSurface将加载的bmp surface拷贝到窗口的surface。2. 使用IMG_Load加载png图片(之前使用SDL_LoadBMP加载BMP)3.使用SDL_GetWindowSurface获取创建窗口的surface。4.使用SDL_LoadBMP加载一张BMP图片。1.使用SDL_init初始化SDL库。9.使用SDL_Quit释放SDL库。原创 2023-04-16 19:56:45 · 848 阅读 · 0 评论 -
SDL初识(1)
SDL(Simple DirectMedia Layer) 是一个跨平台开发库,旨在通过 OpenGL 和 Direct3D 提供对音频、键盘、鼠标、操纵杆和图形硬件的低级访问。SDL 支持 Windows、Mac OS X、Linux、iOS 和 Android。可以在源代码中找到对其他平台的支持。SDL 是用 C 语言编写的,并且有可用于其他几种语言的绑定,包括 C# ,GO和 Python等。原创 2023-04-15 23:20:58 · 909 阅读 · 1 评论