ffmpeg将文件转码后推向服务器,使用 Serverless 云函数 + ffmpeg 实现音视频转码服务...

核心价值

视频应用、社交应用等场景下,用户上传的图片、音视频的总量大、频率高,对处理系统的实时性和并发能力都有较高的要求。例如:对于用户上传的视频短片,我们可以使用多个云函数对其分别处理,对应不同的清晰度(1080p、720p等),以满足不同场景下用户的需求,适应移动网络带宽较小且不稳定的特性。使用云函数来做的核心优势在于:

1.高效整合:凭借云函数(SCF)的强大联动能力,将视频上传、视频处理、图片处理、存储场景有机地整合为一体。

2.灵活处理:用户可以自定义转码函数,帮助客户快速搭建定制化任务处理能力,弥补当前单独云服务的功能盲点。

3.平滑迁移:可以把ffmpeg业务方便地从物理机、云主机或容器中移植到云函数。

4.成本低廉:云函数提供丰富的计量方式,帮忙用户获得显著的成本优势。

运行原理

使用云函数 + ffmpeg 和COS联动做音视频转码的运行原理:

dbdfdfa130e38c48eea98e76830269d6.png运行原理

优势对比

和容器服务等对比,使用云函数+ffmpeg 做音视频转码服务的优势和不足在于:

dbdfdfa130e38c48eea98e76830269d6.png和自建容器服务对比

部署流程

前置条件

以广州地域为例:

提前在对象存储控制台上创建好COS Bucket,Bucket权限设置为公有读私有写。(可选)提前在文件存储控制台上开通CFS服务(当视频文件大于500MB时需要用到),用于扩展云函数的本地存储空间。登录访问管理控制台,新建云函数的运行角色,授予该角色COS的读写权限、CFS的读写权限,用于授权云函数访问相应服务。

CFS配置及使用文档可参考:挂载CFS文件系统。如果视频文件小于500MB,可以不用操作该步骤。

云函数运行角色使用说明可参考:创建函数运行角色。

创建云函数

登录云函数控制台,选择地域后,新建函数,选择运行环境Python3.6,搜索“转码”,选中模板函数后,下一步。

dbdfdfa130e38c48eea98e76830269d6.png

在下一步中,点开高级设置:配置环境变量,并启用运行角色。

target_bucket:转码后的视频,上传到已创建好的对象存储bucket中。

target_path: 转码后的视频,上传到bucket的指定目录中。

运行角色:云函数在运行时,会使用运行角色换取临时秘钥,操作读取和写入COS Bucket的资源。

dbdfdfa130e38c48eea98e76830269d6.png

下一步,完成函数创建。在函数侧边栏【触发器管理】,创建COS Bucket 触发器,如果用的同一个Bucket存储源视频和转码后的视频,一定要在触发器这里配置前缀过滤规则,如demo/。

dbdfdfa130e38c48eea98e76830269d6.png

(可选)配置CFS挂载

如果已经开通了CFS挂载服务,则可以在侧边栏【函数管理】-》【函数配置】-》编辑,同时启用私有网络和文件系统挂载能力。

dbdfdfa130e38c48eea98e76830269d6.png

如果启用了CFS挂载,则需要在代码中修改文件上传路径,注释掉76行代码,添加77行,把 ‘/tmp/new-' 改成 ‘/mnt/new-',如下所示:

dbdfdfa130e38c48eea98e76830269d6.png

测试功能

到 COS 控制台,对应的 Bucket 目录下,上传视频文件,并到对应的转码目录下查看,是否生成压缩的视频文件。

根据视频大小不同,压缩时间也不同,如果视频过大,压缩时间会比较久,需要较长的时间才能查看到新视频。

dbdfdfa130e38c48eea98e76830269d6.png

dbdfdfa130e38c48eea98e76830269d6.png

到云函数控制台查看函数运行日志,如下:

dbdfdfa130e38c48eea98e76830269d6.png

在函数控制台上还可以查看监控和配置告警:

dbdfdfa130e38c48eea98e76830269d6.png

扩展能力

基于本demo,还可以扩展支持自动化CDN刷新/预热的能力,比如转码后的视频在回传COS Bucket时,还可以触发新函数执行CDN刷新/预热功能(该功能可以在COS控制台上一键开启)。

ffmpeg是非常强大的转码工具,除了转码、视频压缩等,还可以做视频切片等,通过修改代码里的命令参数,可以非常方便的实现该能力。甚至和云上的AI接口结合,实现视频加字幕等功能。

感兴趣的同学还可以借助云函数的高并发能力,实现快速转码或者切片功能。如函数A做任务调度,函数B做实际的转码/切片工作。这里可以借助 CFS 挂载能力,轻松实现跨函数的文件共享功能。

注明:本文来自投稿,不代表服务器文档网立场,如若转载,请注明出处:https://www.fwqwd.com/3414.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 怎么判断字符串是否有换行_JAVA中如何判断一个字符串是否换行

展开全部${rr.right_name}扩展资料 java控制台程序判断String字符e68a8462616964757a686964616f31333431373263串中只输入了一个回车: importjava.io.BufferedReader; importjava.io.InputStreamReader; importjava.util.Scanner; publicclassTest{ publicstaticvoi…

logger 参数列表过长_[源码级解析] 巧妙解决并深度分析Linux下rm命令提示参数列表过长的问题...

在维护实习单位服务器的过程中,偶然发现一个有350万文件的文件夹需要清理,于是我习惯性执行了rm -rf ./*,却在数秒后被告知“参数列表过长”。在一番折腾过后,我终于通过取巧的办法完成了这一任务,也随着相关内核源码的…

collect的功能是什么?其底层如何实现的?_为什么你要用 Spring ?

前言现在Spring几乎成为了Java在企业级复杂应用开发的代名词,得益于Spring简单的设计哲学和其完善的生态圈,确实为廉颇老矣,尚能饭否的 Java 带来了“春天”,有很多同学刚接触Java就直接从Spring框架开始学习,导致产生…

m3u8合并mp4软件_m3u8格式转mp4究极办法!

你们来这个号这么久了!还没给你们分享过一些实用的干货。打今天起这个公众号将给大家推荐一些APP和实用的小软件和一些小教程。生命太短,没时间留给遗憾。若不是终点,都不要把自己留在原地,请一直微笑向前!我是帮忙坏哥…

android 左移动画_android旋转动画和平移动画详解,补充说一下如果制作gif动画放到csdn博客上...

先上效果图:制作过程是先起一个模拟器,然后把GifCam的框拖到模拟器上面,点击Rec的new先,然后点击Rec,然后就save到本地成gif文件这里做一个左右旋转,上下旋转,和左右移动的动画,先自己建立一个View的类&…

vm虚拟机安装包_一次Miniconda虚拟机安装的神奇踩坑记录

本人一直都是在物理机环境下使用Anaconda,好处是提供了比较完全的机器学习包,还有方便的虚拟环境,缺点是体积太大。但如果直接用Anaconda中的根目录环境作为pycharm中的Python解释器,因为在运行程序前会不断加载根目录中的Python包…

css3弧形跑道效果_Css 实现漂亮弧形

在实现页面五花八门的有特色的ui时,我们有时会遇到要用实现一个弧形,而这样的弧形要怎么实现呢?用图片?好像不大现实,因为这样就要无故多加载一张图片了,这里我们来说说怎么用css的after伪类来实现弧形。先…

python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...

插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进、后退、左转、右转,乌龟的尾巴朝下,它移动时就会画一条线。并且为了增加乌龟画图的艺术价值…

教室信息管理系统mysql_教师信息管理系统(方式一:数据库为oracle数据库;方式二:存储在文件中)...

方式一:运行截图数据库的sql语句:/*Navicat Oracle Data TransferOracle Client Version : 12.1.0.2.0Source Server : ORCZYTSource Server Version : 120100Source Host : localhost:1521Source Schema : C##ZYTTarget Server Type : ORACLETarget Ser…

python实现xmind_Python xmind库(生成框架图)

小编在测试日常工作中遇到一个费时的问题,如何将excel中的测试用例,生成测试框架图?经过查阅发现的python xmind库 将excel中的测试用例,生成测试框架图,分为2步 1.解析excel,取出excel中数据(此…

python代码解读软件_5种带你轻松分析Python代码的软件库

通常,人们会使用两种速度来衡量某种编程语言的优劣,即:开发速度和执行速度。对于Python而言,大家往往受益的是它能够快速地编写代码,而忽略了它是否能够快速地运行,并及时完成既定的任务。因此,…

mac ssh客户端_Electerm for Mac(ssh客户端)

Electerm for Mac是一款功能强大的,作为终端或ssh / sftp客户端(类似于xshell)为一体的工具,支持多平台(linux,mac,win),还有自定义终端样式,全局/会话代理,将书签/主题/快速命令同步到github s…

armbian nginx 部署博客_通过Git将Hexo博客部署到服务器

本文首发于我的个人博客https://orxing.top,欢迎来访服务器是用的阿里云ECS CentOS,本来是用来部署WordPress的,后来接触了Hexo,就把Hexo直接部署到了GitHub pages和Coding Pages上,但是最近发现Coding pages经常抽风&…

python 字符串格式化语法_Python基础语法--字符串格式化

PS:在学习到Python的字符串格式化一些个人的总结,利用字符串格式化可以更好的对代码结果进行格式化输出语法栗子 例子中通过接收用户输入的值,赋值给sex_input和age_input生成两个变量,并根据判断输出相应的语句,and是…

springmvc跳转html_SpringMVC基础(三)

本篇文章主要整理了数据处理、乱码处理和Json的相关知识。参考的狂神说的公众号以及视频。所有代码亲测有效。数据处理主要包括处理提交的数据以及将数据显示到前端。处理提交的数据一般有三种情况:(1)提交的域的名称和方法的参数名称一致时:RequestMapp…

查看本机所有请求_【松勤教育】Fiddler抓包-只抓APP的请求

fiddler抓手机app的请求,估计大部分都会,但是如何只抓来自app的请求呢?把来自pc的请求过滤掉,因为请求太多,这样会找不到重要的信息了。环境准备:1.电脑上已装fiddler2.手机和电脑在同一局域网一、设置1.fi…

icmp报文格式_TCP/IP(二):IP报文格式详解

1. IP 报文格式0bit是指位于最左边的最高位,31bit是指位于最右边的最低位,4个字节的32bit按照 bigendian(大端格式:低字节位于高地址)字节序传输:首先是0~7bit,其次 8~15bit,然后 16~23bit,最后…

java多线程交替打印_java实现多线程交替打印

本文实例为大家分享了java实现多线程交替打印的具体代码,供大家参考,具体内容如下notifywait实现import org.junit.Test;import java.util.concurrent.*;public class TestThreadLocal {Object o new Object();CountDownLatch cnew CountDownLatch(2);T…

plot函数_时间序列:python移动窗口函数前言

一起学习,一起成长!在移动窗口(可以带有指数衰减权数)上计算的各种统计函数也是一类常见于时间序列的数组变换。它们称为移动窗口函数,其中还包括那些窗口不定长的函数(如指数加权移动平均)。跟其他统计函数一样,移动窗口函数也会…

一页纸项目管理模板_项目管理职场必备读物!这一次全部送给你!

“大圣,此去欲何?”“踏南天,碎项目。”“若一去不归...”“便一去不复返归!”hello~hello~大家好上一次找到的一篇项目管理书籍送给大家毫无意外地大家纷纷在后台留言要求我还有没有更多的书籍答应你们,这次一次性全部…