音视频系列-音频基础
声音简介 定义:声音(wiki) 是振动产生的声波,通过介质(气体、固体、液体)传播并能被人或动物听觉器官所感知的波动现象。
本质:声音是一种机械波。
声音三要素 音调:声音的频率(音频),儿童 > 女生 > 男生 音量:振动的幅度(振幅),也称为音高 音色(wiki):声音的波形,本质是谐波(wiki),也称为音品,与材质有很大关系
图示:
心理声学 心理声学(wiki) 是研究人对声音感知的学科,即研究人对声音(包括言语和音乐)的生理和心理反应的科学。
听觉/发声范围 音频量化 量化过程 基本概念 采样大小:一个采样用多少bit存放。常用16bit 采样率:采样频率 8k、16k、32k、44.1k、48k 声道数:单声道、双声道、多声道 码率计算 码率 = 采样率 × 采样大小 × 声道数
如:
采样率为44.1kHz,采样大小为16bit,双声道PCM编码的WAV文件
码率 = 44.1k × 16 × 2 = 1411.2kb/s = 176.4KB/s
音频压缩 音频压缩(wiki) 属于数据压缩的一种,用以减少音频流媒体的传输带宽需求与音频档案的存储大小。
压缩方法 无损压缩 保留原始文件的所有信息,在播放上与原始文件没有任何差别。
利用 信息冗余 进行数据压缩,是一个可逆的过程。
有损压缩 对原始文件的一些信息做一些近似处理,以得到更小的文件。
将人类心理学、听觉系统的识别都纳入压缩结果的考量,是一个不可逆的过程。
FFmpeg常用命令
简介 FFmpeg 是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。
“FFmpeg”这个单词中的“FF”指的是“Fast Forward(快速前进)”。
https://zh.wikipedia.org/wiki/FFmpeg
MPEG正式审核程序是Moving Picture Experts Group的简称。这个名字本来的含义是指一个研究视频和音频编码标准的“动态图像专家组”组织,成立于1988年,致力开发视频、音频的压缩编码技术。现在我们所说的MPEG泛指由该小组制定的一系列视频编码标准正式审核程序。
https://zh.wikipedia.org/wiki/MPEG
https://ffmpeg.org/
安装 sudo apt install ffmpeg # ubuntu brew install ffmpeg # mac 命令语法 ffmpeg [全局选项] {[输入文件选项] -i 输入_url_地址} ... {[输出文件选项] 输出_url_地址} ... 处理流程 查看信息 ffmpeg -i out.mp4 查看支持的yuv格式 ffmpeg -pix_fmts Pixel formats: I.... = Supported Input format for conversion .O... = Supported Output format for conversion ..H.. = Hardware accelerated format ...P. = Paletted format .
SSH免密码登录失败深究
被SSH免密码登录失败的问题困扰了很久,也查了很多资料,一直没能解决,最近研究ssh-copy-id脚本源码,发现了根源所在。说深究实在有点夸大,鄙人能力低微,在此就标题问题致歉。 ######环境: >客户端:Mac >服务器:CentOS6.8—-ip:192.168.0.32
先说一般的使用方式
1. 拷贝 ~/.ssh 目录里的公钥到服务器
scp ~/.ssh/id_rsa.pub root@192.168.0.32:~ 2. 登录服务器,创建 ~/.ssh/authorized_keys 文件
ssh root@192.168.0.32 mkdir .ssh cat id_rsa.pub >> ~/.ssh/authorized_keys rm -rf id_rsa.pub logout 正常情况,按理说就可以免密码登录了,但试了下,还是需要密码
根据搜索引擎得来的资料,总结原因在于SELinux限制,解决办法如下: > ** 服务器端设置 .ssh 及 authorized_keys 权限 ** > chmod 700 .ssh/ chmod 600 authorized_keys
我试了下,问题还是没有解决,不能免密码登录
研究 ssh-copy-id 源码,发现了这段代码: > ssh_copy_id > Assuming that the remote host treats ~/.ssh/authorized_keys as one might expect populate_new_ids 0 [ “$DRY_RUN” ] || printf ‘%s\n’ “$NEW_IDS” | ssh “$@” “ umask 077 ; mkdir -p .
Java Web路径跳转
最近在学java web,感觉对于路径跳转这部分很容易混淆,所以专门实践测试了下,对此做个总结。 ####先把结论写在这里:
1. 根目录(/) >* web.xml 文件中 “/” 代表项目根目录 * 页面中链接的 “/” 代表服务器根目录 * 请求重定向的 “/” 代表服务器根目录 * 请求转发的 “/” 代表项目根目录
2. 当前目录 >* Servlet 请求重定向和转发的地址中当前路径为 web.xml 文件设置的 Servlet 映射路径
Filter (过滤器)请求重定向和转发的地址中当前路径为所匹配的过滤页面的路径 #####web.xml中”/“代表项目根目录: >web.xml
<web-app ...> ... <servlet-mapping> <servlet-name>ServletOne</servlet-name> <url-pattern>/servlet/ServletOne</url-pattern> </servlet-mapping> ... </web-app> 其中 < url-pattern > 标签中的第一个”/“即代表项目根目录,也设定了 servlet 对于项目的映射地址。 项目以WebRoot目录为根目录,假如根目录下有 index.jsp 页面,在该页面中 < a > 和 < form > 标签链接地址的当前目录即为根目录下,若要访问 ServletOne 则链接地址可以写为 ”.