#include <pjlib.h>
#include <pjlib-util.h>
#include <pjmedia.h>
#include <stdlib.h>
#include <stdio.h>
/*
*放音
*/
int main(int argc, char *argv[])
{
pj_status_t status;
pj_caching_pool cp;
pj_pool_t * pool;
pjmedia_port * file_port;
pjmedia_snd_port * snd_port;
if(argc<2)
{
printf("test1 wav文件名\n");
exit(1);
}
//初始化pjlib,必须!
status=pj_init();
PJ_LOG(3,("test1.c","pjlib初始化,成功"));
//创建pool factory,必须!后续内存分配、动态创建,需要
pj_caching_pool_init(&cp,&pj_pool_factory_default_policy,0);
//打开声音设备
status = pjmedia_aud_subsys_init(&cp);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test1.c","打开声音设备,错误"));
else
PJ_LOG(3,("test1.c","打开声音设备,成功"));
//为文件播放创建内存池,池名称:wav
pool=pj_pool_create(&cp.factory,"wav",4000,4000,NULL);
//创建读wav文件媒体端口
status=pjmedia_wav_player_port_create(pool,argv[1],20,0,0,&file_port);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test1.c","打开读wav文件端口,错误"));
else
PJ_LOG(3,("test1.c","打开读wav文件端口,成功"));
//创建音频设备端口
status=pjmedia_snd_port_create_player(pool,-1,PJMEDIA_PIA_SRATE(&file_port->info),PJMEDIA_PIA_CCNT(&file_port->info),PJMEDIA_PIA_SPF(&file_port->info),PJMEDIA_PIA_BITS(&file_port->info),0,&snd_port);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test1.c","打开播放音频端口,错误"));
else
PJ_LOG(3,("test1.c","打开播放音频端口,成功"));
//连接媒体端口与设备端口,开始播放
status=pjmedia_snd_port_connect(snd_port,file_port);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test1.c","连接 读wav文件端口 播放音频端口,错误"));
else
PJ_LOG(3,("test1.c","连接 读wav文件端口 播放音频端口,成功"));
printf("按<ENTER>退出放音\n");
getchar();
pj_thread_sleep(100);
status = pjmedia_snd_port_destroy( snd_port );
PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1);
status = pjmedia_port_destroy( file_port );
PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1);
pjmedia_aud_subsys_shutdown();
pj_pool_release( pool );
pj_caching_pool_destroy( &cp );
pj_shutdown();
return 0;
}
#include <pjlib-util.h>
#include <pjmedia.h>
#include <stdlib.h>
#include <stdio.h>
/*
*放音
*/
int main(int argc, char *argv[])
{
pj_status_t status;
pj_caching_pool cp;
pj_pool_t * pool;
pjmedia_port * file_port;
pjmedia_snd_port * snd_port;
if(argc<2)
{
printf("test1 wav文件名\n");
exit(1);
}
//初始化pjlib,必须!
status=pj_init();
PJ_LOG(3,("test1.c","pjlib初始化,成功"));
//创建pool factory,必须!后续内存分配、动态创建,需要
pj_caching_pool_init(&cp,&pj_pool_factory_default_policy,0);
//打开声音设备
status = pjmedia_aud_subsys_init(&cp);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test1.c","打开声音设备,错误"));
else
PJ_LOG(3,("test1.c","打开声音设备,成功"));
//为文件播放创建内存池,池名称:wav
pool=pj_pool_create(&cp.factory,"wav",4000,4000,NULL);
//创建读wav文件媒体端口
status=pjmedia_wav_player_port_create(pool,argv[1],20,0,0,&file_port);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test1.c","打开读wav文件端口,错误"));
else
PJ_LOG(3,("test1.c","打开读wav文件端口,成功"));
//创建音频设备端口
status=pjmedia_snd_port_create_player(pool,-1,PJMEDIA_PIA_SRATE(&file_port->info),PJMEDIA_PIA_CCNT(&file_port->info),PJMEDIA_PIA_SPF(&file_port->info),PJMEDIA_PIA_BITS(&file_port->info),0,&snd_port);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test1.c","打开播放音频端口,错误"));
else
PJ_LOG(3,("test1.c","打开播放音频端口,成功"));
//连接媒体端口与设备端口,开始播放
status=pjmedia_snd_port_connect(snd_port,file_port);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test1.c","连接 读wav文件端口 播放音频端口,错误"));
else
PJ_LOG(3,("test1.c","连接 读wav文件端口 播放音频端口,成功"));
printf("按<ENTER>退出放音\n");
getchar();
pj_thread_sleep(100);
status = pjmedia_snd_port_destroy( snd_port );
PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1);
status = pjmedia_port_destroy( file_port );
PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1);
pjmedia_aud_subsys_shutdown();
pj_pool_release( pool );
pj_caching_pool_destroy( &cp );
pj_shutdown();
return 0;
}