zoukankan      html  css  js  c++  java
  • 七牛php-sdk使用-多媒体处理

    在七牛对象存储可以创建公共的bucket和私有的bucket,私有的不可以直接使用域名加资源key的方式进行访问,需要附加下载凭证。

    私有bucket

    关于下载凭证的生成,php-sdk已经提供了方法privateDownloadUrl位于Auth类中:

    /**
     * 生成私有空间文件的下载凭证
     * @param   $url 私有空间资源文件的完整url,不是资源key
     */
    public function genDownloadCertificate($url)
    {
        $auth = $this->getAuth();
        $url = $auth->privateDownloadUrl($url);
        return $url;
    }
    
    音频格式转换

    因为遇到需求在web端播放手机端录制的音频,因为手机端使用的是对手机压缩性很好的amr格式,但是web端没有播放器可以播放amr格式的音频,所以需要转换为mp3格式。

    直接使用持久化处理转为mp3,命令:

    $saveas = base64_urlSafeEncode($privateBucketName.':'.$newName.'.mp3');
    $pfop = 'avthumb/mp3|saveas/'.$saveas;
    $res  =  $this->persistentOps($amrSourceKey,$privateBucketName,$pfop);
    

    关于persistentOps方法,之前文档处理那篇已经介绍过,点击查看

    在音频处理的时候,发现处理的速度非常慢,经查阅文档得知,默认持久化处理使用的是公共的管道队列,所以很慢,我们需要在七牛管理控制台->产品列表->多媒体处理 中创建自己的队列,并在new PersistentFop()的时候第三个参数传递管道名

    视频切片

    大部门的web视频播放器都支持mp4格式的视频播放,这里存在一个问题,一个较大(>1G)如果我们直接将一个七牛空间的视频连接地址抛给播放器,可以播放,但当我们需要快进的时候,视频会缓冲特别长的时间,这是因为播放器会将之前的部分全部加载到本地。

    那如何实现快进的功能?就是将视频切片,即转换为m3u8格式。pfop命令:

    $saveas = base64_urlSafeEncode($this->bucket_for_video.':'.$newName.'.m3u8');
    $pfop = 'avthumb/m3u8/noDomain/1/vb/500k|saveas/'.$saveas;//500k视频切片的大小
    $res = $this->persistentOps($mp4SourceKey,$this->bucket_for_video,$pfop);
    

    这样就可以将m3u8文件链接地址交给播放器,这是文件都在公共bucket的情况下,如果m3u8文件存在于私有的bucket中,我们需要使用genDownloadCertificate,并且链接添加?pm3u8/0参数。

    $url = genDownloadCertificate('http://private.qiniudomain.cn/xxxxxxx.m3u8?pm3u8/0');
    
  • 相关阅读:
    Vue.js $nextTick
    JS---函数名和变量名重名
    for循环中嵌套setTimeout,执行顺序和结果该如何理解?
    Rocket MQ整体简介
    ant Desgn Pro Vue 修改 title
    STS插件创建springboot项目,pom第一行报unkown错误
    c# 读取二进制文件并转换为 16 进制显示
    c# Winform 调用可执行 exe 文件
    按字节读取txt文件缓存区大小设置多少比较好?
    天翼云服务开放端口
  • 原文地址:https://www.cnblogs.com/skyfynn/p/6565991.html
Copyright © 2011-2022 走看看