1. 1
  2. 1
  3. 1
  4. 1
  • 欢迎您
    php使用ffmpeg走过的坑
    sxy 2022-07-14 技术语录

    216

    PHP使用ffmpeg

    1、ffmpeg视频编码出现Unknown encoder 'libx264'问题


    下载freetype链接:https://download.savannah.gnu.org/releases/freetype/

    fontconfig链接:https://www.freedesktop.org/wiki/Software/fontconfig/

    问题:

    image.png

    解决:

    make CFLAGS=-std=c99


    问题:

    image.png

    解决:

    在配置的时候添加CFLAGS="-O3 -fPIC" ,如下命令:

    CFLAGS="-O3 -fPIC" ./configure   --enable-shared  --prefix=/usr/

    image.png

    *make的时候要make clean


    我们使用drawtext命令行可能出现“No such filter: 'drawtext” 错误,这个说明我们没有这滤镜,这时要重新编译并加上一些参数。


    //生成静态库


    ./configure --enable-libfreetype --enable-libfontconfig --enable-libfribidi --disable-yasm --prefix=/usr/local/


    //生成动态库


    ./configure --enable-libfreetype --enable-libfontconfig --enable-libfribidi --enable-shared --enable-pic --prefix=/usr/local/


    --enable-libfreetype 启用libfreetype


    问题:Unknown encoder 'libx264'

    解决:

    需要重新编译安装ffmpeg

    1. 配置ffmpeg时,加上x264,如:

    ./configure --enable-gpl --enable-libx264

    2. make clean

    3. make 

    4. make install

    问题:

    nasm/yasm not found or too old. Use –disable-x86asm for a crippled build.

    解决:

    1.在http://www.tortall.net/projects/yasm/releases/上下载适合自己的版本
    2.解压并进入yasm的目录
    3.执行./configure
    4.执行make
    5.执行sudo make install


    问题:编译ffmpeg的时候出现ERROR: libx264 not found


    x264源码下载地址:https://www.videolan.org/developers/x264.html

    image.png

    安装nasm
    2.14版本的下载地址:
    http://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2


    编辑 vim /etc/profile

    export PATH=$PATH:/usr/local/nasm/bin

    source /etc/profile


    警告:WARNING: using libx264 without pkg-config

    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH  //(此路径为.pc文件所在路径),可使用


    下载gettext:http://ftp.gnu.org/gnu/gettext/


    每次重新编译完,meke的时候,要make clean!


    PHP执行exec(ffmpeg) 命令返回127


    解决:

    第一步:vim /etc/ld.so.conf.d/ffmpeg.conf

    第二步:添加/usr/local/ffmpeg/lib

    第三步:ldconfig







  • 欢迎您
    国密sm3算法
    sxy 2022-06-23 技术语录

    135

    国密sm3算法代码:

    //计算sm3
    public function _sm3($arr)
    {
        require dirname(__DIR__).'/lib/sm3/vendor/autoload.php';
        $str = $this->ascll($arr);
        return strtoupper(sm3($str));
    }
    //自定义ascll排序
    public function ascll($params = array())
    {
        if(!empty($params)){
    	$p =  ksort($params);
    	   if($p){
    	      $str = '';
    	      foreach ($params as $k=>$val){
    	        $str .= $k .'=' . $val . '&';
    	       }
    	      $strs = rtrim($str, '&');
    	      $strs .= '&7B40A8B1C602F1DB9C6D2E5E793A42196344EC7DAA55463C0EAEC8DAEEF9A9BD';
    	      return $strs;
    	     }
    	 }
    	 return '参数错误';
    }


  • 欢迎您
    阿里云一键登录&获取手机号
    sxy 2022-06-23 技术语录

    151

    阿里云一键登录代码&获取手机号:

    <?php
    /**
     * @Note 阿里云一键登录&获取手机号
     * @Time 2022-05-11
    */
    use AlibabaCloud\SDK\Dypnsapi\V20170525\Dypnsapi;
    use Darabonba\OpenApi\Models\Config;
    use AlibabaCloud\SDK\Dypnsapi\V20170525\Models\GetMobileRequest;
    use AlibabaCloud\SDK\Dypnsapi\V20170525\Models\VerifyMobileRequest;
    
    class SampleController extends BaseController
    {
    
        protected $accessKeyId = 'accessKeyId ';
        protected $accessKeySecret = 'accessKeySecret ';
        /**
         * 使用AK&SK初始化账号Client
         * @param string $accessKeyId
         * @param string $accessKeySecret
         * @return Dypnsapi
         */
        public function createClient(){
            $config = new Config([]);
            $config->accessKeyId = $this->accessKeyId;
            $config->accessKeySecret = $this->accessKeySecret;
            // 访问的域名
            $config->endpoint = "dypnsapi.aliyuncs.com";
            return new Dypnsapi($config);
        }
        //一键登录取号
    	public function aliyunloginAction()
        {
            require dirname(__DIR__).'/lib/alyauth/vendor/autoload.php';
        	$client = self::createClient();
            
            $request = new GetMobileRequest([]);
            $accessToken = Arr::get($_REQUEST,'accessToken','');
            if($accessToken==''){
                return Response::apiJsonError(0,'参数错误');
            }
            $args = array(
                'token'=>$accessToken,
            );
            $request->accessToken = @$args['token'];
            $response = $client->getMobile($request);
            exit(json_encode($response->body));
    
        }
    
        //本机号码校验认证
        public function verifyPhoneAction()
        {
            require dirname(__DIR__).'/lib/alyauth/vendor/autoload.php';
            $client = self::createClient();
            
            $accessCode = Arr::get($_REQUEST,'accessToken','');
            $phoneNumber = Arr::get($_REQUEST,'phoneNumber','');
            if($accessCode=='' || $phoneNumber==''){
                return Response::apiJsonError(0,'参数错误');
            }
            $outId = 'NJLIVE'.time().mt_rand(10000,99999);
            $verifyMobileRequest = new VerifyMobileRequest([
                'accessCode'=>$accessCode,
                "phoneNumber" => $phoneNumber,
                "outId" => $outId,
            ]);
            // 复制代码运行请自行打印 API 的返回值
            $response = $client->verifyMobile($verifyMobileRequest);
            exit(json_encode($response->body));
    
        }
    
    	
    }


  • 欢迎您
    GIT&SCVN操作总结
    sxy 2022-06-22 技术语录

    144

    GIT操作手册:

    0、git init - 初始化仓库

    1、git status 查看状态

    2、git diff 查看修改内容

    3、git add 添加文件到暂存区

    4、git commit  -m ''  将暂存区内容添加到仓库中

    5、git reset 回退版本

    6、git rm 将文件从暂存区和工作区中删除

    7、git mv 移动或重命名工作区文件

    8、git remote 远程仓库操作

    9、git fetch 从远程获取代码库

    10、git pull 下载远程代码并合并

    11、git push 上传远程代码并合并

    12、git mergetool 调出合并工具,这个是出现冲突使用

    image.png

    13、git reset --hard FETCH_HEAD 没有后面的hard,不会冲掉本地工作区。只会冲掉stage区


    SVN操作:

    基本相同

  • 欢迎您
    IP、域名、DNS、host概念
    转载 2021-10-27 技术语录

    325

    IP、域名、DNS、host概念


    IP,是给每个连接在互联网上的主机分配的一个32位地址,理论上有2^32个


    域名,由于IP地址基于数字,不方便记忆,于是便用域名来代替IP地址,域名是一个IP地址的“面具”


    DNS,用于记录IP地址和域名之间映射关系的服务


    host,本地的域名IP映射


    客户端输入域名,向服务器发出请求,首先会到DNS系统进行域名解析,DNS会返回对应的IP地址给客户端,客户端再用此IP地址向服务器发出请求。

    浏览器一般都有DNS缓存,访问过一次的域名会将其IP地址缓存到浏览器中,方便下次访问。

    如果在host中配了域名到ip的映射,就不会走DNS,而是直接走host。本地优先级最高。

    ————————————————

    原文链接:https://blog.csdn.net/u014158869/article/details/87742681


  • 欢迎您
    ECSHOP报错的问题
    sxy 2021-06-16 技术语录

    462

    ECShop出现Strict Standards: Only variables should be passed by reference in的解决方法

    解决办法:

    打开cls_template.php文件中发现下面这段代码:

    $tag_sel = array_shift(explode(' ', $tag));

    修改为

    $tagArr = explode(' ', $tag);
    $tag_sel = array_shift($tagArr);

    这样之后顶部的报错没掉了,左侧和底部的报错还需要去ecshop的后台点击清除缓存才能去除。

    下面我们遇到这段代码,在php5.3以上版本,也会报错误。

    $file_suffix = strtolower(array_pop(explode('.', $file_name)));

    修改方法:

    $fnarray=explode('.', $file_name);
    $file_suffix = strtolower(array_pop($fnarray));

    ECSHOP完美解决Deprecated: preg_replace()报错的问题

    2)、解决办法:

    代码:

    return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);

    修改为:

    return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);


  • 欢迎您
    phpstorm使用
    张楚岚 2021-02-26 技术语录

    496

    最近使用了PHPstorm编辑器,所以在这里总结一下:

    一、编辑器汉化:

    1、点击File

    image.png

    2、点击setting,打开设置

    image.png

    3、搜索框搜索chinese关键字,查找中文汉化插件

    image.png

    4、安装完成后重启phpstorm

    image.png

    5、提示restart重启点击

    image.png

    6、成功

    image.png

  • 欢迎您
    花生壳代理(PHP)无法获取用户ip
    转载 2021-02-01 技术语录

    526

    1、问题描述

    因为需要,所以用花生壳搭建了一个网站,但是获取到的都是本机地址(其它电脑访问网站得到的也是127.0.0.1),

    很正常,毕竟不是云主机。但让人气愤的是花生壳官方没有给出解决方案,无语。

    <?php echo $_SERVER["REMOTE_ADDR"];?>


    //输出127.0.0.1

    2、解决办法

    1)通过搜狐获取用户ip

    <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
    <script type="text/javascript">  
        alert(returnCitySN["cip"]);
    </script>


    网站返回的是json格式的数据,如下

     

     2)再用ajax传递给后端(我这里是拍php)

    前端这样子

    <script>
    $.ajax({url: "php路径",type: "post",data: {ip: returnCitySN["cip"]},success: function(){alert("终于可行了!");}});
    </script>


    后端这样子

    $ip = $_POST['ip'];//留着$_SERVER吧,万一有用呢
    $ip = isset($ip) ? $ip : $_SERVER["REMOTE_ADDR;"];
    
    
    转载链接:https://blog.csdn.net/qq_45492912/article/details/106910635










  • 姓名:孙小宇
  • 职业:PHP开发
  • 邮箱:yntx420@163.com
  • 定位:河北 · 张家口
       
  •   总访问量:20.17w+
  •   累计访问量:17.44w+
  •