腾讯云-云点播:设置视频录制的回调函数,将腾讯录制的音频文件保存到本地中

这篇具有很好参考价值的文章主要介绍了腾讯云-云点播:设置视频录制的回调函数,将腾讯录制的音频文件保存到本地中。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用场景:

我们在使用腾讯的云点播实现视频的录制功能时,需要将录制的视频保存到本地系统中时。

1、下载腾讯录制的视频文件

#下载使用腾讯实现录制的视频文件
def download_tencent_dvr(video_url,file_path):
    '''
    :param video_url: 要下载的音频文件
    :param file_path: 文件夹/xxx.mp4
    :return:
        /static/tencent_dvr/病历号/xxx.mp4 #下载成功
        False  #代表下载失败
    '''
    #音频文件保存的位置:这个看自己
    save_path = os.path.join(STATIC_PATH, 'tencent_dvr', file_path)
    save_path = save_path.replace('\\','/')
    #查看保存音频文件的目录是否存在,不存在就增加该目录
    dir_path = os.path.dirname(save_path)
    if not os.path.exists(dir_path):
        os.makedirs(dir_path)
    #文件名相同时,修改名字
    co=0
    while True:
        co+=1
        if os.path.exists(save_path):
            dir,filename = file_path.rsplit('/')
            name,suffix = filename.split('.')
            name = name[:21]+f'-{co}'
            file_path = dir+'/'+f'{name}.{suffix}'
            save_path = os.path.join(STATIC_PATH, 'tencent_dvr', file_path)
        else:
            break
    #将其中的\ 转成/
    save_path = save_path.replace('\\', '/')
    #响应给视图的路径: /static/tencent_dvr/病例号/xxx.mp4
    ret_path = save_path.split('static/')[-1]
    ret_path ='/static/'+ret_path
    print('腾讯录制的视频保存到本地:',ret_path)
    #获取到数据
    try:
        #拿到响应数据
        response = requests.get(video_url, stream=True)
        if response.status_code == 200:
            #将文件保存到本地
            with open(save_path, 'wb') as file:
                for chunk in response.iter_content(chunk_size=1024):
                    file.write(chunk)
            print("视频下载完成!")
            return ret_path.replace('\\','/')
        else:
            print('视频文件获取不到')
            return False
    except Exception as e:
        print(str(e))
        return False

2、删除腾讯点播录制的视频

import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.vod.v20180717 import vod_client, models
 
def delete_tencent_dvr_file(file_id):
    'file_id: 要删除的录制的文件id'
    #腾讯云密钥
    SecretId ='xxxxx'
    SecretKey ='xxxxx'
    try:
        # 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
        # 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
        # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
        cred = credential.Credential(SecretId, SecretKey)
        # 实例化一个http选项,可选的,没有特殊需求可以跳过
        httpProfile = HttpProfile()
        httpProfile.endpoint = "vod.tencentcloudapi.com"
 
        # 实例化一个client选项,可选的,没有特殊需求可以跳过
        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        # 实例化要请求产品的client对象,clientProfile是可选的
        client = vod_client.VodClient(cred, "", clientProfile)
 
        # 实例化一个请求对象,每个接口都会对应一个request对象
        req = models.DeleteMediaRequest()
        params = {
            'FileId':f'{file_id}'
        }
        req.from_json_string(json.dumps(params))
 
        # 返回的resp是一个DeleteMediaResponse的实例,与请求对象对应
        resp = client.DeleteMedia(req)
        # 输出json格式的字符串回包
        print(resp.to_json_string())#成功响应结果:{"RequestId":"xxxxx"}
        print('删除成功成功')
    except TencentCloudSDKException as err:
        print(err)
if __name__ == '__main__':
    delete_tencent_file(32708350099551451xx)

3、设置回调函数

回调时,腾讯响应的数据格式

{
            'EventGroupId': 3,
            'EventType': 311,
            'CallbackTs': 1687680818516,
            'EventInfo': {
                'RoomId': '2306250032', #房间号
                'EventTs': 1687680813,
                'UserId': 'auto_record_1400817148_2306250032_mix',
                'TaskId': 'D1lp8uRRsuuG3V68MIVNru8tSnRy9B0fUJlm2LFuJaB-++Iw+fNiovmWXn6voPWooAtBnMMA',
                'Payload': {
                    'Status': 0,
                    'TencentVod': { #
                        'UserId': '',
                        'TrackType': 'audio_video',
                        'MediaId': 'mix',
                        'FileId': '3270835009955145182', #文件id,删除保存在云端上视频需要用到
                        'VideoUrl': 'https://1256408003.vod-qcloud.com/83a1b83fvodcq1256408003/0ee04b223270835009955145182/f0.mp4', #播放视频的地址
                        'CacheFile': '1400817148_2306250032.mp4', #视频的名字
                        'StartTimeStamp': 1687680791860,#开始时间戳
                        'EndTimeStamp': 1687680811943#结束时间戳
                        }
                }
            }
        }

#注意:只有存在TencentVod 对应的数据,才说明视频录制完成了,才需要进行下载保存的操作

回调接口代码:文章来源地址https://www.toymoban.com/news/detail-648821.html

class TencentRollbackView(views.MethodView):
    # decorators = (login_required,)
    def post(self):
        #拿到录制完成的回调函数响应的数据
        dict_data = request.json
        #保存腾讯录制的各种消息
        even_info = dict_data.get('EventInfo')
        room_id = even_info.get('RoomId')
       	#1、判断是否有对应的音频文件,拿到录制的视频的信息
        try:
        	#拿到视频的基本信息
            video_info = even_info.get('Payload').get('TencentVod')
            if not dvr_info:
                '此时的回调不是有录制完成的回调,就不操作这个回调函数了'
                return Response('ok', content_type='text/plain')
        except Exception as _:
            #回调函数没有携带上对应的录制的视频的信息时,则不操作
            return Response('ok', content_type='text/plain')
        
        #2、将视频下载到本地服务器保存起来
      	VideoUrl = vedio_info.get('VideoUrl') 
        filename = vedio_info.get('CacheFile')
        ret_path = download_tencent_dvr(VideoUrl,filename)
        print(ret_path,'是保存到本地的路径,后续存到数据库就可以了')
        #3、删除保存在腾讯云上的录制视频(保存是需要收费的)
        file_id = video_info.get('FileId')
        delete_tencent_video(file_id)
        
		

        return Response('ok',content_type='text/plain')

到了这里,关于腾讯云-云点播:设置视频录制的回调函数,将腾讯录制的音频文件保存到本地中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • android 调用系统录制视频和音频

    1、录制视频 请先申请相机权限 2、录制音频 请先申请权限

    2023年04月08日
    浏览(41)
  • 腾讯会议录制视频全攻略,让会议记录更轻松

    随着远程办公和线上教学的兴起,腾讯会议已成为一种常见的在线会议工具,用于实现远程办公、在线教育和协作。然而,许多用户不知道如何记录这些重要的会议,特别是希望将其保留作为会议纪要或培训资料。在本文中,我们将探讨腾讯会议录制视频怎么操作,并详细介

    2024年02月05日
    浏览(51)
  • 视频集中存储/直播点播平台EasyDSS点播文件分类功能新升级

    视频推拉流EasyDSS视频直播点播平台,集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体,可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。 TSINGSEE青犀视频的EasyDSS平台具有点播文件分类展示方法,有两种实现方式可供用户

    2024年02月09日
    浏览(34)
  • 【开发】视频集中存储/直播点播平台EasyDSS点播文件分类功能优化

    视频推拉流EasyDSS视频直播点播平台,集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体,可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。 TSINGSEE青犀视频的EasyDSS平台具有点播文件分类展示方法,有两种实现方式可供用户

    2024年02月09日
    浏览(39)
  • Vue调用摄像头录制视频和音频并上传给后端或下载到本地

    调用摄像头 开始结束录制 对录像时长进行记录 停止录像时终止录制器,关闭媒体流并清除时长记录定时器 回放 下载视频 指定且只能指定,下载后的默认文件名字和文件后缀。注意,可以不指定后缀名,浏览器会根据数据类型自动为其匹配后缀名,但是最好指定后缀。 下载

    2024年02月15日
    浏览(72)
  • osg::Drawable类通过setDrawCallback函数设置回调函数的说明

           osg::Drawable类可以通过该类的setDrawCallback函数设置回调函数类对象。被设置的回调类对象必须从osg::Drawable::DrawCallback类派生,并 重写drawImplementation函数 ,以实现自己特定的需求。这个回调函数在每次帧事件中都会被调用(如:在帧的更新遍历事件), 可以在该类的 drawI

    2024年02月02日
    浏览(28)
  • 视频推拉流平台EasyDSS点播文件播放请求添加token验证的实现方法

    EasyDSS视频直播点播平台可提供一站式的视频推拉流、转码、点播、直播、播放H.265编码视频等服务,搭配RTMP高清摄像头使用,可将设备的实时流推送到平台上,实现无人机视频推流直播等应用。今天我们来介绍下EasyDSS系统点播文件播放请求添加token验证的实现方法。 1)首先

    2024年02月04日
    浏览(35)
  • VTK——设置交互样式上的鼠标回调函数

    VTKPointPickerInteractorStyle是一个自定义的交互样式类,它是VTK库中vtkInteractorStyleTrackballCamera类的子类。VTK(Visualization Toolkit)是一个开源的,跨平台的库,用于处理、渲染和视觉化科学数据。它包括一系列的类和方法用于3D计算机图形、图像处理和可视化。 vtkInteractorStyleTrackba

    2024年02月10日
    浏览(51)
  • 电脑QQ如何录制视频文件?

    听说QQ可以录制视频,还很方便,请问该如何录制呢?是需要先打开QQ才可以录制吗?还是可以直接使用快捷键进行录制呢?录制的质量又如何呢? 不要着急,既然都打开这篇文章看了,那小编今天就详细的为您介绍如何在电脑上使用QQ进行录制视频,继续阅读查看吧。 注意

    2024年02月04日
    浏览(39)
  • untiy 录制网络摄像头视频并保存到本地文件

    网络摄像头使用的是海康威视的,关于如何使用Ump插件播放海康威视rtsp视频流,请参考我的这篇文章 内部有ump插件的下载链接 untiy接入 海康威视网络摄像头 录屏使用的插件是 AVPro movieCapture 4.6.3版, 插件和完整工程的下载链接放在本文的最后 录制摄像头的实现思想为 1 um

    2023年04月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包