QT中出现这种重复定义的问题很正常
H264原始流与本地音频结合传输方式之流程说明
特殊的需求引出的特殊处理
为什么会有这样的需求?
众所周知,在直播行业内用的最多的软件是六间房直播伴侣、OBS这类软件。这类软件的特点是可以在视频上任意叠加别的视频、图片、文字、桌面等等。但是在VR(虚拟现实)领域,这些特点都变成了缺点甚至是缺陷。因为在VR领域,讲究的是身临其境,任意叠加视频之外的东西会严重破坏3D感,在这里我就不对此做详细的理论说明了。
其次,目前的2D直播,手机端直播是不太在乎视频的质量的,PC端的直播顶多也是1080P。但是在VR领域,1080P也是完全不能满足需求的,所以目前所有的直播伴侣是不能用的。这也是要自己做的根本原因。
最后,目前主播用的电脑配置基本是i5左右,不会太好。VR领域的视频分辨率较大,在PC端做软编会严重的消耗资源,性能很差,甚至在什么事情都不干的情况下也无法保证30FPS。另外现在出的3D摄像头,例如Insta360,都是支持RTMP或者RTSP这种协议拉取已经编码好的流,那我们完全可以将这些流拿来直接用。至于为什么要结合本地视频是因为主播要用特殊的声卡,出来的声音会做特殊处理,这点是小小摄像头无法做到的。
博客迁移那点事儿
这辈子要迁移多少次博客!
契机
从开始写(转)博客到现在,已经有好几年了,从之前的CSDN,到之后的WordPress建站,折腾了很多回,也有很多时候没有再写什么东西了,更多的时候只是转帖。最近在搞FFMEPG,受益于雷霄骅的帮助,解决了很多的难题,但是他在2016年8月2日猝死在实验室让我十分的惊讶和感慨。看着他的博客觉得他一定是一个善于专研的人,也能够把自己研究的东西能很耐心的总结出来,然后供大家学习,非常优秀。现在工作太忙,已经很久没有时间慢慢的总结一些东西了,不管是技术上的还是其他方面的,所以决定再次开始写博客。
[转]如何处理异常? catch Exception OR catch Throwable
在Java中,当你需要统一处理异常的时候,你是会选择catch (Exception),还是直接catch (Throwable)?
Java的异常体系
Throwable: Java中所有异常和错误类的父类。只有这个类的实例(或者子类的实例)可以被虚拟机抛出或者被java的throw关键字抛出。同样,只有其或其子类可以出现在catch子句里面。
Error: Throwable的子类,表示严重的问题发生了,而且这种错误是不可恢复的。
Exception: Throwable的子类,应用程序应该要捕获其或其子类(RuntimeException例外),称为checked exception。比如:IOException, NoSuchMethodException…
RuntimeException: Exception的子类,运行时异常,程序可以不捕获,称为unchecked exception。比如:NullPointException.
Java8中Lambda表达式的10个例子
例1: 用Lambda表达式实现Runnable接口
|
|
输出:
这个例子使我们学到了java8中Lambda表达式的书写方式:
(参数) -> 表达式
(参数) -> 语句
(参数) -> { 语句 }
例如,如果你的方法只是在控制台打印信息,则可以这么写:
|
|
如果你的方法接收两个参数,那么:
顺带提一句,一般来说在Lambda表达式中要尽量保持变量的简洁性。这会使你的代码简短而能保持在一行之内。所以像上面的代码可以选择变量名类似a,b或者x,y之类的,比起even和odd来会更好。
Python之在Windows 7下安装PIL
在PIL的官方网页上,给出了很多PIL的版本,当选择Win32版本在Windows 7下安装时,会报出无法找到Python的提示,即使正确安装了Python 2.7。在网上查阅后,有人如下回答:
问题:
在64位Win7下安装PIL库,提示注册表中找不到Python2.7(肯定是有的)。
原因:
PIL官方http://www.pythonware.com/products/pil/提供的PIL二进制安装库都是32位的。
64位程序和32位程序检测注册表的位置是不一样的:
64-bit: HKLM|HKCU\SOFTWARE\
32-bit: HKLM|HKCU\SOFTWARE\wow6432node\
我安装的是Python2.7 x64版,所以相关信息是在 HKLM|HKCU\SOFTWARE\下面,32位程序在HKLM|HKCU\SOFTWARE\wow6432node\下面找Python安装信息,肯定是找不到了。
解决:
幸好有人提供了非官方的64位库(官方源码编译版)。
http://www.lfd.uci.edu/~gohlke/pythonlibs/
在提供的网址下,下载PIL 64位的版本,果然可以用了。
注:在linux下安装PIL for Python3.x,可以到https://github.com/sloonz/pil-py3k下载相应版本。
Ruby操作mysql数据库及中文编码解决方案
搭建ruby mysql环境
1. 安装ruby2.2.1
2. 安装mysql插件
3. 数据库编码修改
4.ruby文件的编码:
加入
通过下面的语句可以查看编码:
Data truncation: Out of range value adjusted for column "***"
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value adjusted for column '***' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3513)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2548)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1605)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1524)
出现这个问题的原因有以下几种:
1.超过字段的表示范围。
2.设置了无符号的字段,却传了负数。
[转]Git 常用命令大全
Git 是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势。
Git常用操作命令:
1) 远程仓库相关命令
检出仓库:$ git clone git://github.com/jquery/jquery.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url –push [name] [newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]
*如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下:
$git push origin test:master // 提交本地test分支作为远程的master分支
$git push origin test:test // 提交本地test分支作为远程的test分支
Spring MVC 之 View,ViewResolver
一、概念理解
View —View接口表示一个响应给用户的视图,例如jsp文件,pdf文件,html文件等,它的定义如下
该接口只有两个方法定义,分别表明该视图的ContentType和如何被渲染。Spring中提供了丰富的视图支持,几乎包含所有你想得到的,并且Spring的视图拓展性很好,你可以轻松实现自己的视图。
ViewResolver — ViewResolver接口定义了如何通过view 名称来解析对应View实例的行为,它的定义相当简单:
该接口只有一个方法,通过view name 解析出View。同样Spring提供了丰富的ViewResolver实现用来解析不同的View: