1. 程式人生 > >如何搭建視頻轉碼集群、播放服務器

如何搭建視頻轉碼集群、播放服務器

swf configure 音視頻 sco 調度框架 zip j2ee lar fig

本文由作者張遠道授權網易雲社區發布。


轉碼集群的搭建


隨著媒體技術的發展,以及硬件設備的普及和移動設備的觸角延伸之社會各個角落,人們可以隨時隨地產生信息。而這些海量信息中,有不少多媒體信息。多媒體信 息成為了人們信息分享的重要方式。毫不誇張地說,現在是一個信息爆炸的時代。傳統的電視,電影,視頻網站,及至移動的自媒體(自由人)無時無刻不在吞吐著媒體信息。


這些海量信息的存在給存儲和分享都帶來了挑戰。挑戰主要有兩方面,一是如何盡可能以小成本來存儲這些信息。二是如何讓這些千差萬別的設備產生的信息能被千 差萬別是設備觀看。解決問題一的方法是在盡可能地縮小這些多媒體信息的同時不降低媒體信息的質量。解決問題二的方法是將這些有千差萬別設備產生的格式各異 的視頻編碼成統一的能支持各種設備的視頻格式。


幸運地是,確實存在在實踐上已經被證明是切實可行的方案存在,即視頻編碼技術。可以構建視頻編碼集群,將原始視頻編碼成目標格式,在再編碼的過程中,完成視頻壓縮和統一制式,從而實現存儲降低及制式統一。從視頻的角度可以將現在 設備分割成兩個陣營,一個是蘋果陣營,另一個是非蘋果陣營。蘋果陣營的視頻只要是m3u8為封裝格式,內部編碼配以H264和AAC即可。而非蘋果陣營則 是MP4為封裝格式,內部編碼已H264和AAC即可。據初略統計H264+aac的編碼組合可以達到2:1到4:1的壓縮比,可以顯著地降低存儲空間。


下圖是一個采用gearman框架搭建的簡易轉碼集群(當然該簡易集群曾經有1~2人力一個月左右的時間搭建完成,並在生產環境中部署)。


技術分享圖片
該簡易轉碼集群由四個模塊組成:

  • JobServer負責接收API服務器的請求,建立轉碼Job,將Job分發給transcode-worker。

  • API服務器負責接收第三方產品的轉碼請求,將其轉發給JobServer。

  • transcode-worker接收JobServer的作用請求,並且完成轉碼作業。

  • 分布式文件系統主要用於存儲原視頻和目標視頻。之所以用分布式文件系統是因為transcode-worker部署在不同服務器上,transcode-worker需要能夠在分布式環境中訪問視頻文件。

所需技術:

  1. gearman分布式任務調度框架。非常輕量級,支持C,Java,Python,PHP,C#,Ruby等各種語言,具有任何語言背景的人可以再一起工作。

  2. ffmpeg,轉碼領域的瑞士軍刀。幾乎支持市面上所有商業視頻格式。實驗室格式除外。

  3. 搭建API的web服務器技術。本人比較習慣J2EE的Spring那套。當然你可以用ruby on rails,點Net等。

  4. 基礎的音視頻知識。包括H264編碼技術,視頻解壓縮知識等。

到這裏,一個內容生產系統基本成型。但是還需要一個視頻內容的deliver系統,即視頻播放服務器[集群]。這裏將詳細地記錄視頻服務器的搭建步驟。

如何搭建flv媒體服務器


環境

操作系統:linux 2.6.32-5-amd64。Linux 版本即可。

服務器:nginx 1.3.3。nginx的版本可以更高。

客戶端:jwplayer

搭建步驟

安裝nginx with http_module_flv

1、 下載nginx

wget http://nginx.org/download/nginx-1.3.3.tar.gz

2、 解壓

tar –xzvf nginx-1.3.3.tar.gz

3、 安裝

cd nginx-1.3.3

./configure --prefix=/home/user/nginx_flv --with-http_flv_module

4、 配置

#user nobody;

worker_processes 1;

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

log_format main 'remoteaddr?remote_user [timelocal]"request" '

'statusbody_bytes_sent "$http_referer" '

'"httpuseragent""http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;

#tcp_nopush on;

#keepalive_timeout 0;

keepalive_timeout 65;

#gzip on;

server {

listen 8088;

server_name localhost;

#charset koi8-r;

access_log logs/host.access.log main;

location / {

root /home/fs/video;

index index.html index.htm;

autoindex on;

location ~ \.flv{

flv;

}

}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

#

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

#location ~ /\.ht {

# deny all;

#}

}

}

說明:綠色部分為配置flv的部分。/home/fs/video目錄為資源存放路徑,包括jwplayer以及測試用的視頻文件都存放於該目錄。

5、 配置jwplayer服務器。

下載開源的jwplayer,比如mediaplayer-5.10。解壓之後將player.swf以及jwplayer.js置於/home/fs/video。並將測試視頻 zyd.flv 也置於/home/fs/video。

6、 測試

在瀏覽器中輸入 http://hostip:8080/player.swf?type=http&file=zyd.flv

可以隨意拖動進度條,可以看到視頻正常播放。

如何搭建MP4媒體服務器


環境

操作系統:linux 2.6.32-5-amd64。Linux 版本即可。

服務器:nginx 1.3.3。nginx的版本可以更高。

客戶端:jwplayer。或者任何播放器即可。

搭建步驟

安裝nginx with nginx_mod_h264_streaming

1、 下載nginx 和nginx_mod_h264_streaming

wget http://nginx.org/download/nginx-1.3.3.tar.gz

git clone https://github.com/vivus-ignis/nginx_mod_h264_streaming.git

2、 解壓

tar –xzvf nginx-1.3.3.tar.gz

3、 安裝

cd nginx-1.3.3

#nginx_mod_h264_streaming為第三方模塊。

./configure --prefix=/home/user/nginx_flv --add_module=nginx_mod_h264_streaming_2.2.7

4、 配置

#user nobody;

worker_processes 1;

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

log_format main 'remoteaddr?remote_user [timelocal]"

相關推薦

如何搭建播放服務

swf configure 音視頻 sco 調度框架 zip j2ee lar fig 本文由作者張遠道授權網易雲社區發布。轉碼集群的搭建隨著媒體技術的發展,以及硬件設備的普及和移動設備的觸角延伸之社會各個角落,人們可以隨時隨地產生信息。而這些海量信息中,有不少多媒體信息。

FFmpeg:剪切合並播放速調整

基本上 不安裝 同時 using 上傳 lis got 轉碼 導師 原文:https://fzheng.me/2016/01/08/ffmpeg/ FFmpeg:視頻轉碼、剪切、合並、播放速調整 2016-01-08 前陣子幫導師處理項目 ppt,因為插入視頻的格式問題被搞

Java實現網站的上傳關鍵幀抽圖, 及播放功能

mpeg 表單 大小 too center mark object 無法解析 ray 視頻網站中提供的在線視頻播放功能,播放的都是FLV格式的文件,它是Flash動畫文件,可通過Flash制作的播放器來播放該文件.項目中用制作的player.swf播放器. 多媒體視頻處理

成mp4格式,添加關鍵幀,添加元數據,把元數據放在第一幀

回車 perf res player 執行 href 如果 www 路徑 作者測試是在windows下使用,所以下載的頁面地址是: http://ffmpeg.zeranoe.com/builds/點擊頁面上的Download FFmpeg git-738ebb4 64-b

黃聰:FFmpeg技巧之-crf參數(H.264篇)

文件中 one log 它的 忽略 enter center tail vcd 昨天,有個朋友給我出了個難題:他手上有一個視頻,1080P的,49秒,200多兆;要求在確保質量的情況下把文件壓縮到10M以內。 這是什麽概念呢?按照文件大小10M來計算,碼率是:10 x 8

軟件使用手冊

批量視頻轉碼 視頻轉碼 雲視睿博視頻轉碼軟件使用手冊1、主界面2、設置點擊“設置...”按鈕,會彈出設置界面,在該界面上完成 默認編碼配置、轉碼文件輸出目錄和並行轉碼任務數的設置。默認編碼配置,設置轉碼時默認使用的編碼參數,含畫幅、比特率、目標設備等信息。轉碼輸出目錄,設置轉碼完畢的文件放到哪個目錄下

系統文件上傳接口規範

視頻轉碼系統 接口規範 1.概述 1.1.用途 雲視睿博視頻轉碼系統(以下簡稱“轉碼系統”)可以將轉碼後的視頻文件通過HTTP協議上傳到服務器上。默認情況下,給出一個可以上傳文件的HTTP地址即可。為了滿足更復雜的應用需求,轉碼系統還支持更靈活的上傳方式,本文檔定義轉碼系統的上傳規則。開發人員可以參考

:linux下ffmpeg 實現

視頻轉碼使用shell快速安裝視頻轉碼器 #!/bin/bash #1、保證系統可以連到外網,需要下載安裝包和依賴包 #2、依賴gcc編譯器 #3、測試命令:ffmpeg -i test.avi out.mp4 set -e ffmDir="/usr/myapp" ffmVer="ffmpeg-3.4.1

: linux下用mplayer做

視頻轉碼視頻轉碼器mplayer安裝使用 #!/bin/bash #1、保證系統可以連到外網,需要下載安裝包和依賴包 set -e MPlayer="/usr/myapp" MPVer="MPlayer-1.3.0" mkdir $MPlayer -pv yum install wget gcc

Centos7服務

vlc 組播 轉碼服務器環境 Centos7 雙網卡(一網卡負責接收組播 一網卡負責其他服務器訪問)轉碼軟件 http://www.ipvideotrans.com/ 下載的Linux版本安裝系統下載並解壓軟件 執行 ipvtl_16ch_trial 可運行轉碼進程,有提示ip:8888訪問 訪問見圖[ro

負載均衡分布式的區別與聯系

利用 for 均衡集 通過 兩個 聽說 登錄 獲得 混合 下面就我的理解簡單通俗的介紹下三者的區別: 1.集群 集群是個物理概念,是指同一個系統,部署在多臺服務器上,將很多服務器集中起來一起進行同一種服務,在客戶端看來就像是只有一個服務器。集群可以利用多個計算機進行並行計

redis一二事搭建緩存服務

list pms try add psr reg gac mysq hvr Java%E8%BF%9E%E6%8E%A5MYSQL%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E8%BF%9E%E6%8E%A5%E6%AD%A5%E9%AA%A4

Android使用OKHttp庫實現文件的上傳到服務

pcl androi markdown selected over ros type rri return 目錄 1 服務器接口簡介 2 Android端代碼實現 2.1 xml布局文件 2.2 Activity類 2.3 Okhttp網絡通信類

Linux的NTP服務時間同步

inux art .org str 使用 rontab 定時任務 emc 用戶 我們搭建集群環境的時候,時間必須是要統一的,才能保證集群數據的一致性。 一般操作是直接使用NTP,跟默認的時間服務器同步,但是最好還是讓所有節點跟集群中的某臺作為時間服務器的節點同步。 步驟:(

《CDH搭建資料》百度雲網盤下載

百度 eight 鏈接 百度雲 bsp col 密碼 tar 視頻資料 《CDH集群搭建視頻資料》百度雲下載 鏈接: http://pan.baidu.com/s/1i5DVBlb 密碼:2mny《CDH集群搭建視頻資料》百度雲網盤下載

15套java架構師高可用高可擴展高性能高並發性能優化Spring bootRedisActiveMQNginxMycatNettyJvm大型分布式項目實戰教程

mycat 擴展 並發解決方案 入門到 -1 高端 資料 src nio * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; color: #FF0 } 15套java

15套java互聯網架構師高並發負載均衡高可用數據庫設計緩存性能優化大型分布式 項目實戰教程

二階 並發 支持 線程並發 important http 系統架構 四十 mongodb入門 * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架構師、集群、高可用、高可擴

負載均衡LVS介紹及調度算法LVS NAT模式搭建

集群 LVS NAT 負載均衡集群介紹 主流開源軟件LVS、keepalived、haproxy、nginx等 其中LVS屬於4層(網絡OSI 7層模型),nginx屬於7層,haproxy既可以認為是4層,也可以當做7層使用 keepalived的負載均衡功能其實就是lvs lvs這種4層的負載均衡

/分布式環境下5種session處理策略

學習 原理 memcache 可選 ret 當前 memcach uil 服務器 轉載至:http://blog.csdn.net/u010028869/article/details/50773174 在搭建完集群環境後,不得不考慮的一個問題就是用戶訪問產生的sessi

2017年必看的免費linux及python資源合

python視頻 linux 軟件版本 網易 linux視頻 2017年必看的linux直播課程與linux在線課程匯總 騰訊課堂:Linux課程:系列直播課程:【免費】零基礎Linux入門系統課程1(持續更新)https://ke.qq.com/course/202854【免費】零基礎l