超越之视频技术的核心要点总结
生活随笔
收集整理的這篇文章主要介紹了
超越之视频技术的核心要点总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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%的資源。
端要快速地處理視頻,需要高性能的服務器集群,但是,對于創業型公司來說,這點支出是非常不合算的。因此,可充分運用云服務,例如,七牛提供的服務就包含音視頻格式的轉換,調用非常方便。
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%的資源。
端要快速地處理視頻,需要高性能的服務器集群,但是,對于創業型公司來說,這點支出是非常不合算的。因此,可充分運用云服務,例如,七牛提供的服務就包含音視頻格式的轉換,調用非常方便。
總結
以上是生活随笔為你收集整理的超越之视频技术的核心要点总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Python分析金庸小说里的主角,原
- 下一篇: 基于 Electron 和 Angula