- 博客(48)
- 资源 (7)
- 收藏
- 关注
原创 docker打包介绍
最近在做一个开源项目,遇到开发者问各种问题,发现都是系统和软件版本的差异引起的。于是了解了一下docker的使用,发现docker真是个好东东,基本解决了各种版本差异的问题,真正做到了一键部署使用。先熟悉一下docker里的概念,docker分为镜像和容器,镜像是一个静态的文件,用于分发部署。容器是镜像运行起来后的运行时对象,可以在容器里安装软件、添加文件等,修改后可以用docker commit将容器打成一个新的镜像。镜像有点类似软件开发中的类,容器类似对象。整体流程如下图所示。
2024-01-08 14:11:30
1301
原创 ffmpeg音视频同步
在编码时,送入编码器的frame会置pts,视频frame的pts是当前的帧数、duration是1,音频frame的pts是当前总共发送的sample数、duration是一帧的sample数(aac是1024)还有一点要注意的是,在推送h264和aac的rtmp流时,需要将codec的extradata赋值给stream,代码如下。av_rescale_q函数的作用是将codec的时间单位换算成发送流stream的时间单位,公式为。stream的timebase都是1/1000,表示ms。
2023-12-28 15:18:42
542
1
原创 linux cuda环境搭建
在深度学习中经常要用到nvidia显卡,本文介绍linux平台下nvidia显卡驱动和深度学习配套库的安装及常见问题解决
2023-12-28 15:00:33
1743
原创 webgl跨域问题
跨域问题原因是前端代码放在A服务器上,其中的脚本需要访问B服务器的接口,此时在浏览器上因为安全问题限制访问因此需要在B服务器的配置白名单中加上A。服务器需要向发出的 http 响应中添加一些 Access-Control 标头,以指示哪些网页有权从 Web 浏览器读取该信息如果只是调试用,可以在A服务器上配置代理到B服务器,如nginx配置如下:proxy_pass B服务器地址;然后将代码中访问B服务接口的地址都改成A服务代理地址,这样浏览器认为只访问A一个域名,就不会引起跨域问题了。
2023-07-09 21:18:52
1300
原创 从多样性谈起到dpp
在推荐算法中,除了要考虑个性化,还要兼顾多样性,不然用户很快就会觉得单调无趣。在衡量推荐结果的多样性时,自然而然能想到的是统计推荐结果中含有不同tag的个数,tag的个数越多,多样性越好。但是这种指标有个问题,它与用户看的内容条数正相关,用户看的内容条数越多,自然tag个数会越多。假设一条feed平均有3个tag,只看了1条feed用户的多样性指标是3;看了10条feed的用户,总共有30个 tag,假设有50%的重合度,有15个不同tag,大大高于看了1条feed的用户。为了抵消feed条数的影响,于
2021-04-10 16:54:49
1325
1
原创 推荐模型可解释性
推荐算法中各种深度学习模型层出不穷,但是万变不离其宗,我们从最原始的矩阵分解模型MF谈起MF模型是求解方程UIT=ZUI^T=ZUIT=Z,Z是label矩阵,格式如下:[10x⋯00x1⋯x⋮⋮⋮⋱⋮x01⋯1]\begin{bmatrix}1&0&\text{x}&\cdots&0\\0&\text{x}&1&\cdots&\text{x}\\\vdots&\vdots&\vdots&\ddots&
2021-03-28 15:39:48
380
1
原创 EE探索在推荐召回中应用
bandit EE的算法网上有很多文章介绍,这里就不再赘述了。本文主要介绍EE UCB算法在推荐召回中的实际应用。UCB的公式如下:C:topic点击次数; T:topic展示次数; t:该用户展现总次数 。该公式前半部分计算topic的实际点击率;后半部分计算探索概率。在topic展现次数较大时,主要依赖前半部分的值,即实际点击率的置信度较高。在topic展现次数较小时,点击率的置信度较低,此时对该topic主要靠探索值来排名。在推荐召回中,根据上述公式计算用户对每个topic的score,
2021-03-13 12:37:49
828
2
原创 tensorflow参数分割存储
在tensorflow的分布式训练中,默认将参数以变量名的维度分布式存储在不同ps上。如将item_embedding存储在ps0上,item_bias存储在ps1上。默认不会将同一个变量存储在不同的ps上。在实际情况中,有的变量行数很多,如item_embedding的行数一般有几百万量级,如果存储在同一个ps上,会导致该ps成为性能瓶颈。为了解决以上问题,在tensorflow中可以通过定义partitioner的方式将同一个变量分布式存储在不同ps上。具体使用方法如下:self.partition
2021-02-27 10:27:24
608
原创 batch内负采样
一般在计算softmax交叉熵时,需要用tf.nn.log_uniform_candidate_sampler多itemid做随机负采样。但是在类似dssm这种双塔模型中,item侧特征除了itemid外,还有其他meta特征,此时负样本对itemid做负采样后,还需要取相应负样本的meta特征。可是在tf训练数据中并不方便建立itemid与各类meta特征的映射表。为了解决dssm类模型的负采样问题,可以取一个batch内其他用户的正样本做为本用户的负样本,以解决负采样meta特征问题。好了,废话少说,
2021-02-17 09:18:56
3478
2
原创 licode服务架构及流程
1,licode模块licode服务端主要由nuve、erizoController、erizoAgent和erizoJS组成。模块之间的关系借用网络上图片如下所示详情可参阅文章https://zhuanlan.zhihu.com/p/40462946。简单点理解:nuve管理多个erizoControllererizoController管理多个会议室room,一个room有一个或多...
2020-02-01 22:00:18
2816
原创 webrtc video jitter详解(二)
1,kalman滤波原理https://www.zhihu.com/question/23971601假设你有两个传感器,测的是同一个信号。可是它们每次的读数都不太一样,怎么办?取平均。再假设你知道其中贵的那个传感器应该准一些,便宜的那个应该差一些。那有比取平均更好的办法吗?加权平均。怎么加权?假设两个传感器的误差都符合正态分布,假设你知道这两个正态分布的方差,用这两个方差值,(此处...
2020-01-31 15:38:23
1430
1
原创 webrtc video jitter详解(一)
webrtc jitter中缓存最近一段时间内的视频数据包,供解码线程取出解码显示。本文以h264视频为例讲解缓存机制。webrtc先将接收到的rtp包组装成帧数据(vcmframe)1,h264 rtp传输格式h264在rtp包中的封装格式如下,以下为借用网络图片上图的左边的打包流程对应的场景是“NALU的长度 <= MTU”,直接将NALU的header拷贝到H264 RTP...
2020-01-30 21:28:34
2845
原创 scala中rdd与dataframe的各种创建方式
创建RDD1,从字符串创建rddsc.parallelize(xxx)如:val testrdd=sc.parallelize(Seq((1,Array("1.0"),3),(2,Array("2.0"),6),(3,Array("3.0"),7),(1,Array("3.0"),7)))2,从文件创建rdd读文本文件val citylevel = sc.textFile(...
2019-12-14 11:10:34
1442
原创 tensorflow维度理解
tensor维度本质就是逐层脱去括号。脱第一层括号后,紧挨着的一层整体只有一个元素,故为1脱掉第二层括号后,里面整体有三个元素,即三行脱掉第四层,里面整体依然有三个元素,比如[1],[2],[3]再往里面看,只有一个元素故最后得到的是1*3*3*1。越高层的维度在越里面,具体到深度学习里,如tf.nn.embedding_lookup(itememb, batchite...
2019-11-20 19:46:48
511
原创 录像存储mp4格式
视频录像为mp4格式,采用的libmp4v2库来实现。初始化文件mp4fileHandle_ = MP4Create(filename);//创建mp4文件 //MP4SetTimeScale(mp4fileHandle_, 90000);//添加h264 track mp4VideoTrack_ = MP4AddH264VideoTrack(mp4fileHa...
2019-04-27 08:30:59
2012
原创 vr h5播放器开发
不需要用户安装客户端,实现在pc和手机浏览器中浏览vr视频。基于videojs-panorama实现,该插件依赖videojs和threejs,通过videojs播放各种格式的视频文件,然后将解码后的视频用threejs来渲染实现浏览3d视频的效果。代码处理流程如下:在plugin.js中设置player回调onPlayerReady=》 (1)如果不支持webgl,显示“不支持webgl显示”...
2018-05-24 14:15:25
4314
1
原创 licode发布订阅流程
licode提供的客户端例子是web的,如果需要开发移动端,需要弄清楚底层的信令协议。本文详细讲解licode与客户端之间的发布订阅协议。
2017-12-26 19:08:32
3852
原创 licode安装使用
licode实现了webrtc的转发服务,通过socketio与客户端进行信令通信,媒体层走webrtc。1,准备环境操作系统ubuntu16.04如果需要外网使用,最好准备一个域名和ssl证书,现在很多云服务申请域名都提供一个二级域名的免费证书。2,安装licode1, 下载licode代码git clone https://github.com/lynckia/l...
2017-12-25 18:41:33
6098
1
原创 BimServer安装使用
介绍bimserver的安装及安装中遇到的问题解决,讲解怎么导入工程文件到bimserver中并能在线浏览3d模型
2017-12-06 18:51:33
11291
10
原创 sdp中aac config字段计算
在rtsp和sip协议中,生成sdp信息时经常要计算aac config字段。本文主要讲述aac config字段的计算方法。
2014-01-08 21:51:10
5506
2
原创 android linphone中opengl显示的实现
以linphone为例介绍了android中用opengl显示的实现方法,特别针对视频数据流来自ndk层,怎样与java层opengl交互实现显示。
2014-01-06 23:04:02
2139
原创 lvs安装配置
安装Tar xzvf ipvsadm-1.26.tar.gz 修改makefile,去掉LIBS += -lnl修改libipvs/Makefile,去掉CFLAGS +=-DLIBIPVS_USE_NL MakeMake install 配置Director 配置: ipvsadm -A -t 218.2
2014-01-02 22:20:20
957
原创 vitamio开发者大会
vitamio开发者大会,主要介绍移动端(android和ios)多媒体开发,涵盖ffmpeg软件编解码、android omx硬件编解码、播放器实现、视频直播实现。
2013-12-29 20:52:27
2333
实时流合成为flv文件
2017-11-16
flv合成实现
2017-11-10
jpeg压缩库(vc6)
2012-06-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人