本文所说的音频是指的纯音频,不包含视频的那种。
在控制台中使用SDL播放音频,一般情况下不会有问题。
但是在MFC中使用SDL播放音频的时候,会出现没有声音的情况。经过长时间探索,没有找到特别好的解决方案,但是有一种方式可以让声音播放出来:那就是让SDL显示图像(视频)时候的那个对话框弹出来,声音就会出现了。
具体的方法可以加载一张图片(比如说BMP),下图所示代码片段为加载BMP图片的代码。
SDL_Surface *screen = SDL_SetVideoMode(640, 480, 8, SDL_SWSURFACE); SDL_Surface *image; /* Load the BMP file into a surface */ image = SDL_LoadBMP("background.bmp"); if (image == NULL) { return 0; } /* * Palettized screen modes will have a default palette (a standard * 8*8*4 colour cube), but if the image is palettized as well we can * use that palette for a nicer colour matching */ if (image->format->palette && screen->format->palette) { SDL_SetColors(screen, image->format->palette->colors, 0, image->format->palette->ncolors); } /* Blit onto the screen surface */ if(SDL_BlitSurface(image, NULL, screen, NULL) < 0) fprintf(stderr, "BlitSurface error: %s\n", SDL_GetError()); SDL_UpdateRect(screen, 0, 0, image->w, image->h);
不明白这是为什么,但是程序就可以出声了。
相关推荐
SDL(Simple DirectMedia Layer)是一个广泛使用的开源库,主要用于处理图形、音频和输入设备,而MFC(Microsoft Foundation Classes)是微软提供的C++库,用于构建Windows应用程序。将SDL窗口嵌入到MFC窗口中可以...
在MFC(Microsoft Foundation Classes)环境中,结合FFmpeg和SDL可以实现在Windows上播放RTSP视频流。下面我们将详细探讨如何在MFC项目中整合这两者来实现视频播放功能。 首先,你需要确保已经下载并包含了以下库和...
此外,SDL2还能处理音频播放,通过`SDL_OpenAudioDevice`和`SDL_PushAudio`等函数播放音频流。 4. **事件处理**:MFC与SDL2的结合使得开发者可以利用两者的优点。MFC的事件驱动模型可以处理用户交互,如按钮点击,...
在“ffmpeg+mfc+sdl显示视频”的场景中,我们将探讨如何利用这些技术在Windows环境下播放视频。 首先,FFmpeg提供了强大的音视频解码能力。通过调用FFmpeg的API,你可以解析各种格式的视频文件,将其分解为原始的...
在"基于FFmpeg和SDL开发MFC视频播放器"的项目中,开发者利用这两个库构建了一个MFC(Microsoft Foundation Classes)应用程序来播放视频文件。MFC是微软提供的一组C++类库,用于简化Windows应用程序的开发。 首先,...
1. **编译FFmpeg库**:首先,需要获取FFmpeg源码并进行编译,以生成可以在MFC项目中使用的静态或动态链接库。 2. **解析媒体文件**:FFmpeg的libavformat模块可以读取各种格式的多媒体文件,并解析出音视频流。 3. *...
《ffmpeg基础库编程开发》482页 ...2 MFC中使用SDL播放音频没有声音的解决方法 465 附录B:经典代码示例 466 附录C:ffmpeg参数中文详细解释 477 附录D:ffplay的快捷键以及选项 479 附录E: ffmpeg处理rtmp流媒体 481
- 在MFC应用中,我们需要创建一个继承自CStatic类的自定义控件,并重写OnPaint方法,以便使用GDI或GDI+来显示SDL渲染的图像。 4. 结合FFmpeg、SDL和MFC的过程: - 在解码每一帧后,我们将解码后的AVFrame转换为...
在FFmpeg播放器中,SDL可以用来显示视频帧,处理键盘和鼠标输入,以及播放音频。 3. **MFC (Microsoft Foundation Classes)**: MFC是微软提供的C++类库,用于构建Windows应用程序。它基于面向对象编程,封装了...
本示例中,我们关注的是在Linux环境下使用Microsoft Foundation Classes (MFC) 库通过API函数播放.wav音频文件。MFC是Visual Studio提供的C++类库,用于简化Windows应用程序开发。尽管MFC主要是为Windows设计的,但...
总的来说,"基于ffmpeg sdl2.0的mfc视频播放器"项目结合了FFmpeg的强大解码能力、SDL2.0的图形渲染和MFC的Windows应用开发便利性,提供了一个跨平台、易于扩展的视频播放解决方案。通过深入理解这三个技术,开发者...
4. **视频播放**:在MFC(Microsoft Foundation Classes)框架中,你可以创建一个自定义控件,利用SDL来播放视频。MFC是一个C++类库,用于构建Windows应用程序。你需要将SDL的事件循环与MFC的消息泵相结合,以确保...
它是一种颜色空间转换,通常在数字视频中使用,特别是网络传输。YUV代表亮度(Y)和两个色度分量(U和V),它们分别代表蓝色和红色的偏移。YUV420的"4:2:0"表示对于每个4个Y像素,只有一个U和一个V分量,这意味着...
而ffplay则是FFmpeg项目中的一个简单播放器,它使用ffmpeg库进行解码,并利用SDL库进行音频和视频的渲染。这两者的结合,为开发者提供了一种在Windows环境下开发视频播放软件的有效途径。 1. **MFC基础** MFC是...
- **开源许可**:SDL采用GNU LGPL v2许可,允许开发者免费使用该库,并且可以将其集成到商业项目中,前提是遵循相应的条款,例如在使用动态链接库时无需公开源代码。 #### 七、SDL与其他开发框架的对比 - **相比MFC...
它可以完成一个播放器播放视频的基本流程:解协议,解封装,视频/音频解码,视音频同步,视音频输出。此外还包含一些控制功能:播放,暂停/继续,前进,后退,停止,逐帧播放,全屏等功能。通过本程序可以学习视频...
SDL遵循GNU LGPL版本2的开源协议发布,这意味着开发者可以免费使用SDL进行软件开发,且可以将其用于商业软件中,前提是要使用SDL的动态链接库,并且在将SDL库编译进自己的二进制代码中时,需要声明使用的SDL版本以及...
在本文中,我们将深入探讨如何使用C++编程语言来实现从麦克风读取音频并将其保存为.wav格式的文件。这个过程涉及到多个关键知识点,包括音频处理、输入/输出流、多线程以及可能的库集成,如Windows的Core Audio API...
5. **音频播放引擎**:MFC本身并不包含音频播放功能,我们需要集成第三方音频库,如Windows Media Foundation (WMF)、DirectShow或开源的如SDL Mixer。这些库提供了音频解码和播放的功能,我们需要通过MFC的C++接口...
在“一些SDL库开发资料及例程”中,我们可能会找到关于如何使用SDL库进行图形绘制、事件处理、音频播放等方面的示例代码和文档。这些资源对于初学者来说是极好的学习材料,它们可以帮助开发者快速掌握SDL的基本用法...