- 博客(70)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
原创 【unimrcp】记录被困扰半年的串音问题
问题被导向玄学的最根本原因就是我们漏掉了一台上游服务器的ip,这台服务器之前从来没有被提及,以至于抓包结果里没有发现问题。客观问题还是整个团队对流媒体和mrcp都不熟悉,纯属赶鸭子上架。天坑,浪费了半年时间!!!
2024-12-24 15:28:22
747
原创 【unimrcp源码阅读】1. mrcp_server的机制
以asr自定义插件为例,采用mrcpv2协议。阅读方法,查看源码结合运行日志session 和 channelmpf: Media Processing Framework 媒体处理框架mrcp Media Resource Control Protocol 媒体资源控制协议。
2024-12-11 15:19:16
677
原创 【java-ffmpeg】java 内存测试和集成
最近在用javacpp 挂ffmpeg来用,写完代码想监控一下内存,发现jprofile的内存监控不到jni的内存。在linux上想了一个土方法,监控进程的内存。用脚本循环读取。这里不像C++进程只读取VmRSS,即驻留内存。在JNI里VmRSS应该是指JVM的内存,JNI的内存属于动态库的内存,算在了虚拟内存VmSize里,具体原因没有去探究。脚本如下$pid$2$pid$2这样编译一个循环执行任务的测试程序,长期执行看内存有没有增长。
2024-11-19 15:06:23
766
原创 【opengl学习】opengl的compute shader
opengl虽然老,但是算上opengl es,应该是应用最广泛的显卡api。用compute shader做计算,可以一定程度上摆脱N卡的限制,也摆脱windows和linux,mac等平台的限制。计算着色器应该没有完全榨干硬件的性能,但是也取得了可观的并行性。
2024-10-10 21:03:29
1256
原创 shell的中的字符串处理
去掉从左数最后一个 “/” 及其左边的所有字符,其中 “/” 也可以替换为其他字符。去掉从左数第一个”/”及其右边的所有字符,其中 “/” 也可以替换为其他字符。
2023-07-31 14:14:02
5174
原创 【音频分析】短时傅立叶变换结果为啥是对称?每个结果对应的频率是多少?
传统艺能,又来搞傅立叶变换。在短时傅立叶变换只有离散的一些频率,变换之后的频谱分布有哪些规律呢?解释对称性上公式,N是时间域的窗口采样数(即数组长度)正变换F(k)=∑n=0N−1f(n)∗e−i2πnkNF(k) = \sum_{n=0}^{N-1}f(n)*e^{-i\frac{2\pi nk}{N}} F(k)=n=0∑N−1f(n)∗e−iN2πnk周期性WNn(k+N)=e−i2πn(k+N)N=e−i2πnkN∗e−i2πn=WNnkF(k)=F(k+N)W_{N}^{n
2022-03-11 22:57:48
1399
原创 【音频分析】音频短时时域分析
文章目录短时处理窗函数短时能量和振幅音调(音高)、基频和自相关短时处理音频文件或音频流的采样率通常是8K,16K,48K之类的,即每秒钟有8000、16000、48000个样本。以16K采样率为例,一个信号仅耗时0.0625ms,显然逐信号处理的富余时间太短了。因此和视频传输类似,音频的传输单位,是一个较短时间窗口的采样累积,广义地也可以称之为帧(frame)。传输是逐帧完成,计算也可以逐帧完成,或者缓存一些帧来完成。一般来说,16K音频采用10ms的窗口,这个窗口和音频长度相比非常小,因此,可以称之
2022-03-10 21:17:49
2304
原创 H264流间隔I帧取GOP
传输包的样子,每个I帧的包包含sps,pps,和I帧数据,I帧+后边的p帧(没有B帧)组成一个gop,这个包可以被单独解码。如上图所示,I帧的编码是3个nal组合而成,如果没有前两个nal,则需要缓存第一次出现的sps,pps然后每次加上。判断帧类型参考 https://blog.youkuaiyun.com/u010925568/article/details/75040492https://blog.youkuaiyun.com/jinlong0603/article/details/70170042判断的关键代码
2022-01-13 16:55:09
1983
原创 curl超过1024字节post的坑
现象:用curl传输图片base64的时候,总是卡在中间没有返回也不退出。而python request又可以原因libcurl 当 POST的数据大于1024字节的时候,http默认添加请求头Expect: 100-continue,先追加一个Expect: 100-continue请求头信息,发送这个不包含 POST 数据的请求;如果服务器返回的响应头信息中包含Expect: 100-continue,则表示 Server 愿意接受数据,这时才 POST 真正数据给 Server;解决办法
2021-12-02 16:38:58
2884
原创 linux下 libcurl+jsoncpp的使用
libcurl提供类似curl命令的网络访问api,jsoncpp用来解析json安装libcurl安装需要https://curl.haxx.se/download.html 下载相关包或者sudo yum install libcurl-develsudo apt install libcurl4-openssl-dev sudo apt install libcurl4-nss-dev sudo apt install libcurl4-gnutls-devyum和apt命令可以安装htt
2021-12-02 16:36:15
1105
原创 【FFMpeg 命令行】基本应用
1. pcm转wavffmpeg -f s16le -ar 16k -ac 1 -i input.pcm output.wav-f format 可以用-formats查看支持的格式,s16le代表pcm16位有符号小端存储-ar audio rate 采样率,单位是Hz,每秒的采样数-ac audio channel数,一般默认是1-i 输入2. wav转pcm ffmpeg -i input.wav -f s16le -ar 48000 -ac 1 -acodec pcm_s16le o
2021-12-02 16:30:18
885
原创 【ffmpeg code】解封装和解码
文章目录1. 总体步骤2. 代码2.1 解封装类2.2 解码类2.3 使用 with sdl22.4 编译最近又经常涉及到ffmpeg的使用,本来也用得不熟。现在新学开始整理一下1. 总体步骤打开一个媒体文件,获取帧数据统共两步:创建一个AVFormatContext 去解封装,获取packet通过formatcontext的解码器参数信息拿到解码器上下文AVCodecContext ,然后解码获取frame2. 代码进行封装,方便理解,封装参考[FFMPEG开发总结]1. 了解AVFor
2021-12-02 16:20:12
2595
原创 修复双系统引导踩坑
想让win10区引导ubuntu,结果easybcd误删了ubuntu的引导修复分两步:step1. 用u盘try ubuntu重建grubsudo fdisk -lsudo blkid # 找到linux所在的分区和路径 我的是/dev/sda3 和 /dev/sda4 只有sda3有用#在mnt在新建目录 ubuntusudo mkdir /mnt/ubuntu#挂在sda3sudo mount /dev/sda3 /mnt/ubuntu#挂在完后去/mnt/ubuntu 下看看,
2021-02-21 18:39:31
241
原创 git 多端操作,解决冲突
远程维持一个主分支A端拖一个本地分支git brach localA git checkout localA # 或者git checkout -b localA 相当于两句一起然后修改提交git add *git commit -m "xxx"git checkout master #切换回主分支git push origin master #多次提交后直接push此时B端也做了修改 ,并进行了提交git brach localB git checkout localB # 或者
2021-02-21 18:38:26
200
原创 ffmpeg编解码demo
#include <stdbool.h>#include <stdio.h>#include <stdlib.h>#include <string.h>extern "C" { #include <libavutil/time.h> #include <libavutil/timestamp.h> #include <libavutil/opt.h> #include <libavformat/avf
2021-02-21 18:37:02
578
1
原创 从计算图复制variable到另一个计算图
定义两个计算图,内部操作全部一样,一个keras一个tensorflow,将keras的参数复制给tensorflow。from keras.layers import Conv2D,MaxPool2D,Permute,TimeDistributed,Flatten,Input,Dense,Lambdaimport keras.backend as Kfrom keras.engine.topology import Layerimport tensorflow as tfimport numpy
2021-02-21 18:28:46
190
原创 keras模型h5格式转换tfLite和手机端部署
keras模型h5格式转换tfLite和手机端部署格式转换1. checkpoint的model保存为basemodelnclass = 5990input = Input(shape=(32, 280, 1), name='the_input')y_pred= dense_cnn_svd(input, nclass,92)basemodel = Model(inputs=input, outputs=y_pred)basemodel.load_weights("densenet_svd/de
2021-02-21 18:27:49
1400
原创 tensorflowjs初次摸底
安装tensorflowjsnpm install @tensorflow/tfjsquant 1bit 要转成graph模型才行<!DOCTYPE html><html><head> <script src="node_modules/@tensorflow/tfjs/dist/tf.min.js"></script></head><body> <img src="0_HELEN.
2021-02-21 18:25:58
226
原创 shell光标
#!/bin/bashecho -n Count:tput sc #清空屏幕tput cup 2 10count=10;while true;do if [ $count -lt 110 ]; then count=$(($count+11)); sleep 0.5; tput rc #恢复光标最后保存的位置 #tput cup 2 10 tput ed #清空光标位置到设备尾部的数据 .
2021-02-21 18:24:11
229
原创 shell 实现进度条
#!/bin/basha=({1..100})b=''for i in ${a[@]}do if [ $(($i % 2)) -eq 0 ] then printf "progress:[%-50s]%d%%\r" $b $i #左对齐50个字符 sleep 0.1 #echo -ne '\r'$i b=#$b fi doneprintf "\n"其中 printf中的
2021-02-21 18:21:53
438
原创 解码%xx之类类似url乱码的文件名
网上找到的方法url=”要解码的URL地址”printf (echo -n url | sed ‘s/\//\\/g;s/(%)([0-9a-fA-F][0-9a-fA-F])/\x\2/g’)”\n批量方法#!/bin/bashnames=$(ls)for name in $namesdo dstName=$(echo -n $name | sed 's/\//\\/g;s/\(%\)\([0-9a-fA-F][0-9a-fA-F]\)/\\x\2/g')
2021-02-21 18:20:37
551
原创 shell替换
sed 和vim中的替换sed 加引号可以用转义字符,如果有反斜杠的话,反斜杠可以用其他特殊字符代替,如果不加单引号vim中直接可以用批量替换文件名ls |sed -n /A/p| xargs -i echo mv \{}\ \{}\ | sed s/A/a/2g | sh解释:首先读取目录下所有文件名并正则过滤,之后通过xargs -i 就地拼接成mv命令,然后用sed命令取替换第二个为新字段,最后输入到sh中执行效率:10000个文件大概要10s。100000个文件大约130s..
2021-02-21 18:17:42
338
原创 PIL实现色相变换
from PIL import Image,ImageColor# from torchvision.utils import make_gridimport randomfrom functools import partialdef func(x,c):return x+c if x+c <256 else 255def adj_hue(img):hue,s,v = img.split()f1 = partial(func,c=random.randint(-20,20))
2021-02-21 18:15:07
382
原创 python多进程通信和字符串传递
from multiprocessing import Process,Event,Arrayimport osimport time# src : 输入共享内存地址# res : 输出共享内存地址# i : 任务编号# es : 任务开始事件# ef : 任务结束事件def work(src,res,i,es,ef): while True: es.wait() time.sleep(2) # 模拟任务执行时间 res.ge
2021-02-21 18:14:10
518
原创 C语言扩展python
目录结构├── setup.py├── source│ └── mymodel.cmymodel.c#define PY_SSIZE_T_CLEAN#include <Python.h>/** * reverse * 实际执行函数 * * @param str * @param size */void reverse(char *str, int size) { for (int i = 0, j = size-1; i <
2021-02-21 18:13:02
226
原创 mxnet转keras的记录
import kerasfrom keras import layersimport numpy as npimport mxnet as mximport cv2def build_net(): the_input = layers.Input(shape=(48,48,3)) x = layers.Conv2D(64,(3,3),strides=(1,1),padding="valid",use_bias=True,name='conv1')(the_input)
2021-02-21 18:11:24
171
原创 初探proto和protobuf
初探protobuf是一种类似xml生成java对象的技术,经过protoc编译.proto文件为.h和.cc文件供给C++调用。是一种数据对象生成方式,.proto定义对象的个格式。data.protosyntax = "proto3";package train_set;message PhoneNumber { string number = 1; int32 type = 2 ;}message Person { string name = 1; i
2021-02-21 18:09:36
631
原创 记录C++的webSocket服务代码
server.cpp#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<unistd.h>#include <opencv2/opencv.hpp&
2021-02-21 18:05:51
282
原创 c++ split
C++的string类功能残缺(没有split等),麻烦(格式化)C的输入不安全,读取还是用c++的流方便。因此,输入用c++的流,输出用sprintf,split用流模拟,或者用strtok比较方便。//strtokfgets(buf,10000,stdin);char * res = strtok(buf,seq);while(res!=NULL){ printf("%s\n",res); res = strtok(NULL,seq); /*首次调用result =
2021-02-21 18:02:50
3879
原创 epoll + socket
功能 读取视频并播放注释部分为多线程方案单线程epoll方案每帧都要请求,可以做到帧同步多线程方案可以不用每帧都请求,不能做到帧同步, 各发各的#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/socket.h>#include <neti
2021-02-21 17:57:14
180
原创 caffe自定义层
实现hpp和cppnet在拿到layer之后会调用每层layer的Setup函数,每层Setup中会调用:void SetUp(const vector<Blob<Dtype>*>& bottom,const vector<Blob<Dtype>*>& top) { CheckBlobCounts(bottom, top); LayerSetUp(bottom, top); Reshape(bottom, t.
2021-02-21 17:54:45
176
原创 caffe C++接口前馈调用
#ifndef CPU_ONLY#define CPU_ONLY#endif#include <string>#include <vector>#include <iostream>#include "caffe/caffe.hpp"#include "caffe/layers/input_layer.hpp"#include "caffe/layers/conv_layer.hpp"#include "caffe/net.hpp"#include
2021-02-21 17:53:19
133
原创 xgboost等集成学习原理推导
机器学习的一般模型 obj(θ)=L(θ)+Ω(θ)obj(θ)=L(θ)+Ω(θ)obj(\theta) = L(\theta)+\Omega(\theta) 目标函数等于损失函数加正则项。在boost中,为弱学习器的级联。约定训练集为X,个数为N,维度为M,xixix_i 为第i个样本,yiyiy_i 为第i个样本的标签, y^(0)i=0y^(1)i=y^(0)i+f1(xi)y^...
2018-04-05 19:52:11
287
原创 采坑lightGBM的windows安装gpu版本
踩坑lightGBM的windows安装gpu版本 最近有个念头想搞一波boost,有不想折腾Linux,在安装了windows下的gpu版本xgboost之后,听闻传说中的倚天剑lightGBM神速无敌,为了不可惜一个1060ti的gpu,强行在windows上安装。 然而,就像预想的一样,想不采坑,那是很困难的。按照官方的步骤,安装了cuda和boost以及cmake之后,...
2018-03-30 20:54:13
6167
3
原创 windows的注册列表和使用注册列表建立右键菜单
注册表就是一个统一集中地管理系统硬件设施、软件配置等信息的数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些Windows应用程序的运行,并在其中记录了与机器有关的硬件和软件的配置信息,及联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性,性能记录和其他底层的系统状态信息,以及其他数据等。 根键 ...
2018-03-10 21:43:58
1911
转载 关于python文件操作
出处:关于python文件操作 总是记不住API。昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧:python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目录下的所有文件和目录名:os.listdir()函数用来删除一个文件:os.remove()删除多个目录:os.r
2017-12-05 20:02:56
261
原创 记录快速傅里叶变换计算相关面并附tensorflow相应层代码
Fast Template Matching,J. P. Lewis#-*- coding:utf-8 -*-import numpy as npimport matplotlib.pyplot as pltimport cv2from Integral_image import *## read img #####tm_path = '/home/wdh/pytorch-CycleGA
2017-11-27 16:20:55
1311
1
原创 记录用tensorflow 实现Cosin_Cross_templateMatch层
#-*- coding:utf-8 -*-import tensorflow as tfimport cv2import numpy as npimport matplotlib.pyplot as pltfrom Integral_image import *## read img #####tm_path = '/home/wdh/pytorch-CycleGAN-and-pix2
2017-11-25 22:03:56
309
原创 记录使用tensorflow实现大卷积核卷积的代码
#-*- coding:utf-8 -*-import tensorflow as tfimport cv2import numpy as npimport matplotlib.pyplot as plt## read img #####tm_path = '/home/wdh/pytorch-CycleGAN-and-pix2pix1_run/datasets/maps_0/test
2017-11-24 16:11:57
845
原创 python 爬虫练习二, 爬取python标准库为pdf
爬取python标准库想要把Python的标准库文档趴下来,试过直接存成html,但是简单的存储css的样式等都会丢失,遂想存为pdf。需要一个工具pdfkit,结合之前的selenium爬下来。首先需要pip install pdfkit# coding:utf-8import urllibfrom urllib import requestimport os,timefrom os im
2017-11-12 18:37:56
498
ACM国际大学生程序设计竞赛:知识与入门
2017-04-17
python数据转换的一个问题,关于isfinite( )函数的输入参数
2015-10-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人