github

【音视频连载-007】基础学习篇-SDL 播放 PCM 音频文件(上)

為{幸葍}努か 提交于 2021-02-16 16:26:34
公众号回复:OpenGL,领取学习资源大礼包 音视频学习入门技术文章连载: 技术开发故事会连载 【音视频连载-001】基础学习篇-SDL 介绍以及工程配置 【音视频连载-002】基础学习篇-SDL 创建窗口并显示颜色 【音视频连载-003】基础学习篇-SDL 消息循环和事件响应 【音视频连载-004】基础学习篇-SDL 加载图片并显示 【音视频连载-005】基础学习篇-SDL 加载 YUV 文件并显示 【音视频连载-006】基础学习篇-SDL 播放 YUV 视频文件 在前面的文章中已经能够利用 SDL 去播放 YUV 视频文件了,接下来要通过 SDL 去播放 PCM 音频文件。 SDL 播放音频文件有两种方法,可以理解成 推(push) 和 拉(pull) 两种模式。 推 就是我们主动向设备缓冲区填充 Buffer ,而 拉 就是由设备拉取 Buffer 填充到缓冲区。 在一些开发模型中,如果数据传递能够抽象成 流 的形式,那么肯定就会有 推 和 拉 两种模式。 本篇文章主要是讲解 SDL 以推的形式播放音频文件。 PCM 文件素材准备 首先还是得准备素材,做音视频相关实验就是这么麻烦~~ 找一个 mp3 文件,使用 FFmpeg 命令将它转换成 pcm 文件,方便的话可以直接使用代码仓库提供的 mp3 文件。 不像在视频播放中准备素材那样简单,音频文件对于参数的信息要求多一点

IK分词器插件elasticsearch-analysis-ik 6.1.1

天大地大妈咪最大 提交于 2021-02-16 13:28:27
http://88250.b3log.org/full-text-search-elasticsearch#b3_solo_h3_0 IK分词器插件 (1)源码 https://github.com/medcl/elasticsearch-analysis-ik (2)releases https://github.com/medcl/elasticsearch-analysis-ik/releases (3)复制zip地址 https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.1.1/elasticsearch-analysis-ik-6.1.1.zip 4.2 安装插件 (1)elasticsearch-plugin [es @node1 elasticsearch- 6.1. 1] $ bin/elasticsearch-plugin install https:/ /github.com/medcl /elasticsearch-analysis-ik/releases /download/v6. 1.1/elasticsearch-analysis-ik- 6.1. 1.zip -> Downloading https:/ /github.com/medcl

音视频:录制和播放 PCM 音频

泪湿孤枕 提交于 2021-02-16 13:23:53
“ 昨天学习了图片的绘制,今天轮到了音频的采集和播放。 Android 在音频的采集上有提供相应的 API,就是 AudioRecord。 录音部分 AudioRecord 是什么? AudioRecord 是为 Java 应用程序提供管理音频资源功能的类,使应用程序可能通过此类能够获取声音相关硬件所收集的声音。 录音是 Input 行为,所以这个功能的实现就是通过读取硬件的数据来完成录音的过程。 实现录音的流程 构造一个 AudioRecord 对象,并指定需要的最小的缓存 buffer 大小。 这个缓存是用来存储未读取的声音数据的,他表明声音数据没有被读取前,能录多久的音(即一次可以录制的声音容量)。 初始化一个 buffer,这个 buffer 和 上一步指定的 buffer 不同,这是用来表示每次读取声音数据读取多少的。 开始录音。 创建一个数据流,将从 AudioRecord 读取到声音数据存储在数据流中。 关闭数据流。 停止录音。 从上面的步骤就可以看出录音其实和普通的文件 I/O 的思想是一致的。说到这里,其实计算机里就是计算和 I/O,掌握这个模型后,大部分的逻辑都能理通。 AudioRecord 参数详解 AudioRecord 需要的参数有以下几个: audioSource //音频源 frequency //采样率 channelConfiguration /

信安周报-第04周:系统函数与UDF

亡梦爱人 提交于 2021-02-16 12:32:55
信安之路 第04周 前言 这周自主研究的任务如下: 附录解释: SQLi的时候应对各种限制,可以使用数据库自带的系统函数来进行一系列变换绕过验证 eg:字符串转换函数、截取字符串长度函数等 注入的时候需要利用数据库来执行系统命令,不同数据库采用不同方式 eg:MySQL的 udf 、SQLServer的 xp_cmdshell 可以手动构造一些可以利用数据库执行命令的场景,然后进行渗透,从而理解这个提权过程 1.系统函数 参考文档: MySQL函数 https://dev.mysql.com/doc/refman/5.7/en/functions.html 1.1.字符串函数 在MySQL中最常用的当属字符串相关的函数了: PS: 哪个用法不清楚就直接 help xx 函数名 说明 lower(str) 把字符串转换为小写 upper(str) 把字符串转换为大写 ltrim(str) 去除字符串左边空格 rtrim(str) 去除字符串右边空格 trim([remove_str from ]str) 去除字符串两端空格或指定字符 reverse(str) 反转字符串 length(str) 返回字符串的存储长度 char_length(str) 返回字符串的字符个数 instr(str,substr) 返回substr第一次出现的位置 left(str,n) 返回字符串前n个字符

NPM 常见错误

夙愿已清 提交于 2021-02-16 12:24:58
找不到兼容版本 你有一个过时的npm。 请更新到最新稳定的npm 。 权限错误 npm ERR! code EPERM npm ERR! code EACCES 修复缓存的权限 sudo chown -R $(whoami) "$HOME/.npm" 。 再试一次 sudo 。 例如 sudo npm install express -g 。 (之后您可能需要修复缓存权限,如上所述)。 重新安装节点,因此它不需要sudo 。 使用0.8的Travis项目无法升级到npm 2 在你的 .travis.yml 替换中: before_install : - npm install -g npm @ latest 有了这个: before_install : - ' [“$ {TRAVIS_NODE_VERSION}”!=“0.8”] || npm install -g npm@1.4.28 ' - npm install -g npm @ latest 这个建议是基于 这个特拉维斯问题 ,来自 @simondean 礼貌 。 Error: ENOENT, stat 'C:\Users\<user>\AppData\Roaming\npm' 在Windows 7上 这是 joyent / node#8141的结果 ,并且是Windows的Node安装程序的问题。 解决方法是确保 C:

【学习总结】GirlsInAI ML-diary day-15-读/写txt文件

我是研究僧i 提交于 2021-02-16 10:44:07
【学习总结】GirlsInAI ML-diary 总 原博github链接-day15 认识读/写txt文件 路径: 绝对路径:文件在电脑中的位置 相对路径:下面会用到 1-准备 新建一个 python.txt 文件,并输入引号内的“皮一下很开心”保存 2-读文件 打开jupyter notebook,输入如下,以进入特定文件夹下 读取文件 txt文件中添加内容-保存,之后再次读取 只读取一行 读取每行,并形成一个list 关闭文件 3-写文件 打开txt文件进行写入(覆盖原文件内容式写入...) 必须先关闭才能看到自己写入的 一个demo 4-bug:中文乱码问题怎么解... END 来源: oschina 链接: https://my.oschina.net/u/4416552/blog/3633533

Vue项目用于Ios和Android端开发

可紊 提交于 2021-02-16 09:50:27
起因 前公司商城App项目使用的是H5开发,有微信公众号、Ios和Android三个版本,H5版本是自己写的一套框架,已经用了有些年头了,承载不下不断涌现出的新需求。而Ios和Android端通过webview加载h5文件显示,App的原生功能和H5交互的代码写得有些凌乱,在我接手项目后老板完全没给重构的时间,所以只能在做新功能的时候顺手一点点的重构。后来要做一个与原先的商城相对独立的新商城,而且新商城的入口放在老商城中。因为时间紧任务重,使用React Native或者weex的话需要将原项目重构后再引入,考虑到可能存在的各种各样的坑,不太可能使用这些解决方案。使用vue或者react构建一个web项目再嵌入原有的app项目中是最稳妥的。最终因为vue的名字在字符数和音节数量上占了绝对的优势而入选。 vue项目构建 预备 vue中文文档: https://cn.vuejs.org/v2/guide/instance.html 构建工具环境 nodejs: http://nodejs.cn 构建工具vue-cli: https://github.com/vuejs/vue-cli 如果是第一次接触vue或者在已有项目中引入vue时可以选择用CDN版本或者下载js文件 vue的生产版本js: https://vuejs.org/js/vue.min.js 引入CDN版本:

博采众长穿梭时空|Maya库使用笔记

徘徊边缘 提交于 2021-02-16 09:36:04
Maya简介 用time、datetime等内置库处理时区需要挺多的代码,而且写法很不优雅,Maya是一个不错的第三方时间库,在pytz、pendulum等库基础上增强了对时区的处理。 Maya的时间对象是自定义的MayaDT对象,是按时间戳表示的,因此在时区问题上更容易进行转换了。从功能上看,Maya的时间创建能力上排名前列,在时间偏移和属性获取上方面接口也挺简洁,综合来看是不错的Python时间库,在GitHub [1] 上目前有3.2k的star。 Maya库功能概览导图 时间输入与转换 Maya提供了丰富的接口用于从各种数据中解析出时间对象,既有简约的 from_datetime() 把datetime对象转为MayaDT时间对象,也有强大的 when() 和 parse() 从字符串中解析时间要素。一些示例代码如下。 import maya maya.parse( '2020-12-08T03:15' ) #字符串转maya时间对象 #Out[]:<MayaDT epoch=1607397346.636102> maya.when( '1011-02-07' ) #因为是用的epoch,小于1970年是负数 #<MayaDT epoch=-30259958400.0> dt=maya.now() #获取当前时间 maya.when( 'tomorrow' )

Win10 + vs2017 编译并配置tesseract4.1.0

痞子三分冷 提交于 2021-02-16 08:54:15
  tesseract 是一个开源的OCR (Optical Character Recognition , 光学字符识别) 引擎,本文就介绍一下自己在编译 tesseract4.1.0时遇到的一些坑,希望能给大家带来一些帮助。 一、下载 tesseract   tesseract 是一个开源项目,可以在 GitHub 上下载源码: https://github.com/tesseract-ocr/tesseract/releases/   当然,也可以下载安装版的: https://github.com/UB-Mannheim/tesseract/wiki   安装版的下载完后直接安装,然后配置环境变量(这个后面会讲到)即可使用。这个方法笔者也尝试过,但是很遗憾,没能在 vs 上找到相关的库文件,也就是不能在 vs 中调用 tesseract 相关的函数方法,只能在控制台上使用,这就比较蛋疼了,暂时在网上也没找到相关的方法,所以只能下个源码包自己编译配置了,折腾了一天才搞定,不得不吐槽一下在 Windows 上想自己编译一个东西真是麻烦。 二、所需要用到的工具   在 Windows 上编译 tesseract 主要需要用到两个工具:cmake和 cppan。 2.1 cmake   cmake 是一个跨平台的编译工具 ,可以使用 cmake 在 Windows