#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;
pjmedia_endpt *med_endpt;
pj_pool_t * pool;
pjmedia_port * file_port;
pjmedia_snd_port * snd_port;
if(argc<2)
{
printf("test2 wav文件名\n");
exit(1);
}
//初始化pjlib,必须!
status=pj_init();
PJ_LOG(3,("test2.c","pjlib初始化,成功"));
//创建pool factory,必须!后续内存分配、动态创建,需要
pj_caching_pool_init(&cp,&pj_pool_factory_default_policy,0);
//创建媒体实体endpoing
status= pjmedia_endpt_create(&cp.factory,NULL,1,&med_endpt);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test2.c","创建媒体实例,错误"));
else
PJ_LOG(3,("test2.c","创建媒体实例,成功"));
//为文件播放创建内存池,池名称:wav
pool=pj_pool_create(&cp.factory,"wav",4000,4000,NULL);
//创建写wav文件媒体端口
status=pjmedia_wav_writer_port_create(pool,argv[1],8000,1,160,16,0,0,&file_port);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test2.c","打开写wav文件,错误"));
else
PJ_LOG(3,("test2.c","打开写wav文件,成功"));
//创建音频设备端口
status=pjmedia_snd_port_create_rec(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,("test2.c","打开音频设备,错误"));
else
PJ_LOG(3,("test2.c","打开音频设备,成功"));
//连接媒体端口与设备端口,开始播放
status=pjmedia_snd_port_connect(snd_port,file_port);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test2.c","连接媒体端口与设备端口,错误"));
else
PJ_LOG(3,("test2.c","连接媒体端口与设备端口,成功"));
pj_thread_sleep(10);
printf("按<ENTER>退出录音\n");
getchar();
//
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);
pj_pool_release( pool );
pjmedia_endpt_destroy( med_endpt );
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;
pjmedia_endpt *med_endpt;
pj_pool_t * pool;
pjmedia_port * file_port;
pjmedia_snd_port * snd_port;
if(argc<2)
{
printf("test2 wav文件名\n");
exit(1);
}
//初始化pjlib,必须!
status=pj_init();
PJ_LOG(3,("test2.c","pjlib初始化,成功"));
//创建pool factory,必须!后续内存分配、动态创建,需要
pj_caching_pool_init(&cp,&pj_pool_factory_default_policy,0);
//创建媒体实体endpoing
status= pjmedia_endpt_create(&cp.factory,NULL,1,&med_endpt);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test2.c","创建媒体实例,错误"));
else
PJ_LOG(3,("test2.c","创建媒体实例,成功"));
//为文件播放创建内存池,池名称:wav
pool=pj_pool_create(&cp.factory,"wav",4000,4000,NULL);
//创建写wav文件媒体端口
status=pjmedia_wav_writer_port_create(pool,argv[1],8000,1,160,16,0,0,&file_port);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test2.c","打开写wav文件,错误"));
else
PJ_LOG(3,("test2.c","打开写wav文件,成功"));
//创建音频设备端口
status=pjmedia_snd_port_create_rec(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,("test2.c","打开音频设备,错误"));
else
PJ_LOG(3,("test2.c","打开音频设备,成功"));
//连接媒体端口与设备端口,开始播放
status=pjmedia_snd_port_connect(snd_port,file_port);
if(status != PJ_SUCCESS)
PJ_LOG(3,("test2.c","连接媒体端口与设备端口,错误"));
else
PJ_LOG(3,("test2.c","连接媒体端口与设备端口,成功"));
pj_thread_sleep(10);
printf("按<ENTER>退出录音\n");
getchar();
//
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);
pj_pool_release( pool );
pjmedia_endpt_destroy( med_endpt );
pj_caching_pool_destroy( &cp );
pj_shutdown();
return 0;
}