- 博客(26)
- 收藏
- 关注
原创 利用ffmpeg提取与播放pcm
提取ffmpeg -i xxxx.mp4 -codec:a pcm_f32le -ar 48000 -ac 2 -f f32le output.pcm-ar: 指定采样率;-ac: 指定声道数;-f f32le: 表示每个采样点用32位浮点数来表示(le表示小端,be表示大端)播放ffplay -ar 48000 -channels 2 -f f32le -i output.p...
2018-12-29 17:48:34 6778 1
原创 利用ffmpeg提取与播放yuv
ffmpeg -i xxxxx.mp4 -s 960x540 -pix_fmt yuv420p yyyy.yuv其中xxxxx.mp4为原视频文件,yyyy.yuv为提取的yuv数据;通过-s来设置yuv数据的分辨率;通过-pix_fmt来设置yuv数据的具体格式;如:yuv420p,yuv422p,.....播放ffplay -f rawvideo -video_size...
2018-12-29 17:30:54 5754
原创 webrtc测试时https的问题
在chorme中需要在https的情况下才能使用webrtc,在没有正式证书情况下, 可采用以下几种方式。在本地测试,但局限性太大;使用openssl生成证书,使用时会提示是不安全链接, 点击继续即可;添加chrome启动参数,使用方式如下:mac用命令行启动chrome/Applications/Google\ Chrome.app/Contents/MacOS/...
2018-07-30 20:13:35 8474 2
原创 gcc与nasm联合编译
最近碰到c与asm混合的代码,由于之前没有相关的经验,编译起来非常费力。这里将遇到的一些坑总结一下,再mac平台下使用gcc和nasm编译。一、相关代码c代码如下:#include <stdio.h>int add(int a, int b);int main(int argc, char **argv){ printf("%d\n", add(1, ...
2018-06-09 22:58:12 4915 2
原创 mac下google-cloud-sdk的使用
一、安装安装python27;下载google-cloud-sdk,https://cloud.google.com/sdk/docs/;下载后进入google-cloud-sdk文件夹;运行./install.sh 来安装Cloud SDK tools;期间可能遇到如下提示: Enter path to an rc file to update, or leave blank to...
2018-05-21 12:24:30 3262
原创 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
在tensorflow中使用tf.gfile.FastGFile读取图片:tf.gfile.FastGFile("1.png", "r").read()时出现如下错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte将”r”改成”rb”即可。...
2018-05-13 17:56:29 3315
原创 janus-gateway在mac下的安装使用
一、编译jauns-gateway下载,git clone https://github.com/meetecho/janus-gateway;安装相关的依赖brew install jansson libnice openssl srtp libusrsctp libmicrohttpd libwebsockets cmake rabbitmq-c sofia-sip opus...
2018-04-06 19:26:45 1602
原创 关于adapter.js
一、由来adapter.js自2012年底或者2013年初WebRTC早期的时候就已经出现了。它是一个非常小的项目,当时还没有150行。主要功能是隐藏像webkitRTCPeerConnection和mozRTCPeerConnection这样的前缀差异,并提供函数将MediaStream附加到HTML的或元素。随着各个游览器对webrtc的支持, adapter.js用来屏蔽各个游览器之间的...
2018-03-26 21:30:53 10674 7
原创 android中pcm数据的播放(AudioTrack)
简介在android中java层提供了SoundPool、MediaPlayer、AudioTrack三种音频播放方式,其中SoundPool适合短促且对反应速度比较高的情况(游戏音效或按键声等),MediaPlayer适合比较长且时间要求不高的情况,比如播放mp3、aac等文件,而AudioTrack可播放解码后pcm的裸流。使用方式1. 先计算最小缓冲区大小int bufferSize = Au
2017-05-20 15:12:48 9367
原创 Allowed memory size of 149946368 bytes exhausted (tried to allocate 32640 bytes)
问题:PHP Fatal error: Allowed memory size of 149946368 bytes exhausted (tried to allocate 32640 bytes)原因:php限制了该脚本的能申请到的内存;解决办法:修改php.ini文件中memory_limit, 并重启php-fpm;在脚本中添加ini_set(‘memory_limit’, ‘-1’
2017-04-26 15:28:57 746
原创 利用“member initialization list”初始化类成员
原因成员变量的初始化工作在进入构造函数之前;举例// 错误做法class ABEntry{public: ABEntry(const std::string& name){ name_ = name;//这里是赋值操作,name_在进入构造函数之前就被初始化 }private: std::string name_; }// 正确做法class ABEntry{
2017-04-09 18:19:46 477
原创 opengl打开jpeg图片
opengl没有提供直接函数来打开jpeg、png之类的压缩图片, 目前可用的方法有:1. 调用第三方库打开图片,比如opencv等;2.直接利用系统提供的函数打开图片。对于写个demo之类的小程序,直接引入opencv显然是没有必要的,这里就介绍mac下如果读取jpeg的图片的方法。具体实现如下:unsigned char* readImageData(const char* file_name,
2017-03-19 19:05:08 2957
原创 《程序员的自我修养》读书笔记-编译链接过程
准备对于入门的hello world程序, 如下所示:#include <stdio.h>int main() { printf("hello world\n"); return 0; }在IDE中仅需点击一下运行既可看到程序的运行结果,而如果使用GCC编译,也非常简单,只需gcc hello.c即可生成目标文件a.out, 但其中隐藏了编译链接的基本步骤,分别为:预处理、
2017-03-19 19:00:48 433
原创 glut中定时器的使用
注册定时器注册一个定时器的回调函数,原型是为:glutTimerFunc(unsigned int millis, void (*func)(int value), int value);其中milllis为多久之后调用回调函数,单位为毫秒;func为回调函数;value为定时器标识;回调函数原型void OnTimer(int value);其中value用户区分哪个定时器,其值为glutTime
2017-03-15 21:59:44 710
原创 opengl 编译错误汇总
备注:系统都是Mac OSX 1. Segmentation fault at glGenVertexArrays(1, &vaoHandle);解决办法:在glewInit();之前加上glewExperimental = GL_TRUE; 来源:Segmentation fault at glGenVertexArrays2. Invalid storage qualifiers ‘in’ in
2017-03-15 19:55:24 1068
原创 mac下GLTools的安装
在学习《OpenGL超级宝典》时, 其中的例子用到了GLTools库,需要自行安装。MAC下GLTools的安装方法如下: 1. git clone https://github.com/HazimGazov/GLTools 2. cd build 3. cmake .. 4. make 5. sudo make install备注如果cmake时提示GLEW_LIBRARY找不到, 则需
2017-03-06 18:08:57 3527
原创 rtmp握手过程
rtmp通信以握手开始,即客户端与服务端相互发消息块。其中客户端发送的消息块被指定为C0,C1,C2, 服务端发送的消息块指定为S1,S2,S3。握手顺序客户端主动发送C0,C1;客户端必须等待S1到达才能发送C2;必须等待S2到达才能发送其他数据;服务端必须等待C0到达才能发送S0和S1;必须等待C1到达才能发送S2;必须等待C2到达才能发送其他数据;C0和S0格式长度:1字节C0表示客
2017-03-04 21:18:00 1322
原创 sdl播放pcm文件
参考:最简单的视音频播放示例9:SDL2播放PCM用到的数据结构和函数1. SDL_Initint SDLCALL SDL_Init(Uint32 flags) 初始化SDL,播放音频时flags为SDL_INIT_AUDIO | SDL_INIT_TIMER; 2. SDL_AudioSpec 类型 字段 备注 int freq 音频采样率 SDL_AudioFor
2017-02-13 21:54:55 433
原创 map的[]操作
操作符的实现T& operator[](const key_type& k){ return (*(insert(value_type(k, T()))).first)).second;}value_typetypedef pair<const Key, T> value_type;所以value_type(k, T())就是生成一个pair对象,键为k,值为T();insertpair<
2017-02-13 09:43:14 1121
原创 sdl库使用时遇到的问题
1. Undefined symbols for architecture x86_64 “_main”问题在使用sdl库的时遇到如下问题: Undefined symbols for architecture x86_64: "_main", referenced from: __start in crt1.o (maybe you meant: _SDL_ma
2017-02-13 09:38:45 1317
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人