`

MFC中使用SDL播放音频没有声音的解决方法

 
阅读更多

本文所说的音频是指的纯音频,不包含视频的那种。

在控制台中使用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窗口嵌入MFC窗口中

    SDL(Simple DirectMedia Layer)是一个广泛使用的开源库,主要用于处理图形、音频和输入设备,而MFC(Microsoft Foundation Classes)是微软提供的C++库,用于构建Windows应用程序。将SDL窗口嵌入到MFC窗口中可以...

    MFC 播放FFMPEG SDL视频所需库

    在MFC(Microsoft Foundation Classes)环境中,结合FFmpeg和SDL可以实现在Windows上播放RTSP视频流。下面我们将详细探讨如何在MFC项目中整合这两者来实现视频播放功能。 首先,你需要确保已经下载并包含了以下库和...

    MFC_Ffmpeg_sdl2_Player.rar

    此外,SDL2还能处理音频播放,通过`SDL_OpenAudioDevice`和`SDL_PushAudio`等函数播放音频流。 4. **事件处理**:MFC与SDL2的结合使得开发者可以利用两者的优点。MFC的事件驱动模型可以处理用户交互,如按钮点击,...

    ffmpeg+mfc+sdl显示视频

    在“ffmpeg+mfc+sdl显示视频”的场景中,我们将探讨如何利用这些技术在Windows环境下播放视频。 首先,FFmpeg提供了强大的音视频解码能力。通过调用FFmpeg的API,你可以解析各种格式的视频文件,将其分解为原始的...

    基于FFMPEG和SDL开发MFC视频播放器

    在"基于FFmpeg和SDL开发MFC视频播放器"的项目中,开发者利用这两个库构建了一个MFC(Microsoft Foundation Classes)应用程序来播放视频文件。MFC是微软提供的一组C++类库,用于简化Windows应用程序的开发。 首先,...

    基于MFC最简单的FFMPEG+SDL播放器

    1. **编译FFmpeg库**:首先,需要获取FFmpeg源码并进行编译,以生成可以在MFC项目中使用的静态或动态链接库。 2. **解析媒体文件**:FFmpeg的libavformat模块可以读取各种格式的多媒体文件,并解析出音视频流。 3. *...

    FFMpeg基础库编程开发

    《ffmpeg基础库编程开发》482页 ...2 MFC中使用SDL播放音频没有声音的解决方法 465 附录B:经典代码示例 466 附录C:ffmpeg参数中文详细解释 477 附录D:ffplay的快捷键以及选项 479 附录E: ffmpeg处理rtmp流媒体 481

    ffmpeg解码视频后使用SDL在MFC的picture control控件上显示

    - 在MFC应用中,我们需要创建一个继承自CStatic类的自定义控件,并重写OnPaint方法,以便使用GDI或GDI+来显示SDL渲染的图像。 4. 结合FFmpeg、SDL和MFC的过程: - 在解码每一帧后,我们将解码后的AVFrame转换为...

    FFMPEG_SDL_MFC_PLAYER_1

    在FFmpeg播放器中,SDL可以用来显示视频帧,处理键盘和鼠标输入,以及播放音频。 3. **MFC (Microsoft Foundation Classes)**: MFC是微软提供的C++类库,用于构建Windows应用程序。它基于面向对象编程,封装了...

    wav.zip_MFC 音频_linux wav

    本示例中,我们关注的是在Linux环境下使用Microsoft Foundation Classes (MFC) 库通过API函数播放.wav音频文件。MFC是Visual Studio提供的C++类库,用于简化Windows应用程序开发。尽管MFC主要是为Windows设计的,但...

    基于ffmpeg sdl2.0的mfc视频播放器

    总的来说,"基于ffmpeg sdl2.0的mfc视频播放器"项目结合了FFmpeg的强大解码能力、SDL2.0的图形渲染和MFC的Windows应用开发便利性,提供了一个跨平台、易于扩展的视频播放解决方案。通过深入理解这三个技术,开发者...

    ffmepg+sdl+播放摄像头视频+(任意大小)截屏

    4. **视频播放**:在MFC(Microsoft Foundation Classes)框架中,你可以创建一个自定义控件,利用SDL来播放视频。MFC是一个C++类库,用于构建Windows应用程序。你需要将SDL的事件循环与MFC的消息泵相结合,以确保...

    C++使用SDL2显示YUV420数据,内附代码和实例,可直接运行

    它是一种颜色空间转换,通常在数字视频中使用,特别是网络传输。YUV代表亮度(Y)和两个色度分量(U和V),它们分别代表蓝色和红色的偏移。YUV420的"4:2:0"表示对于每个4个Y像素,只有一个U和一个V分量,这意味着...

    基于MFC和ffplay实现的视频播放软件

    而ffplay则是FFmpeg项目中的一个简单播放器,它使用ffmpeg库进行解码,并利用SDL库进行音频和视频的渲染。这两者的结合,为开发者提供了一种在Windows环境下开发视频播放软件的有效途径。 1. **MFC基础** MFC是...

    sdl游戏开发中文文档

    - **开源许可**:SDL采用GNU LGPL v2许可,允许开发者免费使用该库,并且可以将其集成到商业项目中,前提是遵循相应的条款,例如在使用动态链接库时无需公开源代码。 #### 七、SDL与其他开发框架的对比 - **相比MFC...

    ffplay for MFC (stable)

    它可以完成一个播放器播放视频的基本流程:解协议,解封装,视频/音频解码,视音频同步,视音频输出。此外还包含一些控制功能:播放,暂停/继续,前进,后退,停止,逐帧播放,全屏等功能。通过本程序可以学习视频...

    SDL入门教程.pdf

    SDL遵循GNU LGPL版本2的开源协议发布,这意味着开发者可以免费使用SDL进行软件开发,且可以将其用于商业软件中,前提是要使用SDL的动态链接库,并且在将SDL库编译进自己的二进制代码中时,需要声明使用的SDL版本以及...

    C++实现从麦克风读入音频并保存

    在本文中,我们将深入探讨如何使用C++编程语言来实现从麦克风读取音频并将其保存为.wav格式的文件。这个过程涉及到多个关键知识点,包括音频处理、输入/输出流、多线程以及可能的库集成,如Windows的Core Audio API...

    mfc实现音乐播放器

    5. **音频播放引擎**:MFC本身并不包含音频播放功能,我们需要集成第三方音频库,如Windows Media Foundation (WMF)、DirectShow或开源的如SDL Mixer。这些库提供了音频解码和播放的功能,我们需要通过MFC的C++接口...

    一些SDL库开发资料及例程

    在“一些SDL库开发资料及例程”中,我们可能会找到关于如何使用SDL库进行图形绘制、事件处理、音频播放等方面的示例代码和文档。这些资源对于初学者来说是极好的学习材料,它们可以帮助开发者快速掌握SDL的基本用法...

Global site tag (gtag.js) - Google Analytics