请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

plyer4.c在windows上播放问题记录

在windows播放出现一些问题,特此分享:

1.程序主窗口点击不了?
主窗口的初始化都在子线程里了,需要放到主线程里初始化才行

2.播放没有声音?
重采样数据保存到本地pcm,播放正常,但就是这个代码没有声音,

网上找了一个sdl播放的例子,最终发现下面这个:
网上:SDL_OpenAudio(&wanted_spec, NULL)
本代码:SDL_OpenAudio(&wanted_spec, &spec)

改成NULL,发现可以播放了,不知道为什么

3.声音重采样后,保存到本地播放正常,但是音频回调后的数据保存到本地,播放有杂音?
testout.pcm – 正常
testout1.pcm --有杂音

感觉像是音频的打开及设置都在子线程了

把音视频所有的初始化都从子线程移到主线程,让ReadFrame的线程只是进行读取,然后发现声音正常了,不知道为什么

4.程序窗口,鼠标拖住,视频画面就不动了?
应该与定时器有关,这个应该怎么优化呢?

不知道,有会的,分享下

正在回答 回答被采纳积分+3

3回答

慕先生0558560 2020-12-23 15:43:40

第4个问题,程序窗口鼠标拖住的问题,我看了一下ffplay也是一样的情况,拖住窗口移动ffplay也不会继续播放画面,这个应该和SDL2库有关(选中SDL_window进行操作导致阻塞了SDL_render?我也不确定),和定时器无关吧。

0 回复 有任何疑惑可以回复我~
慕先生0558560 2020-12-23 15:35:33

我查了一下SDL_wiki上的SDL_OpenAudio的API,它对于传入NULL的处理和传入spec的处理不一样https://wiki.libsdl.org/SDL_OpenAudio

在页面最下面的remarks里面是这么解释的:
If obtained is NULL, we use desired (and allow no changes), which means desired will be modified to have the correct values for silence, etc, and SDL will convert any differences between your app's specific request and the hardware behind the scenes.

但是我目前调试代码还没有发现有什么明显区别,或许在audio_callback函数中有所体现

0 回复 有任何疑惑可以回复我~
李超 2020-05-14 15:07:28

总结的这么棒,看来不同的系统对这块处理区别还挺大的

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号