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

要使用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. 2.eclipse安装

    1.进入官网https://www.eclipse.org/ 2.配置工作目录:存放 1.项目代码    2.IDE相关配置信息 3.没有配置tomcat,所以为空.

  2. powershell远程连接

    最近因为工作的需要看了看powershell相关的知识,个人总结了一点有关于powershell远程连接需要做的步骤,希望对别人有所帮助. 使用powershell远程连接,需要进行 设备的配置: 1 ...

  3. 第二章 LCD液晶显示屏&声控装置&播放音乐&遥控器

    这节我将带大家了解亮宁机器人编程的基础部分. LCD液晶显示屏 LCD液晶显示屏是在实现某种功能和调试中不可缺少的部分,接下来我带大家学习,如何使用LCD液晶显示屏. 首先我们把LCD液晶显示屏插入主 ...

  4. I2C总线协议学习笔记 (转载)

    1.I2C协议   2条双向串行线,一条数据线SDA,一条时钟线SCL.   SDA传输数据是大端传输,每次传输8bit,即一字节.   支持多主控(multimastering),任何时间点只能有一 ...

  5. IOS 自定义代理delegate方法

    创建一个自定义代理 @class MJTgFooterView; /** 1.协议名称: 控件类名 + Delegate 2.代理方法普遍都是@optional 3. */ @protocol MJT ...

  6. POJ - 1201 Intervals (最短路解线性规划)

    相交区间选尽量少的点是可以贪心的,右端点排序以后,尽量往右边放可以得到可以使得点在区间尽可能多. 但是我只想到了O(n)的维护方法.(数据比较水,能过... 或者是前缀和可以写sum(bi) - su ...

  7. test image

    Most of these images are in PBM or PGM format and compressed with GNU Zip and GNU TAR Note: These pa ...

  8. css隐藏元素的六类13种方法

    隐藏元素的方法 隐藏元素的方法可以总结为六类:直接隐藏.对溢出内容隐藏.对元素透明度进行调整.将元素移除当前屏幕.对元素的层级关系进行调整.对元素进行裁剪 只有对元素的透明度进行调整才可以点击,其余都 ...

  9. Windows核心编程-作业

    原文链接:http://zhujiangtao.com/?p=983 作业 作业 一个简单例程 CreateJobObject 创建作业 作业限制和 SetInformationJobObject A ...

  10. apache配置局域网访问

    1.配置vhost.conf NameVirtualHost 192.168.2.74:80 <VirtualHost 192.168.2.74:80> DocumentRoot /var ...