自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jacob_job的博客

音视频软件开发

  • 博客(25)
  • 收藏
  • 关注

原创 使用gsoap编译生成onvif源码C/C++文件

1、gsoap工具编译与安装需要先安装opensslsudo apt-get install openssl sudo apt-get install libssl-dev自行下载gsoap源码并解压,进入gsoap源码下./configmakesudo make install 安装成功后可以使用wsdl2h 和soapcpp2命令 wsdl2h 命令用于生成头文...

2018-03-05 16:31:15 1276 1

原创 https server的ssl协议实现

1、简介HTTPS协议简单的说就是经过ssl加密的HTTP协议,本文不介绍https server中http信令的实现,只介绍ssl的实现。2、需要的库使用openssl实现ssl,需要编译openssl生成libssl.a和libcrypto.a3、API的使用需要包含的头文件#include <openssl/ssl.h>初始化,cert_pa...

2018-03-05 15:56:17 2116

原创 web无插件解码播放H264/H265(WebAssembly解码HTML5播放)

我之前写过一篇《web无插件解码播放H264/H265(js解码HTML5播放)》,与本文的项目意义基本一致,不同的是实现方案有一定差异。之前介绍的是纯JS解码,本文介绍WebAssembly解码。本项目已经用于实际产品之中,亲测可用。项目描述:视频传输使用websocket协议,ipc后端推流使用C语言编程,web前端收流使用js语言。视频解码库使用WebAssembly实现...

2018-03-04 14:42:55 48082 29

原创 JS如何调用WebAssembly的api

这里以我之前做的一个项目为例。项目是把ffmpeg编译成WebAssembly文件,然后在js中调用,实现纯前端代码软解码音视频数据。在linux下编译的一、编译ffmpeg生成静态库build_decoder.shecho "Beginning Build:"rm -r distmkdir -p distcd ffmpeg-3.3.3make cleanemconf...

2018-03-04 01:08:35 36300 23

原创 使用emscripten编译WebAssembly

需要编译的c语言demo程序add.c#include <stdio.h>int add(int a,int b){ return a+b;}int main(void){ printf("%d\n",add(1,2));}1、可以编译成带有html输出文件,可以直接打开html文件查看效果emcc add.c -s WASM=1 -o add...

2018-03-04 00:09:43 3753

原创 WebAssembly wabt工具安装和使用

emscripten编译生成的WebAssembly文件是*.wasm的二进制文件,不方便阅读。使用wabt工具,可以实现wasm与wast的互转,有助于理解wasm内部接口。wasm是二进制文件,可读性很差。wast是文本文件,可以看到wasm的内部接口。下载https://github.com/WebAssembly/wabt安装略。根据readme安装。...

2018-03-03 23:49:20 6052 3

原创 WebAssembly emscripten工具链的搭建

emscripten有多个版本,这里安装的是WebAssembly需要的版本。需要提前安装gcc、cmake、Python、node.js等,这些请自行安装。开始安装emscripten:1、下载wget https://s3.amazonaws.com/mozilla-games/emscripten/releases/emsdk-portable.tar.gztar xv...

2018-03-03 23:42:12 2939

原创 WebAssembly简介

什么是WebAssembly虽然WebAssembly从名字翻译来说是web版的汇编语言,但是其实是一个二进制文件。 与asm.js相比之下,asm.js更像是web版的汇编语言,WebAssembly是web版的二进制语言,效率更高。 二者的编译工具链都是从emscripten编译而来,但是编译方法有所区别。具体在环境搭建中介绍。哪些浏览器支持WebAssemblyWebAsse...

2018-03-03 23:26:38 1465

原创 ejs模板基础用法

前言ejs是适合在node.js中生成动态页面的模板,可以根据后端数据库中的数据按照一定逻辑处理渲染页面。其实静态html页面配合js,js通过http获取后端数据后也能动态渲染页面。但是这样是有缺点的。静态页面+js 的缺点:不安全。把后端数据库的内容通过http发到前端进行解析再渲染页面,http接口容易被盗用,后端数据库数据被盗。不流畅。整个页面的渲染分2步,先加载页面文...

2018-03-03 21:38:42 1214

原创 node.js网站依赖包安装方法

需要安装的包在package.json文件中,根据此文件使用npm安装1、查看已经安装的包的列表npm list npm list -g2、查看已安装的某个包的版本npm list XXX3、安装某个包的最新版本npm install XXX npm install XXX -g4、安装某个包的指定版本x.x.xnpm install X...

2018-03-03 21:22:59 4615

原创 forever实现node.js应用在后台运行

前段时间使用node.js开发公司网站,是运行在linux系统的,一开始习惯性的认为只要在运行node.js应用的命令后面加&就可以实现后台运行,如 node app.js &,但是结果关闭终端时进程就被退出了。最终发现了forever可以实现node.js的后台运行维护,而且万一程序出错进程退出时还可以重新被拉起来。一、安装npm install -g forever...

2018-03-03 21:17:15 568

原创 mongodb数据库导出与导入

1、导出命令格式:mongodump -h dbhost -d dbname -o dbdirectory参数说明:-h: 数据库服务器地址,端口一般是27017-d: 需要导出的数据库实例名称-o: 导出的路径示例:mongodump -h 127.0.0.1:27017 -d test -o /data/mongodb_bak/2、导入命令格式:m...

2018-03-03 21:06:14 271

原创 node.js中如何使用mongodb数据库

本文介绍node.js项目中mongodb数据库的使用方法,相关目录结构是项目中的目录。代码先不上传,只介绍方法。 数据库使用mongodb mongodb的服务端的安装方法是在ubuntu执行apt-get instal mongodb,安装成功之后执行/etc/init.d/mongodb start启动。 nodejs中需要添加的组件是mongoose,里面内置...

2018-03-03 20:53:58 692

原创 flv的格式

flv封装单元是以tag来表示的,一个tag可以是音频tag或者视频tag,或者脚本tag及其其他类型。一、flv的格式flvheader脚本tag(metadata)第一个视频tag(h264_spspps)第一个音频tag(aac_header)第二个视频tag(h264第一个关键帧)后面就是音频和视频tag交互存在…二、tag的格式:[TYPE] (1b...

2018-03-03 20:35:58 435

原创 rtmp信令格式

rtmp以TCP方式推流,分为一个个消息包。一、握手 握手开始于客户端发送 C0,C1 块。 服务端在发送 S0 和 S1 之前必须等待接收 C0,也可以等待接收 C1。 服务端在发送 S2 之前必须等待接收 C1。 在发送 C2 之前客户端必须等待接收 S1 。 客户端在发送任何数据之前必须等待接收 S2。 服务端在发送任何数据之前必须等待接收 C2。1、 ...

2018-03-03 20:31:47 1242

原创 jrtplib的使用

简介jrtplib是用C++开发的rtp/rtcp库,非常方便嵌入到C++工程中,可用于rtsp server或rtsp client的开发之中,或者其他以rtp/rtcp格式的推流与收流。初始化示例代码:RTPSession rtp_session;unsigned short rtp_port = 6666;unsigned int payload_type = 96;...

2018-03-03 20:29:22 1925

原创 rtp基本封包格式

rtp包易于过大,一般每个包不要超过1400,这里设置为1380,即DEFAULT_MTU=1380这里介绍的媒体格式有视频:H264/H265,音频:AAC1、如果媒体包小于DEFAULT_MTU时可直接写入rtp包中,示例代码: unsigned char *pNAL; //媒体数据包 int nalsize; //媒体数据包长度 ...

2018-03-03 20:26:15 4436

原创 rtsp基本信令

1、OPTIONSclient->serverOPTIONS rtsp://192.168.0.158:554/video_high1080.h264 RTSP/1.0CSeq: 2User-Agent: LibVLC/2.2.2 (LIVE555 Streaming Media v2016.01.12)server->clientRTSP/1.0 200 OK...

2018-03-03 20:22:08 1856

原创 linux C 嵌套调用.a静态库注意事项

一、注意静态库的加载顺序有时嵌套调用静态库,比如在rtmp_server中需要调用到librtmp.a,而在librtmp.a中需要调用到libflv.a,此时需要注意静态库加载的顺序,需要先加载librtmp.a再加载libflv.a。具体如下:生成静态库gcc -c -o libflv.o libflv.c ar -rc libflv.a libflv.ogcc -c -o ...

2018-03-03 20:07:45 3355 1

原创 虚拟机ubuntu server 14.04 64bit 根目录扩容

前言为什么需要扩容?使用VMware Workstation安装linux虚拟机时需要设置虚拟的硬盘空间多大,比如一开始设置为50G,在开发过程渐渐的觉得50G不够用了,这就需要给根目录扩容了,比如扩容到200G。注意!修改磁盘分区有风险,建议先在虚拟机关机状态备份一份虚拟机文件,再来扩容。万一操作不当把原有的文件给格式化了,还能有备份。一、修改VMware Workstation设置...

2018-03-03 17:27:59 2835

原创 linux nfs挂载

前言对于嵌入式linux开发而言,这是一个很基础但是很有用的技巧。开发调试过程,可以把PC机linux编译生成的目标文件放到嵌入式linux系统中运行。一、安装PC机linux中执行以下操作sudo apt-get install nfs-kernel-serversudo /etc/init.d/portmap restart二、配置vi /etc/exports添...

2018-03-03 14:27:25 373

原创 linux临时改变环境变量动态库路径

前言对于嵌入式linux开发而言,这是一个很基础但是很有用的技巧。 嵌入式的linux文件系统一般会设计成只读型,但是在调试过程经常需要修改目标文件或者*.so动态库文件。目标文件运行时默认会从/usr/lib等目录读取so文件,但是这些目录是只读型的,修改不了so文件。解决方法就是把新修改的so文件放在共享目录,比如nfs共享目录,这里写成/tmp/nfsfile。然后改变环境变量,让目标...

2018-03-03 14:15:26 1254

原创 vmware linux虚拟机压缩磁盘

前言为什么要压缩磁盘? 使用linux虚拟机开发过程,逐渐把文件放虚拟机linux中,会发现windows系统下存放linux虚拟机的目录占的磁盘空间越来越大,刚开始可能是10G左右,到后来可能是100G甚至更大。你会发现即使在linux终端中把linux系统中存放的一些不用的大文件删除了,结果还是占那么大的磁盘空间!磁盘占用过大很浪费,而且也不方便备份虚拟机目录。所以就需要压缩虚拟机磁盘了...

2018-03-03 14:04:03 3711

原创 windows访问linux samba目录

前言做linux开发时很多人会选择在windows系统上安装linux虚拟机,然后在windows系统编辑代码,在linux系统编译代码。这就需要linux系统和windows系统共享文件了。本文先介绍把linux系统的文件共享给windows系统,反过来把windows系统的文件共享给linux系统的方法请参考我的另一篇文章《linux挂载windows共享目录》。一、安装samba...

2018-03-03 13:25:00 2004

原创 linux挂载windows cifs共享目录

做linux开发时很多人会选择在windows系统上安装linux虚拟机,然后在windows系统编辑代码,在linux系统编译代码。这就需要linux系统和windows系统共享文件了。本文先介绍把windows系统的文件共享给linux系统,反过来把linux系统的文件共享给windows系统的方法请参考我的另一篇文章《windows访问linux samba目录》。一、在windows上创建...

2018-03-03 13:09:19 4568

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除