ruby on rails aliyun视频点播播放

2024-03-12 20:08

本文主要是介绍ruby on rails aliyun视频点播播放,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

签名请看: https://blog.csdn.net/tang05709/article/details/88366228 

module Aliyunclass AliyunVideoAchieve < AliyunSigndef initialize@access_key_id = Rails.configuration.application['ALIYUN_OSS_ACCESS_KEY_ID']@access_key_secret = Rails.configuration.application['ALIYUN_OSS_ACCESS_KEY_SECRET']@send_url = 'http://vod.cn-shanghai.aliyuncs.com'.freezeend'''获取视频上传地址和凭证,并创建视频信息title: 视频标题file_name: 视频源文件名必须带扩展名options: FileSize: 视频文件大小; Description: 视频描述,长度不超过1024个字节, CoverURL:自定义视频封面URL地址options: CateId:视频分类ID;Tags:视频标签,多个用逗号分隔;TemplateGroupId:转码模板组ID; UserData:自定义设置,为JSON字符串,支持消息回调等设置options: StorageLocation:存储地址。当不为空时,会使用该指定的存储地址上传视频文件return RequestId:请求ID; VideoId:视频ID;UploadAddress:上传地址;UploadAuth:上传凭证'''  def create_upload_video(title, file_name, options = {})#http://vod.cn-shanghai.aliyuncs.com/?Action=CreateUploadVideo&Title=exampleTitle&FileName=example.avi&FileSize=10485760&Format=JSON&<公共参数>#Action 系统规定参数。取值:CreateUploadVideo#Title视频标题,长度不超过128个字节 utf8#FileName视频源文件名必须带扩展名,且扩展名不区分大小写。MP4,3GP,MPEG,AVI,FLV,m3u8#FileSize 视频文件大小# 返回 RequestId:请求ID, VideoId:视频ID, UploadAddress:上传地址, UploadAuth:上传凭证param = {Action: 'CreateUploadVideo',Title: title,FileName: file_name,AccessKeyId: @access_key_id}key = @access_key_secret + '&'options = create_sign_url("POST", param, key, 'video')result = Faraday.post(@send_url, options)res = JSON.parse(result.body)if res["UploadAddress"].blank? []else resend end'''刷新视频上传凭证video_id 视频ID'''def refresh_upload_video(video_id)# http://vod.cn-shanghai.aliyuncs.com/?Action=RefreshUploadVideo&VideoId=93ab850b4f6f44eab54b6e91d24d81d4&Format=JSON&<公共参数># Action 系统规定参数。取值: RefreshUploadVideo# VideoId 视频ID# 返回 RequestId:请求ID, UploadAddress:上传地址, UploadAuth:上传凭证param = {Action: 'RefreshUploadVideo',VideoId: video_id,AccessKeyId: @access_key_id}key = @access_key_secret + '&'options = create_sign_url("POST", param, key, 'video')result = Faraday.post(@send_url, options)res = JSON.parse(result.body)if res["UploadAddress"].blank? []else resend end'''获取视频信息video_id 视频ID'''def get_video_info(video_id)#http://vod.cn-shanghai.aliyuncs.com/?Action=GetVideoInfo&VideoId=93ab850b4f6f44eab54b6e91d24d81d4&Format=JSON&<公共参数># Action 系统规定参数。取值:GetVideoInfo# VideoId 视频ID# 返回 RequestId, Video# Video: VideoId, Title, Description, Duration, CoverURL, Status, CreationTime, Snapshots, CateId, CateName, Tags# Snapshots: Snapshotparam = {Action: 'GetVideoInfo',VideoId: video_id,AccessKeyId: @access_key_id}key = @access_key_secret + '&'options = create_sign_url("POST", param, key, 'video')result = Faraday.post(@send_url, options)res = JSON.parse(result.body)if res["Video"].blank? []else resend end'''生成一个密钥'''def get_play_datakey # https://kms.cn-hangzhou.aliyuncs.com/?Action=GenerateDataKey# KeyId 主密钥(CMK)的全局唯一标识符# 返回 KeyId, Plaintext, CiphertextBlobsend_url = 'https://kms.cn-hangzhou.aliyuncs.com'param = {Action: 'GenerateDataKey',KeyId: "最好填写密钥别名",AccessKeyId: @access_key_id}key = @access_key_secret + '&'options = create_sign_url("POST", param, key, 'auth')result = Faraday.post(send_url, options)res = JSON.parse(result.body)puts resif res["CiphertextBlob"].blank? []else $redis.set('Plaintext', res["Plaintext"])$redis.set('CiphertextBlob', res["CiphertextBlob"])res["CiphertextBlob"]end end'''获取播放凭证video_id 视频IDtimeout 凭证过期时间, 取视频时长'''def get_play_auth(video_id, timeout = nil)# Action 系统规定参数。取值: GetVideoPlayAuth# VideoId 视频ID# AuthInfoTimeout 播放凭证过期时间。取值范围:100~3000。默认值:100秒# PlayConfig CipherText 密文秘钥,用来获取明文秘钥# PlayConfig DecryptKeyUri 根据密文秘钥获取解密秘钥地址# PlayConfig KeyServiceType 密钥服务类型,默认值:KMS# 返回 RequestId, VideoMeta, PlayAuth# VideoMeta VideoId, Title, Duration, CoverURL, Statusciphertext = $redis.get("CiphertextBlob")if ciphertext.blank? ciphertext = get_play_datakeyendplay_config = {CipherText: ciphertext,KeyServiceType: 'KMS'}play_config_str = play_config.to_jsonparam = {Action: 'GetVideoPlayAuth',VideoId: video_id,PlayConfig: play_config_str,AccessKeyId: @access_key_id}if timeout.present?param[:AuthInfoTimeout] = timeoutendkey = @access_key_secret + '&'options = create_sign_url("POST", param, key, 'video')result = Faraday.post(@send_url, options)res = JSON.parse(result.body)if res["PlayAuth"].blank? []else data = {PlayAuth: res["PlayAuth"],CoverURL: res["VideoMeta"]["CoverURL"],VideoId: res["VideoMeta"]["VideoId"]}end end'''删除视频video_ids 视频ID列表。多个用逗号分隔'''def delete_video(video_ids)# Action 系统规定参数。取值:DeleteVideo# VideoIds 视频ID列表。多个用逗号分隔,最多支持20个param = {Action: 'DeleteVideo',VideoIds: set_videos(video_ids),AccessKeyId: @access_key_id}key = @access_key_secret + '&'options = create_sign_url("POST", param, key, 'video')result = Faraday.post(@send_url, options)end'''phone_numbers, 逗号隔开'''def set_videos(video_ids)if video_ids.is_a(Array)videos = video_ids.join(',')else  videos = video_idsendvideosendend
end

如果需要加密,需要在aliyun开启密钥服务,然后把密钥id写入代码,当如aliyun提供了密钥别名,所以最好用别名

前端

<div class="prism-player" id="J_prismPlayer"></div> <script> var player = new Aliplayer({ id: "J_prismPlayer", width:"1000px", height:"640px", format: 'm3u8',useFlashPrism: true,vid:"<%= @play_auth[:VideoId] %>", playauth:"<%= @play_auth[:PlayAuth] %>", cover:"<%= @play_auth[:CoverURL] %>" });</script> 

当然,也需要引入js,因为就一个页面用,就直接在前端引用了

<link rel="stylesheet" href="//g.alicdn.com/de/prismplayer/2.6.0/skins/default/aliplayer-min.css" />

<script type="text/javascript" src="//g.alicdn.com/de/prismplayer/2.6.0/aliplayer-min.js"></script>

这篇关于ruby on rails aliyun视频点播播放的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/802429

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

UniApp实现漂亮的音乐歌词滚动播放效果

在现代的音乐播放应用中,歌词的展示和滚动播放已经成为了一个非常常见的功能。今天,我们将通过UniApp来实现一个漂亮的歌词滚动播放功能。我们将使用UniApp提供的组件和API来完成这个任务。 页面结构 在页面的模板部分,我们需要创建一个音频播放器和歌词展示区域。使用<scroll-view>组件来实现歌词的滚动效果。 <template><view class="audio-co

aliyun图片存储OSS工具类

pom.xml配置jar包 <!-- oss --><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</version></dependency> yml配置相关key #oss 配置oss:#AKaccessKey: accessKey

Vue 中实现视频播放的艺术

随着前端技术的飞速发展,视频播放在 Web 应用中已经成为了一个不可或缺的功能。从社交媒体平台到教育网站,再到在线购物平台,视频元素无处不在。而 Vue.js 作为当今最流行的前端框架之一,在实现视频播放时提供了很多强大的工具和技巧。在这篇博客中,我们将深入探讨如何使用 Vue.js 实现视频播放功能,不仅仅是简单地嵌入视频,还要添加一些高级功能,如自定义播放器控件、播放进度条、视频切换、事件处理

浅析网页不安装插件播放RTSP/FLV视频的方法

早期很多摄像头视频流使用的是RTSP、RTMP协议,播放这类协议的视频通常是在网页上安装插件。但现在越来越多的用户,对于网页安装插件比较反感,且随着移动设备的普及,用户更多的希望使用手机、平板等移动设备,直接可以查看这些协议的视频。那是否有什么方案可以直接网页打开RTSP、RTMP协议的视频,直接观看不用安装插件呢?而且对于摄像头的数据,尽可能低延迟的获取实时画面。  其实很多摄像头厂家也注意到

使用WebRtcStreamer播放rtsp视频

一、使用步骤 1.安装WebRtcStreamer包 代码如下(示例): {"name": "default","version": "0.1.0","private": true,"scripts": {"serve": "vue-cli-service serve","build": "vue-cli-service build"},"dependencies": {"core-js":

关于视频播放和下载开发的一些总结

在项目中遇到的一些问题和经验的分享: KrVideoPlayerControlView 下载地址 先从视频播放说起,视频播放是借助于第三方的demo来做参考,cc视频的一个第三方,不过真心觉得cc视频很坑。建议不要在使用! 然后,做到最后实在是被改的做不下去,自该重新寻找新的方法,进行重新开始, 然后在网上看到了一个KrVideoPlayerController 的这个

【Unity-Lua】音乐播放器循环滚动播放音乐名

前言:Unity中UI节点 图1 如上所示,一开始本来是打算用ScrollView做的,觉得直接计算对应的文本位置就行,所以没用ScrollRect来做,可以忽略Scroll,Viewport这些名字。如下图:需要在一个背景Image组件上添加上Mask组件来显示固定位置的文本显示。 图2 图3 并且需要在要显示的文本上挂载Content Size Filter组件,但是这儿会有个坑