• 七牛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');
    
  • 相关阅读:
    js技巧收集(200多个)
    Ajax跨域访问的问题?
    最新软件下载提供列表
    美食家家V1.1[强力推荐]
    吉他和弦帮手以及曲子下载
    网译(在线中文英语翻译软件)[强力推荐]
    网上电子婚宴请柬
    吉他和弦帮手v2.3注册机
    1万多个英语单词mp3下载
    菜谱大全数据库下载(ACCESS)
  • 原文地址:https://www.cnblogs.com/skyfynn/p/6565991.html
Copyright © 2020-2023  润新知