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. 因为这是技术文章,所以有些词句使用原文,表达更准 ...
随机推荐
- sudoers文件解析
分类: LINUX 今天在用户组中新加了一个普 通用户,开始这个用户没有sudo权限,于是通过sudo visudo修改了sudo的配置文件,赋予了普通用户的root权限.后来想着能不能将/etc/s ...
- Python基础学习-列表的常用方法
列表方法 = Python 3.5.2 (default, Sep 14 2016, 11:27:58) [GCC 6.2.1 20160901 (Red Hat 6.2.1-1)] on linux ...
- 第二章 LCD液晶显示屏&声控装置&播放音乐&遥控器
这节我将带大家了解亮宁机器人编程的基础部分. LCD液晶显示屏 LCD液晶显示屏是在实现某种功能和调试中不可缺少的部分,接下来我带大家学习,如何使用LCD液晶显示屏. 首先我们把LCD液晶显示屏插入主 ...
- 【BZOJ1453】[WC] Dface双面棋盘(LCT维护联通块个数)
点此看题面 大致题意: 给你一个\(n*n\)的黑白棋盘,每次将一个格子翻转,分别求黑色连通块和白色连通块的个数. \(LCT\)动态维护图连通性 关于这一部分内容,可以参考这道例题:[BZOJ402 ...
- Uva 10806 来回最短路,不重复,MCMF
题目链接:https://uva.onlinejudge.org/external/108/10806.pdf 题意:无向图,从1到n来回的最短路,不走重复路. 分析:可以考虑为1到n的流量为2时的最 ...
- CentOS系统中使用iptables设置端口转发
echo 1 > /proc/sys/net/ipv4/ip_forward 首先应该做的是/etc/sysctl.conf配置文件的 net.ipv4.ip_forward = 1 默认是0 ...
- 2017.9.17 HTML学习总结---table标签
接上: 2.1.3 HTML表单标签与表单设计 表单是用户与服务器交互的主要方法,用户在表单中输入数据,提交给服务器程序来处理. (1)表单的组成: 文本框(text),密码框(password), ...
- EF 状态版 增删改
1.利用 状态版 实现 增加 . 2.利用状态版 进行 删除 3. 利用状态版 实现 修改 ,修改 方法 有3种 第1种修改方法 第2种修改 方法 第3种修改方法
- CDH4.5.0下安装snappy
编译源代码 http://www.cnblogs.com/chengxin1982/p/3862289.html 测试参考 http://blog.jeoygin.org/2012/03/java-c ...
- 安装gcc,g++
安装gcc.g++ sudo apt-get install make gcc g++ 查看g++版本 g++ --version