1. 程式人生 > >Darwin Streaming Server 介紹

Darwin Streaming Server 介紹

簡介

Darwin Streaming Server簡稱DSSDSSApple公司提供的開源實時流媒體播放伺服器程式。整個程式使用C++編寫,在設計上遵循高效能,簡單,模組化等程式設計原則,務求做到程式高效,可擴充性好。並且DSS是一個開放原始碼的,基於標準的流媒體伺服器,可以執行在Windows NTWindows 2000,以及幾個UNIX實現上,包括Mac OS XLinuxFreeBSD,和Solaris作業系統上的。

特性

支援MP43GPP等檔案格式;

支援MPEG-4H.264等視訊編解碼格式;

支援RTSP流控協議,支援

HTTP協議,支援RTP流媒體傳輸協議;

支援基於Web的管理;

支援單播和組播;

具有完備的日誌功能。

此外,該伺服器版本提供了一個基於模組的擴充套件方法。利用DSS提供的API就可以很方便地編寫靜態或動態的模組,對DSS進行擴充套件,使其支援其它檔案格式、協議或者功能。

DSS伺服器架構

設計模式相關

1、併發設計模式

阻塞的IO方式效率極低,這裡不予討論。非阻塞的IO分成兩種,分別是非阻塞同步IO和非阻塞非同步IO,對應的,ReactorProactor是高效能併發伺服器設計中常見的兩種模式,Reactor用於同步IOProactor

用於非同步IO無論是Reator還是Proactor,都包含了時間分離器和時間處理器。

2Darwin使用的設計模式

Darwin Streaming Server從設計模式上看,採用了Reactor的併發伺服器設計模式。Reactor模式是典型的事件觸發模式,當有事件發生時則完成相應的TaskTask的完成是通過呼叫相應的handle來實現的,對於handle的呼叫是由有限個數的Thread來完成的。

DSS的各類執行緒中,事件執行緒充當Reactor模式中的事件分離器,任務執行緒充當Reactor模式中的事件處理器。

主框架

DSS的核心伺服器部分是由一個父程序所

fork出的一個子程序構成,該父程序就構成了整合流媒體伺服器。父程序會等待子程序的退出,如果在執行的時候子程序產生了錯誤從而退出,那麼父程序就會fork出一個新的子程序。

伺服器的作用是充當網路客戶和伺服器模組的介面,其中網路客戶使用RTPRTSP協議來發送請求和接收響應,而伺服器模組則負責處理請求和向客戶端傳送資料包。核心流媒體服務通過建立四種類型的執行緒來完成自己的工作,具體如下:

伺服器主執行緒(Main Thread) 這個執行緒負責檢查伺服器是否需要關閉,記錄狀態資訊,或者列印統計資訊。

空閒任務執行緒(Idle Task Thread空閒任務執行緒管理一個週期性的任務佇列。該任務佇列有兩種型別:超時任務和Socket任務。

事件執行緒(Event Thread:負責監聽套介面相關事件,當有RTSP請求或者收到RTP資料包時,事件執行緒就會把這些實踐交給任務執行緒來處理。

任務執行緒(Task Thread任務執行緒會把事件從事件執行緒中取出,並把處理請求傳遞到對應的伺服器模組進行處理,比如把資料包傳送給客戶端的模組,在預設情況下,核心伺服器會為每個處理器核建立一個任務執行緒。

關係如圖所示: 

DSS引數說明

-v 顯示使用方法,即引數列表

-d 在前臺執行程式

-D 在前臺執行程式,並顯示效能資料(伺服器統計資訊)

-Z xxx 設定debug級別

-p xxx 指定預設的RTSP伺服器監聽埠

-S n 每隔n秒在控制檯中顯示一次伺服器統計

-c myconfigpath.xml : 指定一個配置檔案

-o myconfigpath.conf: 指定一個DSS 1.x/2.x的配置檔案來生成xml

-x 強制建立一個新的xml配置檔案並退出

-I 以空閒狀態啟動伺服器

模組

媒體伺服器使用模組來響應各種請求及完成任務。有三種類型的模組

  1. 內容管理模組

內容管理模組負責管理與媒體源相關的RTSP請求和響應,比如一個檔案或者一個廣播。每個模組負責解釋客戶的請求,讀取和解析它們的支援檔案或者網路源,並且以RTSPRTP的方式進行響應。在某些情況下,比如流化mp3的模組,使用的則是HTTP

內容管理模組包括:

QTSSFileModule

QTSSReflectorModule

QTSSRelayModule

QTSSMP3StreamingModule

  1. 伺服器支援模組

伺服器支援模組執行伺服器資料的收集和記錄功能。

伺服器模組包括:

QTSSErrorLogModule

QTSSAccessLogModule

QTSSWebStatsModule

QTSSWebDebugModule

QTSSAdminModule

QTSSPOSIXFileSystemModule

  1. 訪問控制模組

訪問控制模組提供鑑權和授權功能,以及操作URL路徑提供支援。

訪問控制模組包括:

QTSSAccessModule

QTSSHomeDirectoryModule

QTSSHttpFileModule

QTSSSpamDefenseModule

協議

DSS

相關推薦

Darwin Streaming Server 介紹

簡介 Darwin Streaming Server簡稱DSS。DSS是Apple公司提供的開源實時流媒體播放伺服器程式。整個程式使用C++編寫,在設計上遵循高效能,簡單,模組化等程式設計原則,務求做到程式高效,可擴充性好。並且DSS是一個開放原始碼的,基於

Darwin Streaming Server 支援UDP打洞

RTSP客戶端點播Darwin 視訊時,SDP協商後的客戶端埠可能是在NAT後面,所以需要Darwin支援NAT打洞的功能,從Darwin的原始碼看,官方的原始碼是不支援這個能力的。 通過抓取VLC客戶端的包發現,VLC在播放RTSP流時,兩次SETUP(音訊流和視訊分別協商埠)之後,

達爾文流媒體伺服器(Darwin Streaming Server)(DSS)併發效能測試報告

【轉自】http://blog.csdn.net/xiejiashu/article/details/40919565 原標題:《Darwin Streaming Server效能測試報告》 為了驗證Darwin Streaming Server在流媒體點播上的效能,Eas

流媒體伺服器全配置:Darwin Streaming Server,ffmpeg安裝和Mpeg4IP ,MP4Box Mp4 hint媒體流化

系統環境為CentOS 6.2 64位  一,準備工作              http://bbs.phpchina.com/blog-48643-194956.html             http://blog.sina.com.cn/s/blog_6

【轉】Darwin Streaming Server 核心程式碼分析

基本概念 首先,我針對的程式碼是Darwin StreamingServer 6.0.3未經任何改動的版本。 DarwinStreaming Server從設計模式上看,採用了Reactor的併發伺服器設計模式,如果對Reactor有一定的瞭解會有助於對Darw

Windows Server 2016-Nano Server介紹

Winser2016 Nano Ser Nano Server Windows server 2016 2016 Nano Server WindowsServer 2016 提供了新的安裝選項:Nano Server。Nano Server 是針對私有雲和數據中心進行優化的遠程管理的服務器操

Spark入門實戰系列--7.Spark Streaming(上)--實時流計算Spark Streaming原理介紹

【注】該系列文章以及使用到安裝包/測試資料 可以在《》獲取 1、Spark Streaming簡介 1.1 概述 Spark Streaming 是Spark核心API的一個擴充套件,可以實現高吞吐量的、具備容錯機制的實時流資料的處理。支援從多種資料來源獲取資料,包括Kafk、Flume、Twitt

Unity3D利用Photon實現實時聯網對戰(一)Photon Server介紹

Photon 是一個實時多人遊戲開發框架,它是快速、精益和靈活的。 Photon伺服器功能強大,能夠滿足一般的中小型網路遊戲的需求,而且開發效率高,所以就稱為了大多數開發者的首選。由於網上關於Photon聯網的介紹內容比較少,現在小義就跟大家分享一下關於Pho

常用xmpp server 介紹

1. Openfire (Wildfire) 3.x 授權: GPL or 商用 作業系統平臺:所有(使用Java開發) XMPP Jabber 協議實現情況:98% Tim 評價: 安裝和使用非常簡單,安裝後進入Web介面進行2~3分鐘的配置所有的東西都設好了。使用Java語言開發,在目前Java開發人員到

Darwin Stream server(DSS伺服器)的Relay(中繼/轉發)設定

先說一下需求: 有4臺主機ABCD。A機上跑live555,將攝像頭的實時視訊編碼為H264,用RTSP協議(URL:rtsp://IpAddr-B/CamLive.sdp)將視訊流推送至DSS伺服器B。B將收到的流轉發給DSS伺服器C。客戶端D執行VLC,用地址rtsp:

TiDB Binlog 原始碼閱讀系列文章(四)Pump server 介紹

作者: satoru 在 上篇文章 中,我們介紹了 TiDB 如何通過 Pump client 將 binlog 發往 Pump,

kylin streaming原理介紹與特點淺析

[toc] # 前言 最近搭了Kylin Streaming並初步測試了下,覺得這個東西雖然有些限制,但還是蠻好用的,所以系統寫篇文章總結下其原理和一些配置。 Kylin Streaming是Kylin3.0最新引入的一個功能,意為OLAP查詢提供亞秒級的資料延遲,即在攝入資料後,立即可以在OLAP查詢中

webpack基礎+webpack配置文件常用配置項介紹+webpack-dev-server

建議 每次 alt fig out 添加 pre 補充 字符串 一.webpack基礎   1.在項目中生成package.json:在項目根目錄中輸入npm init,根據提示輸入相應信息。(也可以不生成package.json文件,但是package.json是很有用的

SQL Server 全文索引介紹(轉載)

所在 ubd exec nchar 配置管理 system data ase 百度搜索 概述 全文引擎使用全文索引中的信息來編譯可快速搜索表中的特定詞或詞組的全文查詢。全文索引將有關重要的詞及其位置的信息存儲在數據庫表的一列或多列中。全文索引是一種特殊類型的基於標記的

轉載 SQL Server中常用全局變量介紹

lang select 兩種 正在 操作 tempdb gid ive 作用範圍 變量 Transact-SQL語言中有兩種形式的變量,一種是用戶自己定義的局部變量,另外一種是系統提供的全局變量。局部變量 局部變量是一個能夠擁有特定數據類型的對象,它的作用範圍僅限制在程序內

【能力提升】SQL Server常見問題介紹及高速解決建議

轉移 連接數 運行時 方案 備份 登錄 rac 攻擊 cnblogs 前言   本文旨在幫助SQL Server數據庫的使用人員了解常見的問題。及高速解決這些問題。這些問題是數據庫的常規管理問題,對於非常多對數據庫沒有深入了解的朋友提供一個大概的常見問題框架。

SSI(Server Side Include)簡單介紹

什麽 軟件 inter 名稱 -c mic content b- 了解 Server-side include(server端包含) Server-side include(server端包含)是瀏覽器向server請求您的文檔時並入您的文檔的一個文件。 當

《轉載》Apache HTTP Server 與 Tomcat 的三種連接方式介紹

之前 img 6.2 自定義 con 訪問 ont 是什麽 bsp 本文轉載自IBM developer 首先我們先介紹一下為什麽要讓 Apache 與 Tomcat 之間進行連接。事實上 Tomcat 本身已經提供了 HTTP 服務,該服務默認的端口是 8080,裝好 t

[翻譯]——SQL Server索引的介紹:SQL Server索引級的階梯

找到 重要 creat statistic 完全 published png work 定位 SQL Server索引的介紹:SQL Server索引級的階梯 By David Durant, 2014/11/05 (first published: 2011/02/17)

MS Sql Server 中主從庫的配置和使用介紹

money mas 篩選 緩存 事務性 添加 com 對象 報表 https://technet.microsoft.com/zh-cn/ff806143.aspx 網站規模到了一定程度之後,該分的也分了,該優化的也做了優化,但是還是不能滿足業務上對性能的要求;這時候我們