示例#1
0
def trigger_img_persistent_fop(img_src,
                               access_key=settings.QINIU_ACCESS_KEY,
                               secret_key=settings.QINIU_SECRET_KEY,
                               bucket=settings.QINIU_BUCKET_NAME):
    '''
        触发图片静态持久性操作
    '''
    try:
        if settings.QINIU_BUCKET_DOMAIN in img_src:
            key = '/'.join(img_src.split("//")[1].split("/")
                           [1:])  #去掉 http://7xsx9g.com1.z0.glb.clouddn.com/
            q = Auth(access_key, secret_key)
            large_saveas_key = urlsafe_base64_encode(bucket + ":" + key +
                                                     "-large")
            medium_saveas_key = urlsafe_base64_encode(bucket + ":" + key +
                                                      "-medium")
            large_ops = "imageView2/2/w/970/h/970/q/100|saveas/" + large_saveas_key  #设置七牛的静态持久化,参数需要跟七牛账号那里设置的一致
            medium_ops = "imageView2/2/w/580/h/350/q/50|saveas/" + medium_saveas_key  #具体看这个文章 http://blog.csdn.net/netdxy/article/details/50223733
            ops = [large_ops, medium_ops]
            pfop = PersistentFop(q, bucket)
            ret, info = pfop.execute(key, ops, 1)
            if info.exception is None:
                print key + " persistent fop to success"
            else:
                print key + " persistent fop to failed"
    except Exception, e:
        print str(e)
        print key + " persistent fop to failed"
示例#2
0
    def transcode_h264(self, bucket_name, key):

        file_tail = ['ori.mp4', '.mp4']

        for type in file_tail:

            des_filename = key.replace(type, 'h264.mp4')

            if des_filename is not None:
                break

        op = op_save(
            'avthumb/mp4/ab/32k/aq/10/ar/44100/acodec/libfaac/r/25/vb/260k/vcodec/libx264/s/640x360/autoscale/1/stripmeta/0',
            bucket_name, des_filename)

        ops = []
        ops.append(op)
        self.pfop = PersistentFop(self.q, bucket_name, 'videoconverth264')
        ret, info = self.pfop.execute(key, ops, 1)

        if 200 == info.status_code:
            return 0
        else:

            return info.text_body[10:-2]
示例#3
0
 def test_pfop(self):
     q = Auth(access_key, secret_key)
     pfop = PersistentFop(q, 'testres', 'sdktest')
     op = op_save('avthumb/m3u8/segtime/10/vcodec/libx264/s/320x240', 'pythonsdk', 'pfoptest')
     ret, info = pfop.execute('sintel_trailer.mp4', op, 1)
     print(info)
     assert ret['persistentId'] is not None
示例#4
0
def bangumi_cover_transcoding(key, sizi):
    q = Auth(access_key, secret_key)

    #要转码的文件所在的空间和文件名。
    bucket = 'cover-cache'

    #转码是使用的队列名称。
    #pipeline = 'mpsdemo'

    #要进行转码的转码操作。
    if sizi == 'min':
        fops = 'imageView2/2/w/450/h/600/format/jpg/q/75|imageslim'
        newkey = 'bangumi/cover/' + key
    else:
        fops = 'imageView2/2/w/120/h/160/format/jpg/q/75|imageslim'
        newkey = 'bangumi/cover/min/' + key
    #可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间
    saveas_key = urlsafe_base64_encode('video-cover:' + newkey)

    fops = fops + '|saveas/' + saveas_key
    pfop = PersistentFop(q, bucket)  #, pipeline

    ops = []
    ops.append(fops)
    ret, info = pfop.execute(key, ops, 1)
    print(info)
示例#5
0
def waterMark():
    '''
    已上传的图片打水印 
    :return: 
    '''

    #1、指定 空间绑定的域名、 水印图片地址、 空间名称、 空间水印原图Key、 私有处理队列
    domain = "test.zhaojianfeng.cn"
    wmImg = "https://olhvkds73.qnssl.com/logo.png"
    bucket = "test-bucket"
    key = "a0.jpg"
    pipeline = "image-pipeline"
    encodeWmImg = urlsafe_base64_encode(wmImg)

    #2、创建Auth对象、 指定fops 操作、 saveas接口及签名
    auth = Auth(access_key=accessKey, secret_key=secretKey)
    fops = "watermark/1/image/" + encodeWmImg + "/gravity/SouthWest"
    saveKey = urlsafe_base64_encode(bucket + ":" + "p111_a0.jpg")
    fops = fops + "|saveas/" + saveKey
    signTarget = domain + "/" + key + "?" + fops
    sign = urlsafe_base64_encode(signTarget)
    fops = fops + "/sign/" + sign

    #3、执行持久化操作
    pfop = PersistentFop(auth=auth, bucket=bucket, pipeline=pipeline)
    ops = []
    ops.append(fops)
    ret, info = pfop.execute(key, ops)

    #4、查看执行结果
    print(info)
    assert ret['persistentId'] is not None
示例#6
0
def transcoder(q, bucket_name, pipeline, key, trns_model):
    #sufix = os.path.splitext(key_name)[1][1:]
    #assert(sufix == 'rmvb' or ...)
    key_path = os.path.split(key)[0]
    key_name = os.path.split(key)[1]
    key_name = os.path.splitext(key_name)[0]

    fops = ''
    if trns_model == 0:
        fops = 'avthumb/m3u8/segtime/10/ab/32k/ar/44100/acodec/libfaac/r/15/vb/200k/vcodec/libx264/s/424x240/autoscale/1/stripmeta/0/noDomain/1'
        saveas_key = urlsafe_base64_encode(saved_bucket_name + ':' + key_path +
                                           '/' + key_name + '_240p.m3u8')
        fops = fops + '|saveas/' + saveas_key
    elif trns_model == 1:
        fops = 'avthumb/m3u8/segtime/10/ab/64k/ar/44100/acodec/libfaac/r/18/vb/500k/vcodec/libx264/s/848x480/autoscale/1/stripmeta/0/noDomain/1'
        saveas_key = urlsafe_base64_encode(saved_bucket_name + ':' + key_path +
                                           '/' + key_name + '_480p.m3u8')
        fops = fops + '|saveas/' + saveas_key
    elif trns_model == 2:
        fops = 'avthumb/m3u8/segtime/10/ab/96k/ar/44100/acodec/libfaac/r/24/vb/1000k/vcodec/libx264/s/1280x720/autoscale/1/stripmeta/0/noDomain/1'
        saveas_key = urlsafe_base64_encode(saved_bucket_name + ':' + key_path +
                                           '/' + key_name + '_720p.m3u8')
        fops = fops + '|saveas/' + saveas_key
    else:
        print('ERROR: unexpected transcoding model!')
    #print(key_path + key_name + ' Transcoding to: ' + saved_bucket_name + ':' + key_path + '/' + key_name + '_xxx.m3u8')

    pfop = PersistentFop(q, bucket_name, pipeline)
    ops = []
    ops.append(fops)
    ret, info = pfop.execute(key, ops, 1)
    print(info)
    assert ret['persistentId'] is not None
示例#7
0
文件: qiniu.py 项目: jimczj/Stucampus
def trigger_img_persistent_fop(
    img_src,
    access_key=settings.QINIU_ACCESS_KEY,
    secret_key=settings.QINIU_SECRET_KEY,
    bucket=settings.QINIU_BUCKET_NAME,
):
    """
        触发图片静态持久性操作
    """
    try:
        if settings.QINIU_BUCKET_DOMAIN in img_src:
            key = "/".join(img_src.split("//")[1].split("/")[1:])  # 去掉 http://7xsx9g.com1.z0.glb.clouddn.com/
            q = Auth(access_key, secret_key)
            large_saveas_key = urlsafe_base64_encode(bucket + ":" + key + "-large")
            medium_saveas_key = urlsafe_base64_encode(bucket + ":" + key + "-medium")
            large_ops = "imageView2/2/w/970/h/970/q/100|saveas/" + large_saveas_key  # 设置七牛的静态持久化,参数需要跟七牛账号那里设置的一致
            medium_ops = (
                "imageView2/2/w/580/h/350/q/50|saveas/" + medium_saveas_key
            )  # 具体看这个文章 http://blog.csdn.net/netdxy/article/details/50223733
            ops = [large_ops, medium_ops]
            pfop = PersistentFop(q, bucket)
            ret, info = pfop.execute(key, ops, 1)
            if info.exception is None:
                print key + " persistent fop to success"
            else:
                print key + " persistent fop to failed"
    except Exception, e:
        print str(e)
        print key + " persistent fop to failed"
示例#8
0
文件: t_qiniu.py 项目: qyzxg/mylearn
 def water_mark(self, key):
     saveas_key = urlsafe_base64_encode('{}:{}'.format(self.bucket_name, key))
     fops = self.fops + '|saveas/' + saveas_key
     pfop = PersistentFop(self.q, self.bucket_name, self.pipeline)
     ops = list()
     ops.append(fops)
     pfop.execute(key, ops, 1)
示例#9
0
 def roundPic(self, bn, key):
     """
     触发持久化
     :param bn: 空间名称
     :param key: 文件名称
     :return: 
     """
     #创建授权对象
     auth = Auth(self.AK, self.SK)
     #指定 私有队列
     pipeline = "image-pipeline"
     #指定数据处理操作
     fops = "roundPic/radius/!50p"
     #定义另存的文件名称
     new_key = "round_" + key
     #另存的编码
     saveAs = urlsafe_base64_encode(bn + ":" + new_key)
     #管道拼接
     fops = fops + "|saveas/" + saveAs
     #创建数据处理对象 pfop
     pfop = PersistentFop(auth=auth, bucket=bn, pipeline=pipeline)
     ops = []
     ops.append(fops)
     #执行数据处理 execute
     r, i = pfop.execute(key, ops, 1)
     #查看处理信息
     print(i)
示例#10
0
def video_transcoding(key, pxtype):

    if pxtype == '360p':
        video_sizi = '640x360'
        video_kbps = '250k'
        video_mp3kbps = '128k'

    if pxtype == '480p':
        video_sizi = '852x480'
        video_kbps = '550k'
        video_mp3kbps = '192k'

    if pxtype == '720p':
        video_sizi = '1280x720'
        video_kbps = '850k'
        video_mp3kbps = '230k'

    if pxtype == '1080p':
        video_sizi = '1920x1080'
        video_kbps = '1000k'
        video_mp3kbps = '320k'

    if pxtype == '2k':
        video_sizi = '2560x1440'
        video_kbps = '3200k'
        video_mp3kbps = '320k'

    if pxtype == '4k':
        video_sizi = '3840x2160'
        video_kbps = '4000k'
        video_mp3kbps = '320k'

    q = Auth(access_key, secret_key)

    #要转码的文件所在的空间和文件名。
    bucket = 'video-cache'
    key = str(key)
    filekey = str(key)

    #转码是使用的队列名称。
    pipeline = 'transcoding'

    #要进行转码的转码操作。
    fops = 'avthumb/mp4/s/' + video_sizi + '/vb/' + video_kbps + '/ab/' + video_mp3kbps + '/acodec/libmp3lame'

    #生成新的文件名
    name = key.split(".")[0]
    key_tpye = key.split(".")[1]
    key = name + '-' + pxtype + '.' + 'mp4'

    #可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间
    saveas_key = urlsafe_base64_encode('video-store:' + "bangumi/" + key)

    fops = fops + '|saveas/' + saveas_key
    pfop = PersistentFop(q, bucket, pipeline)
    ops = []
    ops.append(fops)
    ret, info = pfop.execute(filekey, ops, 1)
    print(info)
示例#11
0
 def test_pfop(self):
     q = Auth(access_key, secret_key)
     pfop = PersistentFop(q, 'testres', 'sdktest')
     op = op_save('avthumb/m3u8/segtime/10/vcodec/libx264/s/320x240', 'pythonsdk', 'pfoptest')
     ops = []
     ops.append(op)
     ret, info = pfop.execute('sintel_trailer.mp4', ops, 1)
     print(info)
     assert ret['persistentId'] is not None
示例#12
0
 def test_pfop(self):
     q = Auth(access_key, secret_key)
     pfop = PersistentFop(q, "testres", "sdktest")
     op = op_save("avthumb/m3u8/segtime/10/vcodec/libx264/s/320x240", "pythonsdk", "pfoptest")
     ops = []
     ops.append(op)
     ret, info = pfop.execute("sintel_trailer.mp4", ops, 1)
     print(info)
     assert ret["persistentId"] is not None
示例#13
0
文件: tasks.py 项目: fengpsky/convert
def convert_to_pdf(source_key, convert_task_id=None):
    dest_key = source_key + '.pdf'
    op = op_save('yifangyun_preview', QINIU_BUCKET_NAME, dest_key)
    pfop = PersistentFop(
        qiniu_auth, QINIU_BUCKET_NAME,
        notify_url=urlparse.urljoin(
            QINIU_CALLBACK_URL,
            '/api/qiniu_persist_callback?convert_task_id={}'.format(convert_task_id)))
    ret, info = pfop.execute(source_key, [op, ])
    return ret, info
示例#14
0
 def picture_thu(self, file_name):
     # 要进行转码的转码操作。
     fops = 'imageMogr2/auto-orient/thumbnail/600x600>/blur/1x0/quality/75|imageslim'
     #  可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间
     saveas_key = urlsafe_base64_encode('{}:{}'.format(self.bucket_name, file_name))
     fops = fops+'|saveas/'+saveas_key
     pfop = PersistentFop(self.q, self.bucket_name)
     ops = []
     ops.append(fops)
     ret, info = pfop.execute(file_name, ops, 1)
     print(ret)
示例#15
0
文件: models.py 项目: GTxx/youjiao
 def convert_pdf(self):
     src_bucket_name = current_app.qiniu.PRIVATE_BUCKET_NAME
     dest_bucket_name = src_bucket_name
     QINIU_DOCUMENT_CALLBACK_URL = urljoin(
         current_app.qiniu.CALLBACK_URL, self.QINIU_DOCUMENT_CALLBACK_ROUTE)
     pfop = PersistentFop(current_app.qiniu.qiniu_auth, src_bucket_name,
                          notify_url=QINIU_DOCUMENT_CALLBACK_URL)
     saved_key = self.qiniu_key + '.pdf'
     op = op_save('yifangyun_preview', dest_bucket_name, saved_key.encode('utf-8'))
     ret, info = pfop.execute(self.qiniu_key, [op, ], force=1)
     if info.status_code != 200:
         raise Exception('error {}'.format(info))
示例#16
0
文件: models.py 项目: GTxx/youjiao
 def convert_mp3(self):
     src_bucket_name = current_app.qiniu.PRIVATE_BUCKET_NAME
     dest_bucket_name = src_bucket_name
     QINIU_AUDIO_CALLBACK_URL = urljoin(
         current_app.qiniu.CALLBACK_URL, self.QINIU_AUDIO_CALLBACK_ROUTE)
     pfop = PersistentFop(current_app.qiniu.qiniu_auth, src_bucket_name,
                          notify_url=QINIU_AUDIO_CALLBACK_URL)
     saved_key = self.qiniu_key + '.mp3'
     op = op_save('avthumb/mp3', dest_bucket_name, saved_key.encode('utf-8'))
     ret, info = pfop.execute(self.qiniu_key, [op], force=1)
     if info.status_code != 200:
         raise Exception('error {}'.format(info))
     return True
示例#17
0
 def convert_mp3(self):
     src_bucket_name = current_app.qiniu.PRIVATE_BUCKET_NAME
     dest_bucket_name = src_bucket_name
     QINIU_AUDIO_CALLBACK_URL = urljoin(current_app.qiniu.CALLBACK_URL,
                                        self.QINIU_AUDIO_CALLBACK_ROUTE)
     pfop = PersistentFop(current_app.qiniu.qiniu_auth,
                          src_bucket_name,
                          notify_url=QINIU_AUDIO_CALLBACK_URL)
     saved_key = self.qiniu_key + '.mp3'
     op = op_save('avthumb/mp3', dest_bucket_name,
                  saved_key.encode('utf-8'))
     ret, info = pfop.execute(self.qiniu_key, [op], force=1)
     if info.status_code != 200:
         raise Exception('error {}'.format(info))
     return True
示例#18
0
    def perform_pfop(self, origin):
        access_key = settings.QINIU['ACCESS_KEY']
        secret_key = settings.QINIU['SECRET_KEY']
        path = reverse('greetings-pfop-notify')
        notify_url = urlparse.urljoin(origin, path)

        auth = Auth(access_key, secret_key)
        pfop = PersistentFop(auth, 'tatmusic', 'wechataudio', notify_url)
        op = op_save('avthumb/mp3', 'tatmusic', self.key + '.mp3')
        ret, info = pfop.execute(self.key, [op])
        if self.data is None:
            self.data = ret
        else:
            self.data.update(ret)
        self.save(update_fields=['data'])
示例#19
0
文件: models.py 项目: GTxx/youjiao
 def video_cut(self):
     src_bucket_name = current_app.qiniu.PRIVATE_BUCKET_NAME
     dest_bucket_name = src_bucket_name
     pipeline = current_app.qiniu.PIPELINE
     QINIU_VIDEO_CALLBACK_URL = urljoin(
             current_app.qiniu.CALLBACK_URL, self.QINIU_CUT_VIDEO_CALLBACK)
     pfop = PersistentFop(current_app.qiniu.qiniu_auth,
                          src_bucket_name, pipeline,
                          QINIU_VIDEO_CALLBACK_URL)
     saved_key = self.qiniu_key + '.short.mp4'
     # import ipdb; ipdb.set_trace()
     op = op_save('avthumb/mp4/t/180', dest_bucket_name, saved_key.encode('utf-8'))
     ret, info = pfop.execute(self.qiniu_key, [op, ], force=1)
     if info.status_code != 200:
         raise Exception(u'error {}'.format(info))
示例#20
0
 def convert_pdf(self):
     src_bucket_name = current_app.qiniu.PRIVATE_BUCKET_NAME
     dest_bucket_name = src_bucket_name
     QINIU_DOCUMENT_CALLBACK_URL = urljoin(
         current_app.qiniu.CALLBACK_URL, self.QINIU_DOCUMENT_CALLBACK_ROUTE)
     pfop = PersistentFop(current_app.qiniu.qiniu_auth,
                          src_bucket_name,
                          notify_url=QINIU_DOCUMENT_CALLBACK_URL)
     saved_key = self.qiniu_key + '.pdf'
     op = op_save('yifangyun_preview', dest_bucket_name,
                  saved_key.encode('utf-8'))
     ret, info = pfop.execute(self.qiniu_key, [
         op,
     ], force=1)
     if info.status_code != 200:
         raise Exception('error {}'.format(info))
示例#21
0
文件: cloud.py 项目: xd905/Niputv
def Generate_video_cover(coverkey,videokey):
    print(coverkey,videokey)
    q = Auth(access_key, secret_key)
    bucket = 'video-cache'
    key = videokey

    #要进行转码的转码操作。
    fops = 'vframe/jpg/offset/3/w/300/h/168'
    #可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间
    saveas_key = urlsafe_base64_encode('video-cover:'+coverkey+'.jpg')
    fops = fops+'|saveas/'+saveas_key
    pfop = PersistentFop(q, bucket)
    ops = []
    ops.append(fops)
    ret, info = pfop.execute(key, ops, 1)
    return coverkey+'.jpg'
示例#22
0
    def pack_files(self,
                   bucket_name: str,
                   key: str,
                   mk_zip_args: dict,
                   encoding: str = 'utf-8',
                   save_as_bucket_name: str = None,
                   save_as_key: str = None,
                   delete_after_days: int = None,
                   pipeline: str = None):
        """
        少量文件压缩(mode=2)

        :param bucket_name: 文件储存空间名
        :param key: 文件储存空间某个文件的文件名(存储空间内指定资源的文件名字。此处的key所指的资源内容对 mkzip 操作本身没有影响,必填是由于
                    pfop 接口规格要求请求 body 中参数必须包含 bucket 和 key,因此即使未对空间特定资源进行操作,在执行 mkzip 操作时仍然
                    需要指定账号下的特定空间和该空间的已有资源。)
        :param mk_zip_args: 文件压缩参数,dict类型,key为文件url,value为文件alias
        :param encoding: 压缩包内资源命名的编码,目前支持 gbk 和 utf-8,默认 utf-8
        :param save_as_bucket_name: 储存压缩好的文件的空间名
        :param save_as_key: 压缩文件另存为的名称
        :param delete_after_days: 将在多少天之后删除此压缩好的文件,不填则不会自动删除
        :param pipeline: 管道名称,不填则使用默认管道
        :return:
        """

        fops = 'mkzip/2/encoding/' + urlsafe_base64_encode(encoding)
        for url, alias in mk_zip_args.items():
            a = '/url/' + urlsafe_base64_encode(
                url) + '/alias/' + urlsafe_base64_encode(alias)
            fops += '/url/' + urlsafe_base64_encode(
                url) + '/alias/' + urlsafe_base64_encode(alias)

        if save_as_bucket_name is not None and save_as_key is not None:
            save_as = urlsafe_base64_encode(save_as_bucket_name + ':' +
                                            save_as_key)
            fops = fops + '|saveas/' + save_as

            if delete_after_days is not None:
                fops += '/deleteAfterDays/' + str(delete_after_days)

        ops = []
        pfop = PersistentFop(self._qiniu_auth, bucket_name, pipeline)

        ops.append(fops)
        ret, info = pfop.execute(key, ops, 1)

        return ret, info
示例#23
0
 def video_cut(self):
     src_bucket_name = current_app.qiniu.PRIVATE_BUCKET_NAME
     dest_bucket_name = src_bucket_name
     pipeline = current_app.qiniu.PIPELINE
     QINIU_VIDEO_CALLBACK_URL = urljoin(current_app.qiniu.CALLBACK_URL,
                                        self.QINIU_CUT_VIDEO_CALLBACK)
     pfop = PersistentFop(current_app.qiniu.qiniu_auth, src_bucket_name,
                          pipeline, QINIU_VIDEO_CALLBACK_URL)
     saved_key = self.qiniu_key + '.short.mp4'
     # import ipdb; ipdb.set_trace()
     op = op_save('avthumb/mp4/t/180', dest_bucket_name,
                  saved_key.encode('utf-8'))
     ret, info = pfop.execute(self.qiniu_key, [
         op,
     ], force=1)
     if info.status_code != 200:
         raise Exception(u'error {}'.format(info))
示例#24
0
    def pack_large_number_of_files(self,
                                   bucket_name: str,
                                   index_file_key: str,
                                   encoding: str = 'utf-8',
                                   save_as_bucket_name: str = None,
                                   save_as_key: str = None,
                                   delete_after_days: int = None,
                                   pipeline: str = None):
        """
        大量文件压缩(mode=4)
        为了将大量文件压缩,可以将待压缩文件URL写入一个索引文件,上传至bucket,再对该索引文件进行的mkzip操作。
        索引文件格式为:<br>
        /url/<Base64EncodedURL1>[/alias/<Base64EncodedAlias1>]
        /url/<Base64EncodedURL2>[/alias/<Base64EncodedAlias2>]
        ... ...
        /url/<Base64EncodedURLN>[/alias/<Base64EncodedAliasN>]

        :param bucket_name: 索引文件储存空间名
        :param index_file_key: 索引文件名
        :param encoding: 压缩包内资源命名的编码,目前支持 gbk 和 utf-8,默认 utf-8
        :param save_as_bucket_name: 储存压缩文件的空间名
        :param save_as_key: 压缩文件另存为的名称
        :param delete_after_days: 将在多少天之后删除此压缩好的文件,不填则不会自动删除
        :param pipeline: 管道名称,不填则使用默认管道
        :return:
        """
        fops = 'mkzip/4/encoding/' + urlsafe_base64_encode(encoding)

        if save_as_bucket_name is not None and save_as_key is not None:
            save_as = urlsafe_base64_encode(save_as_bucket_name + ':' +
                                            save_as_key)
            fops = fops + '|saveas/' + save_as

            if delete_after_days is not None:
                fops += '/deleteAfterDays/' + str(delete_after_days)

        ops = []
        pfop = PersistentFop(self._qiniu_auth, bucket_name, pipeline)

        ops.append(fops)
        ret, info = pfop.execute(index_file_key, ops, 1)

        return ret, info
示例#25
0
文件: qn.py 项目: ChenXXiang888/admin
def get_img_from_video(video_url):
    # 要转码的文件所在的空间和文件名。
    q = Auth(ak, sk)
    bucket_name = 'padmom'
    # 解析URL 获取key
    index = video_url.index('img.padmom.com')
    index += len('img.padmom.com/')
    key = video_url[index:]
    # key = video_url
    # 是使用的队列名称,不设置代表不使用私有队列,使用公有队列。
    pipeline = 'castle_video'
    # 要进行转码的转码操作。
    fops = 'vframe/jpg/offset/1/w/640/h/640'
    pfop = PersistentFop(q, bucket_name, pipeline)
    ops = []
    ops.append(fops)
    ret, info = pfop.execute(key, ops, 1)
    # app.logger.info("get_img_from_video info={%s}", info)
    assert ret['persistentId'] is not None
    return ret['persistentId']
示例#26
0
    def encode_video_asyn(self):
        '''#对已经上传到七牛的视频发起异步转码操作,好像并没什么用'''

        q = Auth(self.QN_ACCESS_KEY,self.QN_SECRET_KEY)
        key = 'test_video_test.mp4'
        # 是使用的队列名称,不设置代表不使用私有队列,使用公有队列。
        # pipeline = 'your_pipeline'
        # 要进行转码的转码操作。
        # fops = 'avthumb/mp4/s/640x360/vb/1.25m'
        fops = 'avthumb/mp4/vcodec/libx264|saveas/'
        # 可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间
        saveas_key = urlsafe_base64_encode(self.QN_BUCKET+':n'+key)
        fops = fops+'|saveas/'+saveas_key
        pfop = PersistentFop(q, self.QN_BUCKET)
        ops = []
        ops.append(fops)
        ret, info = pfop.execute(key, ops, 1)
        print(info)
        print('-------------')
        print(ret)
示例#27
0
    def start_job(self, obj, transcode_kwargs, message=''):
        """
        https://developer.qiniu.com/dora/manual/1248/audio-and-video-transcoding-avthumb
        """

        from qiniu import PersistentFop

        if 'force' not in transcode_kwargs:
            transcode_kwargs['force'] = 1

        pfop = PersistentFop(self.client, self.bucket_name, self.pipeline_id,
                             self.notify_url)
        ret, info = pfop.execute(**transcode_kwargs)

        content_type = ContentType.objects.get_for_model(obj)
        job = EncodeJob()
        job.id = ret['persistentId']
        job.content_type = content_type
        job.object_id = obj.pk
        job.message = message
        job.save()
示例#28
0
def get_video_frame(path):
    key = path

    fops = 'vframe/jpg/offset/10/w/480/h/360'
    #pipeline = 'abc'
    saveas_key = urlsafe_base64_encode(bucket_name + ':' +
                                       os.path.splitext(path)[0] + '.jpg')
    fops = fops + '|saveas/' + saveas_key
    print(saveas_key)
    policy = {
        'scope': key,
        'deadline': 0,
        'persistentOps': fops
        #'persistentPipeline': pipeline
    }

    pfop = PersistentFop(q, bucket_name)
    ops = []
    ops.append(fops)
    ret, info = pfop.execute(key, ops, 1)
    print(ret)
    print(info)
示例#29
0
文件: cloud.py 项目: xd905/Niputv
def cover_transcoding(key):
    q = Auth(access_key, secret_key)
    
    #要转码的文件所在的空间和文件名。
    bucket = 'cover-cache'
    key = key

    #转码是使用的队列名称。
    #pipeline = 'mpsdemo'

    #要进行转码的转码操作。
    fops = 'imageView2/1/w/300/h/168/q/90|imageslim'
    #可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间
    saveas_key = urlsafe_base64_encode('video-cover:'+ key)

    fops = fops+'|saveas/'+saveas_key
    pfop = PersistentFop(q, bucket)#, pipeline

    ops = []
    ops.append(fops)
    ret, info = pfop.execute(key, ops, 1)
    print(info)
    assert ret['persistentId'] is not None
示例#30
0
    def convert_img(self, src_path, new_type, dst_path=None, force=0):
        """
        :param src_path: 待转码的源文件
        :param new_type: 新类型
        :param dst_path: 转码后存放的文件名, 为None则覆盖源文件
        :param force: 是否强制覆盖已经存在原来的文件,否则如果new_key对应的文件已经存在就不执行命令了
        :return: result_dict, 类似{"persistentId": 5476bedf7823de4068253bae};
                persistentId可以用于查询异步任务的进度,如:http://api.qiniu.com/status/get/prefop?id=z0.5896682345a2650cfd7733b2
        """

        pfop_instance = PersistentFop(self.auth, self.bucket,
                                      DEFAULT_PRIVATE_ASYNC_QUEUE)
        # 如果不传表示覆盖
        dst_path = dst_path or src_path
        encoded_key = base64.b64encode('%s:%s' % (self.bucket, dst_path))
        # 转化格式并进行存储
        fops = [
            'imageMogr2/format/{new_type}|saveas/{encoded_key}'.format(
                new_type=new_type, encoded_key=encoded_key)
        ]
        result, _ = pfop_instance.execute(src_path, fops, force=force)

        return result
示例#31
0
def trig_video_part(key):
    q = Auth(access_key, secret_key)
    # 要转码的文件所在的空间和文件名。
    bucket = g_bucket_name
    # 转码是使用的队列名称。
    pipeline = 'video_handle'
    pat = urlsafe_base64_encode("videopart-$(count)")
    # 要进行转码的转码操作。
    fops = "segment/mp4/segtime/5/pattern/%s" % pat
    # 可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间
    # saveas_key = urlsafe_base64_encode(g_bucket_name+':自定义文件key')
    # fops = fops + '|saveas/' + saveas_key
    pfop = PersistentFop(
        q,
        bucket,
        pipeline,
        notify_url="https://balimiao.cn/front/qiniu/video_part_callback")
    ops = []
    ops.append(fops)
    ret, info = pfop.execute(key, ops, 1)
    if "persistentId" in ret and ret["persistentId"]:
        return True
    else:
        g_stdlogging.exception("[trig_video_part]%s %s" % (ret, info))
示例#32
0
    def ops(self, urlList):
        ak = AccountMgr().getAccessKey()
        sk = AccountMgr().getSecretKey()
        auth = Auth(ak, sk)
        domain = "test.zhaojianfeng.cn"
        pipeline = "av-pipeline"
        bucket = "test-bucket"
        key = "mayun0.mp4"
        mSaveAs = urlsafe_base64_encode(bucket + ":mayun_all.mp4")

        encodeUrls = []
        for i in range(len(urlList)):
            encodeUrls.append(urlsafe_base64_encode(urlList[i]))
        fops = "avconcat/2/format/mp4/" + "/".join(encodeUrls) + "|saveas/" + mSaveAs
        print(fops)
        sign = urlsafe_base64_encode(domain + "/" + key + "?" + fops)
        fops = fops + "/sign/" + sign

        pfops = PersistentFop(auth, bucket, pipeline)
        ops = []
        ops.append(fops)
        ret, info = pfops.execute(key, ops)
        print(info)
        assert ret['persistentId'] is not None
示例#33
0
	def transcode_h264(self,bucket_name,key):

		file_tail = ['ori.mp4','.mp4']
	
		for type in file_tail:
		
			des_filename = key.replace(type,'h264.mp4')

			if des_filename is not None:
				break

		op=op_save('avthumb/mp4/ab/32k/aq/10/ar/44100/acodec/libfaac/r/25/vb/260k/vcodec/libx264/s/640x360/autoscale/1/stripmeta/0',bucket_name,des_filename)

		ops = []
		ops.append(op)
		self.pfop=PersistentFop(self.q,bucket_name,'videoconverth264')
		ret,info = self.pfop.execute(key,ops,1)

		if 200 == info.status_code:
			return 0
		else:
				
			return info.text_body[10:-2]
示例#34
0
# -*- coding: utf-8 -*-
# flake8: noqa
from qiniu import Auth, PersistentFop, build_op, op_save, urlsafe_base64_encode

#对已经上传到七牛的视频发起异步转码操作 
access_key = 'Access_Key'
secret_key = 'Secret_Key'
q = Auth(access_key, secret_key)

#要转码的文件所在的空间和文件名。
bucket = 'Bucket_Name'
key = '1.mp4'

#转码是使用的队列名称。
pipeline = 'mpsdemo'

#要进行视频截图操作。
fops = 'vframe/jpg/offset/1/w/480/h/360/rotate/90'

#可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间
saveas_key = urlsafe_base64_encode('目标Bucket_Name:自定义文件key')
fops = fops+'|saveas/'+saveas_key

pfop = PersistentFop(q, bucket, pipeline)
ops = []
ops.append(fops)
ret, info = pfop.execute(key, ops, 1)
print(info)
assert ret['persistentId'] is not None
示例#35
0
class QiniuWrap(object):

	def __init__(self):
		
		configer = Configer('')

		access_key = configer.get_configer('QINIU','access_key')
		secret_key = configer.get_configer('QINIU','secret_key')

		self.q=Auth(access_key,secret_key)
		self.bucket = BucketManager(self.q)
	
	def transcode_h264(self,bucket_name,key):

		file_tail = ['ori.mp4','.mp4']
	
		for type in file_tail:
		
			des_filename = key.replace(type,'h264.mp4')

			if des_filename is not None:
				break

		op=op_save('avthumb/mp4/ab/32k/aq/10/ar/44100/acodec/libfaac/r/25/vb/260k/vcodec/libx264/s/640x360/autoscale/1/stripmeta/0',bucket_name,des_filename)

		ops = []
		ops.append(op)
		self.pfop=PersistentFop(self.q,bucket_name,'videoconverth264')
		ret,info = self.pfop.execute(key,ops,1)

		if 200 == info.status_code:
			return 0
		else:
				
			return info.text_body[10:-2]

        def download_pub_file(self,bucket_name,key,path='.'):

                base_url = 'http://%s.okjiaoyu.cn/%s' % (bucket_name,key)
                request = urllib2.Request(base_url)
                response = urllib2.urlopen(request)
                pic = response.read()

                with open(path + '/' + key,'wb') as fd:
                        fd.write(pic)

                return response.code

        def download_pri_file(self,bucket_name,key):

                base_url = 'http://%s.okjiaoyu.cn/%s' % (bucket_name,key)
                private_url = q.private_download_url(base_url,expires = 3600)
                request = urllib2.Request(base_url)
                response = urllib2.urlopen(request)
                pic = response.read()

                with open(path + '/' + key,'wb') as fd:
                        fd.write(pic)

                return response.code

	def upload_file(self,bucket_name,key,localfile):

		if bucket_name is None or key is None or localfile is None:
			return 'sys error'

		token = self.q.upload_token(bucket_name,key)

		ret,info = put_file(token,key,localfile)

		if 200 == info.status_code:
			return None
		else:
			return info.text_body[10:-2]
	def upload_data(self,bucket_name,key,data):

		if bucket_name is None or key is None or data is None:
			return 'sys error'

		token = self.q.upload_token(bucket_name,key)

		ret,info = put_data(token,key,data)

		if 200 == info.status_code:
			return None
		else:
			return info.text_body[10:-2]


        def get_file_info(self,bucket_name,key):
                bucket_name = bucket_prex + bucket_name
                ret, info = bucket.stat(bucket_name, key)
                return info

        def copy_file(self,frm_bucket_name,frm_key,to_bucket_name,to_key):
                frm_bucket_name = bucket_prex + frm_bucket_name
                to_bucket_name = bucket_prex + to_bucket_name
                ret, info = bucket.copy(frm_bucket_name, frm_key, to_bucket_name, to_key)
                return ret

        def move_file(self,frm_bucket_name,frm_key,to_bucket_name,to_key):
                frm_bucket_name = bucket_prex + frm_bucket_name
                to_bucket_name = bucket_prex + to_bucket_name
                ret, info = bucket.move(frm_bucket_name, frm_key, to_bucket_name, to_key2)
                return ret
        
        def del_file(self,bucket_name,key):
        	bucket_name = bucket_prex + bucket_name
                ret, info = bucket.delete(bucket_name, key)
                return ret

	def get_uptoken(self,bucket_name,key):
			
		return self.q.upload_token(bucket_name,key)
示例#36
0
class QiniuWrap(object):
    def __init__(self):

        configer = Configer('')

        access_key = configer.get_configer('QINIU', 'access_key')
        secret_key = configer.get_configer('QINIU', 'secret_key')

        self.q = Auth(access_key, secret_key)
        self.bucket = BucketManager(self.q)

    def transcode_h264(self, bucket_name, key):

        file_tail = ['ori.mp4', '.mp4']

        for type in file_tail:

            des_filename = key.replace(type, 'h264.mp4')

            if des_filename is not None:
                break

        op = op_save(
            'avthumb/mp4/ab/32k/aq/10/ar/44100/acodec/libfaac/r/25/vb/260k/vcodec/libx264/s/640x360/autoscale/1/stripmeta/0',
            bucket_name, des_filename)

        ops = []
        ops.append(op)
        self.pfop = PersistentFop(self.q, bucket_name, 'videoconverth264')
        ret, info = self.pfop.execute(key, ops, 1)

        if 200 == info.status_code:
            return 0
        else:

            return info.text_body[10:-2]

    def download_pub_file(self, bucket_name, key, path='.'):

        base_url = 'http://%s.okjiaoyu.cn/%s' % (bucket_name, key)
        request = urllib2.Request(base_url)
        response = urllib2.urlopen(request)
        pic = response.read()

        with open(path + '/' + key, 'wb') as fd:
            fd.write(pic)

        return response.code

    def download_pri_file(self, bucket_name, key):

        base_url = 'http://%s.okjiaoyu.cn/%s' % (bucket_name, key)
        private_url = q.private_download_url(base_url, expires=3600)
        request = urllib2.Request(base_url)
        response = urllib2.urlopen(request)
        pic = response.read()

        with open(path + '/' + key, 'wb') as fd:
            fd.write(pic)

        return response.code

    def upload_file(self, bucket_name, key, localfile):

        if bucket_name is None or key is None or localfile is None:
            return 'sys error'

        token = self.q.upload_token(bucket_name, key)

        ret, info = put_file(token, key, localfile)

        if 200 == info.status_code:
            return None
        else:
            return info.text_body[10:-2]

    def upload_data(self, bucket_name, key, data):

        if bucket_name is None or key is None or data is None:
            return 'sys error'

        token = self.q.upload_token(bucket_name, key)

        ret, info = put_data(token, key, data)

        if 200 == info.status_code:
            return None
        else:
            return info.text_body[10:-2]

    def get_file_info(self, bucket_name, key):
        bucket_name = bucket_prex + bucket_name
        ret, info = bucket.stat(bucket_name, key)
        return info

    def copy_file(self, frm_bucket_name, frm_key, to_bucket_name, to_key):
        frm_bucket_name = bucket_prex + frm_bucket_name
        to_bucket_name = bucket_prex + to_bucket_name
        ret, info = bucket.copy(frm_bucket_name, frm_key, to_bucket_name,
                                to_key)
        return ret

    def move_file(self, frm_bucket_name, frm_key, to_bucket_name, to_key):
        frm_bucket_name = bucket_prex + frm_bucket_name
        to_bucket_name = bucket_prex + to_bucket_name
        ret, info = bucket.move(frm_bucket_name, frm_key, to_bucket_name,
                                to_key2)
        return ret

    def del_file(self, bucket_name, key):
        bucket_name = bucket_prex + bucket_name
        ret, info = bucket.delete(bucket_name, key)
        return ret

    def get_uptoken(self, bucket_name, key):

        return self.q.upload_token(bucket_name, key)
示例#37
0
def add_post(request):
    if not request.user.is_anonymous():
        if request.method == 'POST':
            post_form = PostForm(request.POST)
            tag = TagForm(request.POST)
            if post_form.is_valid() and tag.is_valid():
                cd_tag = tag.cleaned_data
                tag_name = cd_tag['tag_name']
                for tag_list in tag_name.split(','):
                    Tag.objects.get_or_create(tag_name=tag_list.strip())
                title = post_form.cleaned_data['caption']
                user = request.user
                content = post_form.cleaned_data['content']
                post = Post(caption=title, user=user, content=content, vedio_xml_link="/home/yusn/liteforum/liteforum/static/ressvr/video.xml")
                post.save()
                #tags
                for tag_list in tag_name.split(','):
                    post.tags.add(Tag.objects.get(tag_name=tag_list.strip()))
                    post.save()
                post_id = Post.objects.order_by('-publish_time')[0].id
                #qiniu
                if 'file' in request.FILES:
                    post.vedio_count = 1
                    post.save()
                    bucket_src = 'sns-picture'
                    q = qiniu.Auth('iaB9zwTfCcWzZgIoHKmxexJee1mY_301y5fnsSSZ', '4c75Nb8qypfYrwOhOwOY_rLdYAiH0937sKYh6yWh')
                    data = request.FILES['file']
                    token = q.upload_token(bucket_src)
                    key = request.FILES['file'].name+".mp4"
                    ret, info = qiniu.put_data(token, key, data)
                    pfop = PersistentFop(q, bucket_src)
                    op = op_save('avthumb/mp4/vcodec/libx264/s/', bucket_src, key)
                    ops = []
                    ops.append(op)
                    ret, info = pfop.execute(key, ops, 1)
                    print(info)
                    assert ret['persistentId'] is not None
                    if ret is not None:
                        print('All is OK')
                    else:
                        print(info) # error message in info
                    #create a new video xml
                    os.chdir("/home/yusn/liteforum/liteforum/static/ressvr")
                    template_object = open('video.xml')
                    try:
                         all_the_text = template_object.read()
                         all_the_text = all_the_text.replace("#replace#", request.FILES['file'].name.encode("utf-8"))
                         new_xml = open(request.FILES['file'].name.encode("utf-8")+'.xml', 'w')
                         new_xml.write(all_the_text)
                         new_xml.close()
                         post.vedio_xml_link = request.FILES['file'].name.encode("utf-8")+'.xml'
                         post.save()
                    finally:
                         template_object.close( )
                return HttpResponseRedirect('/forum/%s' % post.id)
        else:
            post_form = PostForm()
            tag = TagForm(initial={'tag_name': 'others'})
        return render_to_response('forum/add_post.html',
                                  {'form': post_form, 'tag': tag}, RequestContext(request))
    else:
        return render(request, 'forum/login.html', {})
示例#38
0
文件: main.py 项目: guoshijie/python
# coding: utf-8
# zhangtaichao
import config.param as param
from qiniu import Auth, PersistentFop, build_op, op_save

key_src= '赤壁赋第一讲赏读.mp4'

q = Auth(param.AccessKey,param.SecretKey)

pfop = PersistentFop(q,param.bucket,param.pipeline)
#op = op_save('avthumb/m3u8/segtime/10/vcodec/libx264/s/320x240', saved_bucket, saved_key)
#op = op_save('avthumb/m3u8/segtime/10/vcodec/libx264/s/320x240')

ops = {
    'r':24,
    'vb':'56k'
}
op = build_op('avthumb','flv',**ops)
ops = []
ops.append(op)
ret, info = pfop.execute(key_src, ops, 1)
print(info)
assert ret['persistentId'] is not None
示例#39
0
文件: mkzip_4.py 项目: pasca520/qiniu
from qiniu import Auth, urlsafe_base64_encode, PersistentFop

# AK,SK,初始化
access_key = 'your_AK'
secret_key = 'your_SK'
q = Auth(access_key, secret_key)

# 参数给定
bucket_name = ''  #空间名
key = ''  #索引文件
fops = 'mkzip/4'
save_key = urlsafe_base64_encode('')  #保存的空间和名字
fops = fops + '|saves/' + save_key
pipline = ''  # 指定私有队列

# 开始执行
pfops = PersistentFop(q, bucket_name, pipline)
ops = []
ops.append(fops)
ret, info = pfops.execute(key, ops, 1)
print('本次处理结果的作业ID', ret)
print('返回结果:', info)
示例#40
0
from qiniu import Auth, PersistentFop, build_op, op_save, urlsafe_base64_encode

#对已经上传到七牛的视频发起异步转码操作
access_key = 'Access_Key'
secret_key = 'Secret_Key'
q = Auth(access_key, secret_key)

#要转码的文件所在的空间和文件名。
bucket = 'Bucket_Name'
key = '1.mp4'

#转码是使用的队列名称。
pipeline = 'mpsdemo'

#需要添加水印的图片UrlSafeBase64,可以参考http://developer.qiniu.com/code/v6/api/dora-api/av/video-watermark.html
base64URL = urlsafe_base64_encode(
    'http://developer.qiniu.com/resource/logo-2.jpg')

#视频水印参数
fops = 'avthumb/mp4/' + base64URL

#可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间
saveas_key = urlsafe_base64_encode('目标Bucket_Name:自定义文件key')
fops = fops + '|saveas/' + saveas_key

pfop = PersistentFop(q, bucket, pipeline)
ops = []
ops.append(fops)
ret, info = pfop.execute(key, ops, 1)
print(info)
assert ret['persistentId']
示例#41
0
# coding: utf-8
# zhangtaichao
import config.param as param
from qiniu import Auth, PersistentFop, build_op, op_save

key_src = '赤壁赋第一讲赏读.mp4'

q = Auth(param.AccessKey, param.SecretKey)

pfop = PersistentFop(q, param.bucket, param.pipeline)
#op = op_save('avthumb/m3u8/segtime/10/vcodec/libx264/s/320x240', saved_bucket, saved_key)
#op = op_save('avthumb/m3u8/segtime/10/vcodec/libx264/s/320x240')

ops = {'r': 24, 'vb': '56k'}
op = build_op('avthumb', 'flv', **ops)
ops = []
ops.append(op)
ret, info = pfop.execute(key_src, ops, 1)
print(info)
assert ret['persistentId'] is not None