超越之视频技术的核心要点总结

1.视频生产
1)视频的上传和存储
2)视频转码
3)内容的审核监控


2.视频消费
1)播放器和弹幕
2)CDN和带宽
3)防盗链


术语
解码(Decoding) 点播、回放(Playback) 源⽂件 -> Decoding -> 播放
编码(Encoding) 直播(Streaming) -> 录像(Video) 直播流 -> Encoding -> 视频录像
转码(Transcoding) 特效加⼯处理
文件格式转换
源文件 -> Decoding -> 加工 ->
Encoding -> 目标文件


前提:网络基建带宽充 


#做一个视频网站需要什么样配置的服务器?
问题描述:我准备建一个视频网站,假设每天在线人数100左右,同时在10人左右,平均每人最少观看10分钟,而视频清晰度480P徘徊。要满足以上需求的话,我需要一台什么配置的服务器,预算是多少?
做一个视频网站需要什么样配置的服务器?


答:流媒体服务器(视频服务器)的特点是长时间高并发,因此cpu至少至强六核E5-2420、内存8G以上。操作系统可以选择winodws也可以选Linux,个人推荐centos5.6+nginx。你可以采用http+flv的播放方案,当然你想支持手机端,建议采用http live streaming或者http+mp4。


1.480P的视频视频码率可以采用4.5Mbps;
2.每天在线100人,同时在线10人左右;要想保持看视频不卡,视频的比特率至少300Kbps,十人同时在线播放的话,0.3*10=3Mbps的带宽可以达到完全流畅播放。当然如果你的服务用户是在国内,无法精确到单独省、市,建议选择BGP多线机房。
3.网站的图片、视频加防盗链功能。否则扩容至10M带宽也不够用。
4.硬盘大小,因为视频网站,数据最好放在自己硬盘,且视频比较大建议采用1T。如果考虑数据的安全可以采用raid1。


推荐视频网站配置
CPU:至强六核E5-2420
内存:8G  DDR3  ECC
主板:ASUS  Z9NA  D6
带宽:3M
价格:11999元/年  点击右侧QQ有专家为您搭配更适合您的服务器




APP后端处理视频的方案


后台常见的视频处理有以下几种:
视频的截图,很多视频列表上显示的一张图片,这张图片就是通过截取视频的某一帧(通常是第一帧)得到的。
视频加水印,出于版权保护的目的,需要添加水印。
视频转码,允许用户上传手机上的视频,并转换为app后端支持的格式。


视频的处理对于大多数程序员来说是个很陌生的领域, 这里介绍一个视频处理最常用的工具:ffmpeg。


Ffmpeg的官网(http://ffmpeg.org/)是这样介绍的:Acomplete, cross-platform solution to record, convert and stream audio and video。一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
Ffmpeg是个跨平台的软件,可以在linux下使用,也可以在window,mac下使用。


著名的播放器KMPlayer, 暴风影音,qq影音,都曾经使用过ffmpeg的代码。国内的七牛云存储,音视频处理的核心模块也是ffmpeg。


Ffmpeg可以实现的功能有:
 
*视频采集
*音视频格式转换
*视频抓图
*给视频加水印


FFmpeg主要由一下几个部分组成:
libavcodec:包含了所有FFmpeg音视频编解码器的库。 为了保证最优性能和高可复用性,大多数编解码器从头开发的。
libavformat:包含了所有的普通音视格式的解析器和 产生器的库。


三个实例程序:
ffmpeg:命令行的视频格式转换程序(一般就直接调用这个文件)
ffplay:视频播放程序。(需要SDL支持)
ffserver:多媒体服务器


程序调用ffmpeg的功能
使用ffmpeg的进行视频转换很简单,例如,把avi转换为MP4,使用命令行:
ffmpeg -i source.avi -f psp -r 29.97-b 768k -ar 24000 -ab
64k -s 320×240 destination.mp4


一个常见的思路,就用通过构造命令行的方式,把上面命令行构造出来,然后在后台语言中调用ffmpeg执行文件。


有个java调用ffmpeg开源项目 jave (主页:http://www.sauronsoftware.it/projects/jave/)就是这样实现的。


通过类AudioAttributes和VideoAttributes设置了相关的参数,在类Encoder中把这些参数构造成命令行执行FFmpeg相关的命令。
File source = newFile("source.avi");
File target = newFile("target.flv");
AudioAttributes audio = newAudioAttributes();
audio.setCodec("libmp3lame");
audio.setBitRate(newInteger(64000));
audio.setChannels(new Integer(1));
audio.setSamplingRate(newInteger(22050));
VideoAttributes video = newVideoAttributes();
video.setCodec("flv");
video.setBitRate(newInteger(160000));
video.setFrameRate(new Integer(15));
video.setSize(new VideoSize(400,300));
EncodingAttributes attrs = newEncodingAttributes();
attrs.setFormat("flv");
attrs.setAudioAttributes(audio);
attrs.setVideoAttributes(video);
Encoder encoder = new Encoder();
encoder.encode(source,target, attrs);


注意了,视频音频相关的操作一般都是非常耗费CPU资源,例如上面的例子,在avi转换成flv的过程中,系统的相关资源状况如下:


在压缩视频时,ffmpeg就占用了CPU差不多90%的资源。


端要快速地处理视频,需要高性能的服务器集群,但是,对于创业型公司来说,这点支出是非常不合算的。因此,可充分运用云服务,例如,七牛提供的服务就包含音视频格式的转换,调用非常方便。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值