微信QQ内置X5内核MP4视频解析异常,请重试的解决办法
微信QQ浏览器对启用GZIP的网页地址包括多媒体地址解析不了,造成无法获取到正确的视频地址,返回【视频解析异常,请重试】
下面记录本人的解决办法:
对该站点禁用gzip
SetEnv no-gzip
找到站点域名配置所在的目录,这里是apache的conf/etc/v_host/下的XX.conf
ServerName ...
SetEnv no-gzip
实例见下图:

微信QQ浏览器对启用GZIP的网页地址包括多媒体地址解析不了,造成无法获取到正确的视频地址,返回【视频解析异常,请重试】
下面记录本人的解决办法:
对该站点禁用gzip
SetEnv no-gzip
找到站点域名配置所在的目录,这里是apache的conf/etc/v_host/下的XX.conf
ServerName ...
SetEnv no-gzip
实例见下图:

最近小鱼哥要做微信内置浏览器播放的小视频,o(︶︿︶)o 唉,微信和QQ自带的浏览器居然【解析视频异常,请重试】h264编码的MP4,经过多方打探和测试,发现地址是https就可以播放。这个应该跟微信的安全机制有关,没办法,只能将站点部署成https啦。可ssl证书卖得好贵哦,幸好在wdcp和lamp等论坛,发现let's Ensencrypt和塞班可以申请免费的SSL,就是麻烦点要续期,好了废话不多说,直接上干货,下面介绍在linux(centos6.4 64bit)下的申请。
1、下载letsencrypt
git clone https://github.com/letsencrypt/letsencrypt
2、打开目录letsencrypt
cd letsencrypt
3、检查和验证(这里可能会触发安装python)
./certbot-auto --help all
4、申请证书,将下面的邮箱和域名换成你的
./certbot-auto certonly --standalone --email guyuelangyu@163.com -d ldbzx.com -d zhibo.ldbzx.com
这里我安装时候出现80端口占用,所以多了小插曲
停止httpd
service httpd stop
5、再次申请证书
./certbot-auto certonly --standalone --email guyuelangyu@163.com -d ldbzx.com -d zhibo.ldbzx.com
重启httpd
service httpd start
6、申请成功后,/etc/letsencrypt/live/ldbzx.com(这个域名和上面的一致)下面会出现域名证书
这里就代表申请成功了,至于怎么部署看小鱼哥另外一篇文章。
说明:Let's Encrypt证书是有效期90天的,需要我们自己手工更新续期才可以。
./certbot-auto certonly --renew-by-default --email guyuelangyu@163.com -d ldbzx.com -d zhibo.ldbzx.com

















1、把/home目录下面的mydata目录压缩为mydata.zip
zip -r mydata.zip mydata #压缩mydata目录2、把/home目录下面的mydata.zip解压到mydatabak目录里面
unzip mydata.zip -d mydatabak3、把/home目录下面的abc文件夹和123.txt压缩成为abc123.zip
zip -r abc123.zip abc 123.txt4、把/home目录下面的wwwroot.zip直接解压到/home目录里面
unzip wwwroot.zip5、把/home目录下面的abc12.zip、abc23.zip、abc34.zip同时解压到/home目录里面
unzip abc*.zip6、查看把/home目录下面的wwwroot.zip里面的内容
unzip -v wwwroot.zip7、验证/home目录下面的wwwroot.zip是否完整
unzip -t wwwroot.zip8、把/home目录下面wwwroot.zip里面的所有文件解压到第一级目录
unzip -j wwwroot.zip
主要参数
-c:将解压缩的结果
-l:显示压缩文件内所包含的文件
-p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换
-t:检查压缩文件是否正确
-u:与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其它文件解压缩到目录中
-v:执行是时显示详细的信息
-z:仅显示压缩文件的备注文字
-a:对文本文件进行必要的字符转换
-b:不要对文本文件进行字符转换
-C:压缩文件中的文件名称区分大小写
-j:不处理压缩文件中原有的目录路径
-L:将压缩文件中的全部文件名改为小写
-M:将输出结果送到more程序处理
-n:解压缩时不要覆盖原有的文件
-o:不必先询问用户,unzip执行后覆盖原有文件
-P:使用zip的密码选项
-q:执行时不显示任何信息
-s:将文件名中的空白字符转换为底线字符
-V:保留VMS的文件版本信息
-X:解压缩时同时回存文件原来的UID/GID
在PHP中,可用is_writable()函数来判断一个 文件/目录 是否可写,详情如下:
参考
is_writable
(PHP 4, PHP 5)
is_writable — 判断给定的文件名是否可写
说明
bool is_writable ( string $filename )
如果文件存在并且可写则返回 TRUE。($filename 参数可以是一个目录名,即检查目录是否可写。 )
记住 PHP 也许只能以运行 webserver 的用户名(通常为 'nobody')来访问文件。不计入安全模式的限制。
Example #1 is_writable() 例子
<?php
$filename = 'test.txt';
if (is_writable($filename)) {
echo 'The file is writable';
} else {
echo 'The file is not writable';
}
?>
但是,上面那个函数在PHP4中是有BUG的,尤其是在Windows服务器下判断不准官方相关bug报告链接如下:
http://bugs.php.net/bug.php?id=27609
为了兼容各个操作系统,可自定义一个判断可写函数,代码如下:
/**
* 判断 文件/目录 是否可写(取代系统自带的 is_writeable 函数)
*
* @param string $file 文件/目录
* @return boolean
*/
function new_is_writeable($file) {
if (is_dir($file)){
$dir = $file;
if ($fp = @fopen("$dir/test.txt", 'w')) {
@fclose($fp);
@unlink("$dir/test.txt");
$writeable = 1;
} else {
$writeable = 0;
}
} else {
if ($fp = @fopen($file, 'a+')) {
@fclose($fp);
$writeable = 1;
} else {
$writeable = 0;
}
}
return $writeable;
} 原因:
默认对MP4、flv等播放资源进行了gzip的压缩(一般为省带宽,站点默认都带gzip)
解决思路:
使用.htaccess文件来限制gzip,对视频类型不作压缩,以下是代码
<IfModule mod_rewrite.c>
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:m3u8|mp4)$ no-gzip dont-vary #设置不对后缀.m3u8和mp4的文件进行压缩
</IfModule> 注意:https证书的注册和部署教程 这里忽略
笔记:
1、修改站点地址siteurl,如果能登录后台则直接修改为https://www.kinmor.com,如果不能,则通过数据库进行修改,表options的siteUrl
2、config.inc.php加入下面一行代码
/* 开启HTTPS /
define('__TYPECHO_SECURE__',true);