转码

EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件正式环境安装部署攻略

时光怂恿深爱的人放手 提交于 2020-02-22 22:17:54
背景介绍 EasyDSS流媒体服务器软件,提供一站式的转码、点播、直播、时移回放服务,极大地简化了开发和集成的工作。其中, 点播功能 主要包含:上传、转码、分发。 直播功能 ,主要包含:直播、录像, 直播支持RTMP输入,RTMP/HLS/HTTP-FLV的分发输出;录像支持自定义保存时长、检索及下载。提供丰富的二次开发接口,基于JSON的封装及HTTP调用。提供播放鉴权、推流鉴权等安全保证。提供用户及相关权限管理配置。 本篇文章主要介绍,在正式的部署环境中,如何优化部署策略,方便后期的版本升级及数据维护。 一. 默认存储配置说明 二. 正式部署建议 在正式部署当中,最好将业务数据存储和视频图像的存储分开,具体原理如下,这样操作后,系统再今后的版本升级和数据维护方面更加方便。 具体示例配置如下: 解压安装目录下的 easydss.ini文件中 ...... [dss] ...... ; 储存目录:录像存储路径 (默认配置的是相对路径,相对于dss目录。也可以配置 绝对路径 如:D:/test 或 /user/test ) dss_hls_path = /diskc/data/hls [dir] ; 数据库目录:保存数据库文件 (默认配置的是相对路径,相对于解压目录。也可配置 绝对路径 如:D:/test 或 /user/test ) dir_data = /diskb/data ;

FFmpeg:视频转码、剪切、合并、播放速调整

白昼怎懂夜的黑 提交于 2020-02-16 04:54:08
原文:https://fzheng.me/2016/01/08/ffmpeg/ FFmpeg:视频转码、剪切、合并、播放速调整 2016-01-08 前阵子帮导师处理项目 ppt,因为插入视频的格式问题被搞得焦头烂额。Windows 内置解码器不够全,PowerPoint 原生支持的内嵌视频格式有限。更麻烦的是新版本的 PowerPoint 支持的格式(比如 MPEG4 编码的 .mp4)旧版本还不支持,而你对手头的 ppt 即将播放的场所用什么系统什么版本的软件又无能为力,所以最稳妥的方式是,把所有视频转为基本所有版本的 Windows 和 Office 都支持的格式——wmv。 我用过各种 online 的网页版转码工具,需要上传下载太麻烦,还有文件大小限制。Windows 下面的 Movie Maker 免费,勉强可用,还是不顺手,而且除了 4:3 和 16:9,没法直接输出和原视频相同的画面比例。 之后在 Linux 下用 RecordMyDesktop 录屏,也面临把 .ogv 格式的视频转成其他格式,以及剪切视频片段的问题。在 Ubuntu Software Center 下载推荐度比较高的两个软件,还是不顺手,最终发现了终极解决方案:ffmpeg。 安装 去 官网 按提示安装即可,支持三大操作系统。唯一要吐槽的是,Ubuntu 14.04 等较新的版本

Eclipse编码格式

烂漫一生 提交于 2020-02-09 18:20:49
来源:http://e-ant.javaeye.com/blog/177579 如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码。然而, Eclipse工 作空间(workspace)的缺省字符编码是操作系统缺省的编码,简体中文操作系统 (Windows XP、Windows 2000简体中文)的缺省编码是GB18030,在此工作空间中建立的工程编码是GB18030,工程中建立的java文件也是GB18030。如果要使 新建立工程、java文件直接使UTF-8则需要做以下工作: 1、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到 general->Workspace,右侧Text file encoding,选择Other,改变为UTF-8,以后新建立工程其属性对话框中的Text file encoding即为UTF-8。 2、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到 general->Content Types,右侧Context Types树,点开Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8

Babel的使用方法

冷暖自知 提交于 2020-02-07 01:29:12
Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。 这意味着,你可以现在就用ES6编写程序,而不用担心现有环境是否支持。下面是一个例子。 //转码前 input.map( item => item+1 ); //转码后 input.map(function(item){ return item+1; }) 上面的原始代码用了箭头函数,这个特性还没有得到广泛支持,Babel将其转为普通函数,就能在现有的JavaScript环境执行了。 一、配置文件.babelrc Babel的配置文件是.babelrc,存放在项目的根目录下。使用Babel的第一步,就是配置这个文件。 该文件用来设置转码规则和插件,基本格式如下。 { "presets":[], "plugins":[] } presets字段设定转码规则,官方提供以下的规则集,你可以根据需要安装。 # ES2015 转码规则 $ npm install --save-dev babel-preset-es2015 # react 转码规则 $ npm install --save-dev babel-preset-react # ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个 $ npm install --save-dev babel-preset-stage-0 $ npm

Http协议转码

孤人 提交于 2020-02-06 18:32:02
UrlEnCode与UrlDeCode 有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。 下表中列出了一些URL特殊符号及编码 :替换为%3A  1. + URL 中+号表示空格 %2B 2. 空格 URL中的空格可以用+号或者编码 %20 3. / 分隔目录和子目录 %2F 4. ? 分隔实际的 URL 和参数 %3F 5. % 指定特殊字符 %25 6. # 表示书签 %23 7. & URL 中指定的参数间的分隔符 %26 8. = URL 中指定参数的值 %3D @RequestMapping("/test") public String test(String name) { System. out .println("name:" + name); return "test" + name; } public static void main(String[] args) { String userNameEncode = URLEncoder. encode ( "yusheng+jun" ) ; System. out .println("userNameEncode:" +

PHP urlencode 不得不说的秘密

只愿长相守 提交于 2020-02-04 10:44:26
PHP urlencode 方法可以算是使用率比较高的一个方法了。特别是在 API 接口设计的领域或使用其他第三方 API 的时候,经常会碰到使用 urlencode 的场景。 在几年前设计过一套 API 接口提供给 App 客户端调用。Android 客户端使用 Java 开发,他们会把参与按照文档定义的规则把参数名与值进行拼接之后再 urlencode 编码,然后再拼接上一个密钥 KEY 再 MD5 再转换为大写得到一个签名。服务器端收到这个请求之后,也会按照这个规则进行签名生成与客户端提交的签名进行判断。 结果问题就出来了。 // Android 客户端提交的信息如下: $params = [ 'method' => 'user.register', // 注册接口。 'v' => '1.0.0', // APP 版本号。 'mobile' => '14812345678', // 注册手机号。 'code' => '123456', // 短信验证码。 'password' => 'abcde fg' // 账号密码。注意这里带了一个空格。 ]; // 按照键名自然排序(升序)。 ksort($params); // 把键名与值拼接。 $str = ''; foreach ($params as $key => $value) { $str .= "{$key}{

字符编码与转码

风流意气都作罢 提交于 2020-02-01 02:25:13
需知 在python2默认编码是ASCII, python3里默认是unicode 在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string 转换原则 所有的编码都需要unicode作为中介来转换 utf-8转换程gb2312 首先通过解码【decode】转换成unicode编码 其次通过编码【encode】转换成gb2312编码 gb2312转换程utf-8 首先通过解码【decode】转换成unicode编码 其次通过编码【encode】转换成utf-8编码 实战(python3) import sys , time print ( '系统默认\t' , sys . getdefaultencoding ( ) ) #系统默认编码 str = '庆余年很好看哈' #字符串的编码是unicode str_utf8 = str . encode ( 'utf-8' ) str_gb2312 = str_utf8 . decode ( 'utf-8' ) . encode ( 'gb2312' ) #通过unicode转换 str_gbk = str . encode ( 'gbk' ) print ( 'unicode\t' , str ) print ( 'utf-8\t' , str_utf8 )

Rust macro开发新手入门

北慕城南 提交于 2020-01-31 17:45:50
Rust语言最强大的一个特点就是可以创建和利用宏/Macro。不过创建Rust宏看起来挺复杂,常常令刚接触Rust的开发者心生畏惧。这片文章的目的就是帮助你理解Rust Macro的基本运作原理,学习如何创建自己的Rust宏。 相关链接: 在线学编程 1、什么是Rust的宏/Macro? 如果你尝试过Rust,应该已经用过Rust的宏了: println! 。这个宏可以在终端输出一行文本,并且支持变量的插值。 简单地说,Rust宏让你可以发明自己的语法,编写出可以自行展开的代码,也就是我们通常所说的 元编程 ,你甚至可以用Rust宏来创作自己的DSL。 Rust宏的基本运作机制就是:首先匹配宏规则中定义的模式,然后将匹配结果绑定到变量,最后展开变量替换后的代码。 不理解也没有关系,让我们继续看。 2、如果创建Rust宏/Macro? 可以使用Rust预置的 macro_rules! 宏来创建一个新的Rust宏。 下图展示了如何创建一个空白的Rust宏: hey! ,这个宏什么功能也没有,我们现在只关注它的结构: () => {} 看起来很神秘,因为它不是标准的rust语法,是macro_rules!这个宏自己发明的,用来表示一条宏规则, => 左边是匹配模式,右边是等待展开的代码: 左边的小括号部分是Rust宏的匹配器/Matcher,用来匹配模式并捕捉变量

http内容协商

这一生的挚爱 提交于 2020-01-30 16:33:55
概览 对于特定的URL来说,服务器可以根据一些原则来决定发送什么内容给客户端最合适。在有些场合下,服务器甚至可以自动生成定制的页面。比如,服务器可以为手持设备把HTML页面转换成WML页面。这类动态内容变换被称为转码。这些变换动作是HTTP客户端和服务器之间进行内容协商的结果   共有3种不同的方法可以决定服务器上哪个页面最适合客户端:让客户端来选择、服务器自动判定,或让中间代理来选。这3种技术分别称为客户端驱动的协商、服务器驱动的协商以及透明协商 1 客户端驱动 对于服务器来说,收到客户端请求时只是发回响应,在其中列出可用的页面,让客户端决定要看哪个,这是最容易的事情。很显然,这是服务器最容易实现的方式,而且客户端很可能选择到最佳的版本(只要列表中有让客户端选择的足够信息)。不利之处是每个页面都需要两次请求:第一次获取列表,第二次获取选择的副本。这种技术速度很慢且过程枯燥乏味,让用户厌烦   从实现原理上来说,服务器实际上有两种方法为客户端提供选项:一是发送回一个HTML文档,里面有到该页面的各种版本的链接和每个版本的描述信息,另一种方法是发送回HTTP/1.1响应时,使用300 Multiple Choices响应代码。客户端浏览器收到这种响应时,在前一种情况下,会显示一个带有链接的页面,在后一种情况下,可能会弹出对话窗口,让用户做选择。不管怎么样

快速学习ES6新特性-修饰器(Decorator)

落爺英雄遲暮 提交于 2020-01-26 01:55:24
1.11、修饰器(Decorator) 修饰器(Decorator)是一个函数, 用来修改类的行为。 ES2017 引入了这项功能, 目前 Babel 转码器己经支持。 使用: 运行报错: 原因是,在ES6中,并没有支持该用法,在ES2017中才有,所以我们不能直接运行了,需要进行编码后再运行。转码的意思是:将ES6或ES2017转为ES5执行。类似这样: 来源: CSDN 作者: cwl_java 链接: https://blog.csdn.net/weixin_42528266/article/details/104030917