引言

  随着4G网络的普及以及5G网络的展开,单位流量越来越便宜,人们从而能在碎片时间内通过移动网络毫无压力的观看视频内容。抖音在2018年春节突然火爆,全民都在刷抖音,据悉,抖音(包括海外版的TikTok)用户日产生短视频近百亿。一般来说,用户上传的短视频会自动加上对应短视频App的水印Logo,我们今天就来聊一下视频处理,首先介绍一下视频基本概念和视频处理所用的API、工具。

视频基本概念

  • 什么是视频?
    一组图片以给定的速率(例如 30 张图片/秒)在人眼前翻过,人的视觉就会产生一种图片在动的感觉,小时候动画片的制作也是基于这个原理,从这个角度讲,视频可以理解为以一定速率运动的一组图片的集合。

  • 帧率
    每秒播放的频数,fps(frames per second),拍摄的帧率和播放的帧率一般保持一致。比如,电影或者电视剧以30fps拍摄,然后以30fps播放。对于高速运动的赛车比赛,为了让观众看清赛车到达终点的场面或者两辆实力很接近的选手到底谁赢了,会以高帧率拍摄(比如60fps),然后转成30fps来回放播放,这样就会产生慢镜头,从而让观众看清赛车越过终点那一刹那的完整情形。

  • 码率
    每秒传输的bit位,bit/s,对应到带宽。有几点需要注意一下:

    • 并不是画面越清晰要求的带宽就一定越大。对于在线课程类视频(比如,吴恩达的机器学习课程),高速运动的画面很少,画面之间的像素很多也都是一样的(白板背景),即使是1080p视频,带宽也不会占用太多。1080p在线课程类视频会比1080p汽车赛事类视频占用的带宽少。进一步的,1080p在线课程类视频可能还比720p汽车赛事类视频占用的带宽还少。
    • 动态的码率要好于固定的码率。视频存在部分画面间变化不大、部分画面间变化较大的情形,若用同一码率,则会使得画面间变化不大的浪费了带宽,画面间变化较大的损失了画质。
    • 码率的设置需同时考虑移动手机端环境和画质情况。首先,对于移动手机端,很少需要1080p的视频,720p、480p已经足够。其次,移动手机端对流量仍然比较敏感,为了看1080p电影视频(假设平均需要4Mb/s的码率),30分钟就会消耗1GB的流量。若出现网络环境较差出现抖动,低码率视频能够顺畅的观看,高码率视频则会出现卡顿,严重影响观看体验。
  • 视频流的编码方式
    一个视频包括视频流、音频流、字幕脚本三大部分,字幕可以包括多语言字幕。视频流的编码方式有如下两种:
    1、ITU/ISO国际标准组织发起,包括H.264、H.265(也可写作HEVC)编码等,软件实现是libx264、libx265,是收费的。
    2、Google发起,包括VP8、VP9(几乎和H.265一样好)、AV1(声称比H.265还好)编码等,软件实现是libvpx、libaom,是免费的。

  • 音频流的编码方式
    1、ISO国际标准组织发起,包括MP3、ACC编码等,软件实现是libmp3lame、libfdk-aac,是收费的。
    2、Xiph.Org基金会发起,包括Vorbis、Opus编码等,软件实现是libvorbis、libopus,是免费的。

  • 视频的制式
    视频的制式可以理解成定义一种多媒体存储格式,用于存放视频流、音频流、字幕脚本,以及后续可能的扩展, 像一个容器一样,目前主要有如下几个:
    1、MPEG4,应用最广泛的视频制式,用于存放H.264,H.265视频, AAC 音频,各种字幕等。
    2、Matroska,一种多媒体封装格式,这个封装格式可把多种不同编码的影像及16条或以上不同格式的音频和语言不同的字幕封装到一个Matroska Media档内。
    3、WebM,以Matroska格式为基础,该视频文件格式应能提供高质量的视频压缩以配合HTML5使用,用于存放VP8、VP9、AV1视频,Vorbis、Opus音频,字幕等。
    4、AVI,微软推出的多媒体封装格式,可以存放多种视频、音频格式,包括H.264、AAC等。因为索引放在文档尾部,所以对互联网串流媒体的场景显得力不从心。

  • 视频的尺寸
    视频的尺寸是指视频每一帧横竖方向的像素数目,比如1920 * 1080,像素越多画质越好。电影或者电视剧在拍摄的时候,会用蓝光甚至4K摄像机进行拍摄,这么优质的画面若放到手机上面用移动网络播放,对带宽和流量的要求都很高,所以信息流内容中心一般都会事先进行视频尺寸的转换。

  • 720P、1080P等中P代表什么意思,720,1080又分别代表什么?
    1、视频有两种展现模式:横视频(Landscape),宽比高长,电影类视频适合此种模式;竖视频(Portrait),宽比高短,人物类视频适合此种模式,例如,抖音视频里面的小姐姐。
    2、长宽比分辨率(aspect ratio resolution):16:9(目前主流的长宽比),4:3(早期的长宽比)。
    P代表pixels,1080P代表视频垂直方向的像素的个数,主流视频尺寸比是16:9,通过简单换算得到水平方向的像素个数是1080 * 16 / 9 = 1920 。

视频信息举例

以4K网站上面的一个4K视频puppies-bath-in-4k为例,相关的视频信息如下:

  • 视频总体信息
  • 视频流信息
  • 音频流信息

视频处理库

 讲到视频处理,不得不提及ffmpeg,一个开源的视频处理库(工具),有两种使用方式:

  • 二进制可执行程序ffmepg,提供了很多参数和设置,可以在命令行执行或者通过系统函数调用来执行。ffmpeg {1} {2} -i {3} {4} {5}, 其中,{1} 是全局选项,{2} 输入选项,{3}输入文件名或者url,{4}输出选项,{5} 输出文件名或者url。下面是一个样例,
    ffmpeg
    -i PUPPIES_BATH_IN_4K_Original_H.264_AAC.mp4 \ #输入文件名
    -f image2 -vf fps=fps=1/20 \ #输出选项,
    puppies_%d.png #输出文件名

  • API库,可以在程序里面通过调用API来实现视频处理。

 ffmepg库处理视频的流程大致如下:

信息流内容中心业务的处理

  • 业务处理维度

  • 视频处理特点
    视频处理一般都比较耗时,视频文件越大处理越耗时,仍然以上面的4K视频为例,列举2个常用操作的耗时:
    1、抽帧,操作耗时在34.87秒左右。

      fmpeg -i PUPPIES_BATH_IN_4K_Original_H.264_AAC.mp4 -f image2 -vf fps=fps=1/20 puppies_%d.png
    

    2、调整码率和尺寸,将4K的视频转成720P的视频(文件大小从400MB左右减少为15MB左右),以便适合手机等移动网络观看,操作耗时在77.43秒左右。

    ffmpeg -i PUPPIES_BATH_IN_4K_Original_H.264_AAC.mp4 -crf 32 -b 0.5M -minrate 0.5M -maxrate 1M -bufsize 1M -vf scale=1280:720 PUPPIES_BATH_IN_1280_720p.mp4
    

不同耗时API的处理方式:

1、耗时短的API(<= 1s),这类API通常无须考虑中断接续,一般采用无状态的设计方式,对外的proxy只用考虑鉴权、流量限制等常规措施,只要请求足够多(例如,QPS 1万/s),并遵循一定的随机或者后端服务选择算法,后端服务的负载通常是均衡的。调用方发请求,然后再接受处理结果,若本次请求若处理失败,调用方进行重试的代价也不高。
2、耗时长的API(>= 30s,不是绝对的),这类API执行一次耗时长,QPS不高,对外的proxy除了要考虑鉴权、流量限制等常规措施,还需要考虑实际处理服务器的负载均衡问题,否则很容易出现请求全部打到部分机器上面去的情况。假设,一个3分钟的短视频处理耗时30秒,1个4核8GB内存的云服务器每天处理11520个视频,某款短视频App的日生成视频量为1000万,则需要近900台这样云服务器,整体的QPS却只有120/s,容易出现机器繁忙程度不一。

QQ看点内容中心的两种做法

  • 异步回调,调用方提供回调API,视频处理结束后通过回调API得到处理结果。
  • 同步等待,通过tcp长连接,在回包中将处理结果告知调用方,视频处理的QPS不高,这种方式也是可以的,同时简化了调用方的逻辑。

总结

 本文简单介绍了一下视频的基本概念以及实际工程中服务模块的搭建和分工,后面再针对具体使用场景(例如水印处理)单独进行讲解。

文章首发于微信公众号【jameswhale的技术人生】,因精力有限,会不定期将文章同步到CSDN平台。

视频基本概念以及在QQ看点内容中心的处理维度相关推荐

  1. QQ看点内容中心存储系统介绍

    emsp;存储系统对一个产品的数据安全.服务可扩展性有着重要影响,今天结合信息流内容的特点,介绍信息流产品内容处理系统的存储选择以及对应的考量.下图是内容处理系统在整个信息流产品中的位置: 内容信息包 ...

  2. 如何为信息流内容中心设计一个高效的处理链路,详解QQ看点在这方面的演进过程

    Workflow Engine诞生的背景  这几年有幸主导QQ看点内容处理系统的架构设计与开发,见证了系统从0到1的演进过程,先来一张整体概图,让读者了解内容处理系统所处位置.  内容处理主要包括过滤 ...

  3. 人人视频从 App Store 下架整改,并下线“快看”相关内容,网友:我追的剧怎么办?...

    今日,据多位网友爆料,人人视频已经从App Store下架,所有视频下架,并下线"快看"相关内容.相关话题迅速登上微博热搜. 对于此问题,小编去App Store下载发现的确已经搜 ...

  4. Python 【企鹅号、QQ看点】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、视频号等平台的视频自动化同步发布

    导读: 本系列依次介绍目前主流的短视频平台(抖音.快手.B站.小红书.微视.百度好看视频.西瓜视频.视频号.搜狐视频.一点号.大风号.趣头条等)的短视频自动发布,希望帮助大家更方便.高效的来进行自媒体 ...

  5. 爬虫爬取qq看点视频

    我的上一篇文章有讲到graia机器人配置的问题,这次用他和爬虫实现一个比较有趣的东西 群友在查看电脑端qq看点的分享视频时会出现这种情况无法查看,但也并不是完全没有办法获取到视频的链接 mcl中我们可 ...

  6. 腾讯 QQ 看点图文多目标推荐实践经验

    作者:zhongzhao,腾讯 PCG 应用研究员 在推荐系统中,最常用的排序模型是以用户点击为目标的 CTR 预估模型,它没有考虑用户点击后的消费深度,也没有考虑用户的多种互动行为带来的生态方面的收 ...

  7. 深度召回模型在QQ看点推荐中的应用实践

    导语:最近几年来,深度学习在推荐系统领域中取得了不少成果,相比传统的推荐方法,深度学习有着自己独到的优势.我们团队在QQ看点的图文推荐中也尝试了一些深度学习方法,积累了一些经验.本文主要介绍了一种用于 ...

  8. 腾讯QQ看点信息流推荐业务:内容分发场景的多目标架构实践

    猜你喜欢 0.2022年1月份热门报告盘点&下载1.如何搭建一套个性化推荐系统?2.从零开始搭建创业公司后台技术栈3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进 ...

  9. 音视频基本概念和FFmpeg的简单入门(新手友好+FFmpeg资料分享)

    音视频基本概念和FFmpeg的简单入门 基本概念 容器/文件(Conainer/File): 即特定格式的多媒体文件,一般来说一个视频文件是由视频,音频,字幕等按特定的格式/规则组合到一起的,常见如: ...

最新文章

  1. 《C语言程序设计与实践(第2版)》——3.2 数据类型
  2. oracle一行变一列,oracle多行变一行
  3. Visual Studio 2019 使用 Live Share
  4. react textarea 空格为什么不换行_你需要的 React + TypeScript 50 条规范和经验
  5. js三级分类菜单导航
  6. 【机器学习】MATLAB读取mnist数据库
  7. 如何制作macOS Monterey启动U盘
  8. SpringMVC 整合Redis
  9. sap系统搭建教程_手把手安装SAP ERP系统
  10. ssm网上书城系统毕业设计-附源码180919
  11. Delphi 操作Excel方法大全
  12. 哈希表冲突及处理冲突的方法
  13. UnityShader实现漫反射光照模型和高光反射光照模型
  14. 从零搭建游戏服务器,编译过程和环境部署教程详解
  15. 导出word单元格间隔空白问题
  16. expect免密登录
  17. 《zw版·Halcon-delphi系列原创教程》 只有2行代码的超市收款单ocr脚本
  18. Horizon Linux Gnome桌面发布
  19. 爱尔康与好大夫在线达成合作​;武田达泽优获批进入中国 | 跨国药企在中国...
  20. 命令行pdf转jpg

热门文章

  1. linux iotop rpm,iotop命令_Linux iotop 命令用法详解:用来监视磁盘I/O使用状况的工具...
  2. Android Studio 生成 aar包 及使用
  3. R Markdown 中实现图表的单级和多级交叉引用
  4. 连体网络MINIST优化
  5. 力引导图python实现 force directed layout
  6. 智慧住建工程项目监管数字化管理解决方案
  7. python中的set集合_python-数据类型之set集合
  8. ZYNQ 不用DMA的HP总线使用
  9. 爬虫解析提取数据的四种方法
  10. Vue显示图片的几种方式