PJSIP-PJMEDIA【使用pjmedia 播放wav格式的音乐】
应宝哥建议以及更好的交流学习,这篇开始使用中文,英语就先放一放吧!
要使用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格式的音乐】的更多相关文章
- MmSystem播放Wav格式声音
//MmSystem播放Wav格式声音 //MmSystem 支持 *.wav声音格式 snd ->SoundRecorderuses MmSystem; //引用MmSystem//播放系统声 ...
- 多浏览器播放wav格式的音频文件
html5的audio标签只在火狐下支持wav格式的音频播放,无法兼容IE和google , 使用audioplayer.js 基本上能支持大部分浏览器播放wav音频文件,经测试IE.火狐.googl ...
- C# 使用System.Media.SoundPlayer播放wav格式的声音文件
using System.Media; string szPath = Application.StartupPath + “\\SoundFile\\sound.wav”; SoundPlayer ...
- c#使用SoundPlayer播放wav格式音频
1.引用System.Media名称空间下的类SoundPlayer SoundPlayer player = new SoundPlayer(); 2.方法调用Play(); public vo ...
- linux下alsa架构音频驱动播放wav格式文件
#include<stdio.h> #include<stdlib.h> #include <string.h> #include <alsa/asoundl ...
- 8086汇编语言 调用声卡播放wav文件(sound blaster)
开更 大概最后做了一个能播放无损音乐(无压缩.不需解码)的播放器 原理是基于dosbox的模拟声卡,通过硬件之间的相互通讯做到的 关于详细内容接下来再讲. 一.从dosbox入手 我们知道cpu可以直 ...
- foobar2000播放APE格式音乐的解决办法
要使foobar2000能播放APE格式的音乐需要安装Monkey's Audio Decoder的插件.操作如下: 1.登录官方插件列表,找到Monkey's Audio Decoder插件 官方插 ...
- wave文件(*.wav)格式、PCM数据格式, goldwave 可以播放pcm raw audio
1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等. 44100HZ 16bit stereo: 每秒钟有 44100 次采 ...
- Android音频: 怎样使用AudioTrack播放一个WAV格式文件?
翻译 By Long Luo 原文链接:Android Audio: Play a WAV file on an AudioTrack 译者注: 1. 因为这是技术文章,所以有些词句使用原文,表达更准 ...
随机推荐
- 前端怎样学习react
这是一个很长的话题.....慢慢写
- [转]用jwplayer+Nginx搭建视频点播服务器,解决拖动加载慢的问题
flv视频可以采用两种方式发布: 一.普通的HTTP下载方式 二.基于Flash Media Server或Red5服务器的rtmp/rtmpt流媒体方式. 多数知名视频网站都采用的是前一种方式. 两 ...
- April 16 2017 Week 16 Sunday
Happiness is a way station between too much and too little. 幸福就是刚刚好. I don't want to talk about it a ...
- My First Blog in Cnblogs
终于打算从csdn搬到博客园了 虽然在csdn只写过三篇文章,不过打算写第四篇的时候发现原先的三篇都消失了.联系客服最终还是找回了,不过对于csdn神奇的管理方式还是不放心,也没在csdn上再写过文章 ...
- Python类型转换+序列操作+基本概念辨析速查手册
第一部分是Python语言中基础中的基础,根据网上资料,合并如下: 1.类型转换 int(x [,base]) 将x转换为一个整数 long(x [,base]) 将x ...
- Yarn下分片和分块源代码分析
public class FileSplit extends InputSplit implements Writable { private Path file; private long star ...
- jQuery实现轮播切换以及将其封装成插件(2)
在上一篇博文中,我们完成了一个简单的轮播切换.它的功能比较简单,仅仅能定时切换图片. 但是有没有这样一种情况.当我们特意的想看某一个轮播显示项时不希望等轮播一圈才能等到,希望通过图上的一些元素,触发某 ...
- iPad游戏 Calcculator: The Game 程序自动计算求解方法
今天在iPad上下了个小游戏,主要是一个计算器的界面,有开始值,目标值,限定步数,以及一些加减乘除,还有作者脑洞想出来的功能键,主要有左移,直接把一个数加到末尾,将其中的某个数改为另一个数等等..玩到 ...
- .NET向WebService传值为decimal、double、int、DateTime等非string类型属性时,服务器端接收不到数据的问题
最近在做CRM项目时,使用C#调用SAP PI发布的WebService服务时遇到的问题: 向WebService传值为decimal.double.int.DateTime等非string类型数据时 ...
- Ubuntu安装MySQL及使用Xshell连接MySQL出现的问题(2003-Can't connect to MySql server及1045错误)
不管在什么地方,什么时候,学习是快速提升自己的能力的一种体现!!!!!!!!!!! 以下所有的命令都是在root用户下操作(如果还没有设置root密码)如下: 安装好Ubuntu系统之后,打开终端先设 ...