应宝哥建议以及更好的交流学习,这篇开始使用中文,英语就先放一放吧!

要使用PJSIP中的PJMEDIA首先我们需要搭建好它所需要的环境。

【环境搭建与调试】

1 在 工具 加入pjmedia所需要的包含文件以及库文件

2 在 项目属性 中的加入包含文件以及库文件和具体使用到的库名

3 编译过程中出现无法解析外部符号时,自习观察报错的提示,(如关键字可能为srtp,可以去工程文件下的third_party中去添加相关库或者包含文件)。

【实例功能】

播放一个wav格式的文件。

实例出处:http://www.pjsip.org/docs/latest/pjmedia/docs/html/page_pjmedia_samples_playfile_c.htm

 //PJMEDIA  play a wav file
//heat nan
//改编自官网实例
#include<pjlib.h>
#include<pjlib-util.h>
#include<stdlib.h>
#include<pjmedia.h>
#include<stdio.h>
int main()
{
pj_status_t status;
char filename[]="windows.wav";// the file's name which you are want to play
pj_caching_pool cp;
pjmedia_endpt *med_endpt;
pj_pool_t *pool;
pjmedia_port *file_port;
pjmedia_snd_port *snd_port;
int i;
//if you want to use the pjlib lib, you must init it first
status=pj_init();
if(status==PJ_SUCCESS)
{
printf("pj_init success!\n");
}
//在我们分配内存前需要首先建立一个pool factory
pj_caching_pool_init(&cp, &pj_pool_factory_default_policy, ); //创建一个媒体实例的endpoint
status = pjmedia_endpt_create(&cp.factory, NULL, , &med_endpt);
if(status!=PJ_SUCCESS)
{
PJ_LOG(,("pjmedia create","failed"));
}
//为我们的文件播放器创建内存池
pool=pj_pool_create(&cp.factory,"wav",,,NULL);
//创建一个媒体端口从wav文件中播放
status=pjmedia_wav_player_port_create(pool,&filename,,,,&file_port);
if(status!=PJ_SUCCESS)
{
PJ_LOG(,("pjmedia port","Unable to use WAV file"));
}
//创建一个单向的音频设备端口来播放制定参数相关的音频流
status=pjmedia_snd_port_create_player(pool,-,PJMEDIA_PIA_SRATE(&file_port->info),PJMEDIA_PIA_CCNT(&file_port->info), PJMEDIA_PIA_SPF(&file_port->info), PJMEDIA_PIA_BITS(&file_port->info),, &snd_port);
if(status!=PJ_SUCCESS)
{
PJ_LOG(,("pjmedia","create player failed"));
}
//连接文件端口和音频设备端口
status=pjmedia_snd_port_connect(snd_port,file_port);
if(status!=PJ_SUCCESS)
{
PJ_LOG(,("connect","failed"));
} //如果成功,音乐已经开始响起
/*
for(i=0;i<100;++i)
{
pj_int16_t framebuf[640];
pjmedia_frame frm;
pj_int32_t level32;
unsigned ms;
int level; frm.buf=framebuf;
frm.size=sizeof(framebuf); pjmedia_port_get_frame(file_port,&frm); level32=pjmedia_calc_avg_signal(framebuf,PJMEDIA_PIA_SPF(&file_port->info));
level=pjmedia_linear2ulaw(level32)^0xFF;
ms=i*1000*PJMEDIA_PIA_SPF(&file_port->info)/PJMEDIA_PIA_SRATE(&file_port->info);
printf("%03d.%03d\t%07d\t%7d\n",ms/1000,ms%1000,level,level32);
} */
//提示
printf("Press<ENTER>to stop the music!\n"); getchar(); return ; }

PJSIP-PJMEDIA【使用pjmedia 播放wav格式的音乐】的更多相关文章

  1. MmSystem播放Wav格式声音

    //MmSystem播放Wav格式声音 //MmSystem 支持 *.wav声音格式 snd ->SoundRecorderuses MmSystem; //引用MmSystem//播放系统声 ...

  2. 多浏览器播放wav格式的音频文件

    html5的audio标签只在火狐下支持wav格式的音频播放,无法兼容IE和google , 使用audioplayer.js 基本上能支持大部分浏览器播放wav音频文件,经测试IE.火狐.googl ...

  3. C# 使用System.Media.SoundPlayer播放wav格式的声音文件

    using System.Media; string szPath = Application.StartupPath + “\\SoundFile\\sound.wav”; SoundPlayer ...

  4. c#使用SoundPlayer播放wav格式音频

    1.引用System.Media名称空间下的类SoundPlayer   SoundPlayer player = new SoundPlayer(); 2.方法调用Play(); public vo ...

  5. linux下alsa架构音频驱动播放wav格式文件

    #include<stdio.h> #include<stdlib.h> #include <string.h> #include <alsa/asoundl ...

  6. 8086汇编语言 调用声卡播放wav文件(sound blaster)

    开更 大概最后做了一个能播放无损音乐(无压缩.不需解码)的播放器 原理是基于dosbox的模拟声卡,通过硬件之间的相互通讯做到的 关于详细内容接下来再讲. 一.从dosbox入手 我们知道cpu可以直 ...

  7. foobar2000播放APE格式音乐的解决办法

    要使foobar2000能播放APE格式的音乐需要安装Monkey's Audio Decoder的插件.操作如下: 1.登录官方插件列表,找到Monkey's Audio Decoder插件 官方插 ...

  8. wave文件(*.wav)格式、PCM数据格式, goldwave 可以播放pcm raw audio

    1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等. 44100HZ 16bit stereo: 每秒钟有 44100 次采 ...

  9. Android音频: 怎样使用AudioTrack播放一个WAV格式文件?

    翻译 By Long Luo 原文链接:Android Audio: Play a WAV file on an AudioTrack 译者注: 1. 因为这是技术文章,所以有些词句使用原文,表达更准 ...

随机推荐

  1. 笨办法学Python(三十二)

    习题 32: 循环和列表 现在你应该有能力写更有趣的程序出来了.如果你能一直跟得上,你应该已经看出将“if 语句”和“布尔表达式”结合起来可以让程序作出一些智能化的事情. 然而,我们的程序还需要能很快 ...

  2. ubuntu linux查看cpu信息

    $ cat /proc/cpuinfo CPU核心数量 $ grep -c processor /proc/cpuinfo

  3. Objectbox Box的getAll() 函数返回emptylist() 未判断导致崩溃

    最近使用了Objectbox作为新项目的数据库后台,Greendao开发团队新力作,但是Objectbox算是比较新的一个东西,现在资料也不多. 今天跟大家分享一个关于Box类的getAll()函数的 ...

  4. jade文档声明和头尾标签

    作为一个页面,首先需要一个doctype的声明,它位于文档最上面的位置,放置html标签以前,用来告知浏览器当前这个页面用哪种html,或者xml的规范并解析页面   doctype html htm ...

  5. 调用外部EXE文件

    实现效果: 知识运用: Process类的Start方法 实现代码: private void button1_Click(object sender, EventArgs e) { OpenFile ...

  6. linux .h .so .a文件

    在linux开发中,完全不使用第三方库的情况比较少见,通常都需要借助一个或多个函数库的支持才能完成相应功能.从程序员角度看,函数库实际上是一些头文件(.h)和库文件(.so或.a)的集合.linux下 ...

  7. input或其他元素的左上角和左下角单独圆角实现

    border-bottom-left-radius:6px;/*左下角圆角*/    border-top-left-radius: 6px;/*左上角圆角*/

  8. 使用nssm将bat文件注册为windows service (eg:solr, nodejs)

    nssm下载:http://pan.baidu.com/s/1sjAEevj _install.bat @echo off Set BasePath=D:\Tools %BasePath%\nssm- ...

  9. Maven - pom.xml常用元素

    基本坐标信息:

  10. 简单了解,使用oracle中的索引,表分区

    索引的分类 如下: 物理分类 逻辑分类 分区或非分区索引 单列或组合索引 B树索引(标准索引) 唯一或非唯一索引 正常或反向键索引 基于函数索引 位图索引   B树索引 b树索引通常也称为标准索引,索 ...