SDL2.0 播放wav文件

// SDL_Mixer.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "SDL/include/SDL.h"
#include "SDL_mixer/include/SDL_mixer.h"
#pragma comment(lib, "sdl/lib/x86/SDL2.lib")
#pragma comment(lib, "sdl_mixer/lib/x86/SDL2_mixer.lib")

int _tmain(int argc, _TCHAR* argv[])
{
	SDL_Init(SDL_INIT_EVERYTHING);

	/*
	对于那些使用OGG, MOD或者其他非WAV声音格式的人,请使用Mix_Init()来初始化解码器,并使用Mix_Quit()来关闭解码器。因为这里我们仅仅使用了WAV文件,所以我们不必为了用不到的东西来添加更多代码。
	flags:bitwise OR'd set of sample/music formats to support by loading a library now. The values you may OR together to pass in are:
			MIX_INIT_FLAC
			MIX_INIT_MOD
			MIX_INIT_MP3
			MIX_INIT_OGG
	*/
	Mix_Init(MIX_INIT_OGG);

	/*
	该函数的第一个参数是我们使用的声音频率,在本课中,它被设为22050,这也是推荐设置的值。第二个参数是声音格式,我们使用了默认的格式。第三个参数是我们计划使用的频道数量。
	我们将它设为2来获得立体声,如果设为1,将只有单声道声音。最后一个参数是样本大小,这里被设为4096。
	frequency:Output sampling frequency in samples per second(Hz). you might use MIX_DEFAULT_FREQUENCY(22050) since that is a good value for most games.
	format:Output sample format.
			AUDIO_U8:	Unsigned 8 - bit samples
			AUDIO_S8:Signed 8 - bit samples
			AUDIO_U16LSB:Unsigned 16 - bit samples, in little - endian byte order
			AUDIO_S16LSB:Signed 16 - bit samples, in little - endian byte order
			AUDIO_U16MSB:Unsigned 16 - bit samples, in big - endian byte order
			AUDIO_S16MSB:Signed 16 - bit samples, in big - endian byte order
			AUDIO_U16:same as AUDIO_U16LSB(for backwards compatability probably)
			AUDIO_S16:same as AUDIO_S16LSB(for backwards compatability probably)
			AUDIO_U16SYS:Unsigned 16 - bit samples, in system byte order
			AUDIO_S16SYS;Signed 16 - bit samples, in system byte order
			MIX_DEFAULT_FORMAT is the same as AUDIO_S16SYS.
	channels:Number of sound channels in output.Set to 2 for stereo, 1 for mono.This has nothing to do with mixing channels.
	*/
	Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 4096);//在初始化函数中,我们调用Mix_OpenAudio() 来初始化SDL_mixer中的声音函数。

	//要加载音乐,我们使用Mix_LoadMUS()。这个函数接受一个音乐文件的文件名并返回其中的音乐数据。如果出错,它会返回NULL。
	//要加载声效,我们使用Mix_LoadWAV()。它加载了传入的文件名所对应的声音文件,并返回了一个Mix_Chunk,如果出错了,则返回NULL。
	Mix_Music *music = Mix_LoadMUS("F:\\vip.wav");

	//函数Mix_PlayMusic()的第一个参数是我们将要播放的音乐。第二个参数是音乐将要循环的次数。由于它被设为了-1,音乐将在手动停止前不停地循环下去。
	//如果播放音乐出现问题,该函数会返回 - 1。
	Mix_PlayMusic(music, 1);

	SDL_Delay(5000);//不延迟不会播放

	Mix_CloseAudio();
	Mix_FreeMusic(music);
	Mix_Quit();
	SDL_Quit();

	return 0;
}
demo:http://download.csdn.net/detail/sz76211822/9878701


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SDL (Simple DirectMedia Layer) 是一个跨平台的多媒体库,用于处理音频、视频、图形以及用户输入。而海康SDK是指海康威视提供的用于监控设备的软件开发工具包。 使用SDL 2.0播放海康SDK提供的视频流,需要以下几个步骤: 1. 初始化SDL:在程序开始时,调用SDL_Init()函数进行SDL的初始化。 2. 创建窗口:调用SDL_CreateWindow()函数创建一个窗口用于显示视频流。 3. 创建渲染器:调用SDL_CreateRenderer()函数创建一个渲染器,将其与窗口关联。 4. 打开视频流:使用海康SDK提供的接口打开视频流,并获取视频流的相关信息。 5. 创建纹理:调用SDL_CreateTexture()函数创建一个纹理对象,用于将视频流数据渲染到窗口上。 6. 渲染视频帧:通过不断循环,在每一帧中,将视频流数据解码为图像帧,并将其更新到纹理对象中。 7. 渲染纹理到窗口:调用SDL_RenderCopy()函数将纹理渲染到窗口上。 8. 刷新窗口:调用SDL_RenderPresent()函数将窗口上的渲染结果显示出来。 9. 释放资源:在程序结束时,调用SDL_DestroyTexture、SDL_DestroyRenderer和SDL_DestroyWindow函数释放已创建的资源。 通过以上步骤,可以将海康SDK提供的视频流使用SDL 2.0库进行播放。当然,为了实现更加复杂的功能,可能还需要使用到其他的SDL函数和海康SDK的接口,具体根据实际需求来选择使用。 ### 回答2: SDL(Simple DirectMedia Layer)是一个跨平台的开源多媒体库,它提供了音频、视频、图形和事件处理等功能,并且非常易于使用。海康SDK(Software Development Kit)则是海康威视的开发工具包,提供了与海康设备进行通信和交互的功能。下面是使用SDL 2.0和海康SDK播放视频流的简要步骤。 1. 配置SDL环境:在SDL官方网站上下载并安装最新版本的SDL 2.0库,然后在项目中引用SDL的头文件和库文件。 2. 初始化SDL:在程序中调用SDL_Init()函数初始化SDL库,并检查是否成功初始化。 3. 创建窗口和渲染器:使用SDL_CreateWindow()函数创建一个窗口对象,并使用SDL_CreateRenderer()函数创建一个渲染器对象。 4. 初始化海康SDK:在程序中调用海康SDK提供的初始化函数,确保海康设备和SDK的连接正常。 5. 打开视频流:使用海康SDK提供的函数打开视频流,并获取视频流的句柄。 6. 播放视频流:使用SDL提供的函数循环从视频流中读取数据,并使用SDL_RenderPresent()函数将数据渲染到窗口上显示。 7. 释放资源:在程序结束前,调用SDL_DestroyRenderer()、SDL_DestroyWindow()、SDL_Quit()等函数释放创建的SDL相关资源,并调用海康SDK提供的函数关闭视频流连接。 需要注意的是,在具体的代码实现中,还需要处理SDL事件、设置渲染器的尺寸和位置、配置海康设备的IP地址和登录信息等额外的步骤。 综上所述,使用SDL 2.0和海康SDK播放视频流的过程包括配置SDL环境、初始化SDL、创建窗口和渲染器、初始化海康SDK、打开视频流、播放视频流、释放资源等步骤。这样我们就可以通过SDL来实现简单地播放海康设备的视频流。 ### 回答3: SDL(Simple DirectMedia Layer)是一款开源跨平台的多媒体库,可用于软件开发中处理音频、图形、视频等多媒体元素。而海康SDK则是海康威视公司提供的一套用于实现视频监控系统的开发工具包。 要使用SDL2.0播放海康SDK提供的视频流,首先需要导入SDL2.0相关的开发库和头文件,并进行相应的配置。然后,可以通过与海康SDK进行通信,获取视频流数据,并使用SDL2.0进行解码和播放。 具体步骤如下: 1. 导入SDL2.0开发库和头文件至项目中。 2. 进行SDL2.0的初始化操作,包括初始化视频子系统、创建窗口和渲染器等。 3. 通过海康SDK的接口获取视频流数据,并将数据传递给SDL2.0进行解码和渲染。 4. 在主循环中,使用SDL2.0提供的函数进行视频的播放和显示。 5. 在程序结束时,进行资源的释放,包括停止视频播放、销毁窗口和渲染器,最后关闭SDL2.0。 需要注意的是,具体的代码实现可能因开发环境、操作系统和海康SDK版本的不同而有所差异。在实际开发中,可以参考SDL2.0和海康SDK的官方文档和示例代码,以了解更详细的操作步骤和调用方法。 总之,通过整合SDL2.0和海康SDK,可以方便地实现对海康视频流的播放。这样的应用可在视频监控系统、安防领域等多个领域中发挥重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值