初学ffmpeg/SDL2 ,Linux与Windows下发声的代码要不一样吗?

fly4free 2019-10-31 09:04:18

我是从如下地址开始学习的:
https://github.com/rambodrahmani/ffmpeg-video-player

现在到了 第三课,发声,用的代码文件 tutorial03-resampled.c

使用 ffmpeg 4.2.1 + SDL2-2.0.10-VC 在 VS2017 社区版上编译

我在 我的 Windows 10 (1903 )上怎么都发不了声音,就是没声音,而同样的代码,在真实的 Ubuntu 19.04 与虚拟机 Ubuntu 19.04 下都能正常发声……

请教各位,这是否有区别,我怎么样做,才能出声啊
...全文
288 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
雪亲王 2021-10-14
  • 打赏
  • 举报
回复

试试在SDL_OpenAudioDevice之前加载COM

fly4free 2019-11-07
  • 打赏
  • 举报
回复
所以问题就是,环境变量的设置影响 SDL 库内部如何工作的。
shell 下用命令行,
编程的话用 相关API。比如Windows 下用:
SetEnvironmentVariableA("SDL_AUDIODRIVER", "directsound");



结贴。
smwhotjay 2019-11-01
  • 打赏
  • 举报
回复
也许是你win环境太新了。老代码不兼容。可以试试win8 win7 xp 挨个虚拟机里运行程序跑一下就知道了。
fly4free 2019-11-01
  • 打赏
  • 举报
回复
引用 1 楼 smwhotjay 的回复:
也许是你win环境太新了。老代码不兼容。可以试试win8 win7 xp 挨个虚拟机里运行程序跑一下就知道了。


感谢关注!
我试了一下虚拟机下的 WinXP 与 Win7 ,结果问题依旧,
而且我参考的这个教程,选用的文件所使用的API 已经是新的了(用的也是ffmpeg / SDL2 官方提供的 SDK与已编译好的文件)

我在本机win10试了下:

ffplay xxx.mp4

很正常。

然后虚拟机下试出现了提示:【... WASAPI can't initialize audio client ...】我跟着找到了某个解决办法:

set SDL_AUDIODRIVER=directsound
ffplay xxx.mp4

然后虚拟机就发声了!!!

然后我试着在本机命令行设置完环境变量后再启动我的控制台程序,我的程序,发声了!!

真是TM的神奇啊!

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧