日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SRS流媒体服务器——单机环境搭建和源码目录介绍

發(fā)布時(shí)間:2024/4/11 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SRS流媒体服务器——单机环境搭建和源码目录介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SRS流媒體服務(wù)器——單機(jī)環(huán)境搭建和源碼目錄介紹


1. 目錄

  • 環(huán)境搭建
  • 源碼目錄介紹

  • 1. 環(huán)境搭建

  • srs官?:https://github.com/ossrs/srs
  • 碼云的源速度快:https://gitee.com/winlinvip/srs.oschina.git
  • github的源速度慢:https://github.com/ossrs/srs.git
  • 1. 獲取SRS

    git clone https://gitee.com/winlinvip/srs.oschina.git srs.3.0-20200720 cd srs.3.0-20200720 #使?當(dāng)前最新的3.0版本 git checkout 3.0release cd trunk

    2. 編譯SRS

    ./configure && make

    3. 編寫SRS配置?件

  • 詳細(xì)參考RTMP分發(fā),Delivery HLS,Delivery HTTP FLV。
  • 編輯 conf/srs.conf ,服務(wù)器啟動(dòng)時(shí)指定該配置?件(srs的conf?件夾有該?件)。
  • listen 1935; max_connections 1000; srs_log_tank file; srs_log_file ./objs/srs.log; daemon on; http_api {enabled on;listen 1985; } http_server {enabled on;listen 8080;dir ./objs/nginx/html; } stats {network 0;disk sda sdb xvda xvdb; } vhost __defaultVhost__ {hls {enabled on;hls_path ./objs/nginx/html;hls_fragment 10;hls_window 60;}http_remux {enabled on;mount [vhost]/[app]/[stream].flv;hstrs on;} }

    4. 啟動(dòng)SRS

  • 啟動(dòng)srs
  • ./objs/srs -c conf/srs.conf
  • 顯示日志信息
  • [2022-01-17 19:39:34.135][Trace][25751][0] XCORE-SRS/3.0.170(OuXuli) [2022-01-17 19:39:34.135][Trace][25751][0] config parse complete [2022-01-17 19:39:34.135][Trace][25751][0] you can check log by: tail -f ./objs/srs.log (@see https://github.com/ossrs/srs/wiki/v1_CN_SrsLog) [2022-01-17 19:39:34.135][Trace][25751][0] please check SRS by: ./etc/init.d/srs status
  • 確認(rèn)是否已經(jīng)正常啟動(dòng)
  • root@iZj40xj4xmw74sZ:~/srs/srs.3.0-20200720/trunk# ps -ef | grep srs root 25753 1 0 19:39 pts/0 00:00:00 ./objs/srs -c conf/srs.conf # 表示啟動(dòng)成功 root 25755 13681 0 19:39 pts/0 00:00:00 grep --color=auto srs
  • 安全退出正在運(yùn)?的srs
  • sudo kill -SIGQUIT srs_pid
  • 默認(rèn)是后臺(tái)啟動(dòng)的?式,如果是要?便GDB調(diào)試則需要修改配置?件為前臺(tái)啟動(dòng)。
  • listen 1935; max_connections 1000; #srs_log_tank file; #srs_log_file ./objs/srs.log; daemon off; srs_log_tank console; http_api {enabled on;listen 1985; } http_server {enabled on;listen 8080;dir ./objs/nginx/html; } stats {network 0;disk sda sdb xvda xvdb; } vhost __defaultVhost__ {hls {enabled on;hls_path ./objs/nginx/html;hls_fragment 10;hls_window 60;}http_remux {enabled on;mount [vhost]/[app]/[stream].flv;hstrs on;} }

    2. 源碼目錄介紹

  • trunk?錄
  • src下的源碼
  • app
  • ├── app │ ├── srs_app_async_call.cpp │ ├── srs_app_async_call.hpp 可以?來執(zhí)?異步任務(wù),通過execute()函數(shù) push任務(wù),然后在cycle()執(zhí)? │ ├── srs_app_bandwidth.cpp │ ├── srs_app_bandwidth.hpp 提供帶寬測試接? │ ├── srs_app_caster_flv.cpp │ ├── srs_app_caster_flv.hpp ?持POST?個(gè)flv流到服務(wù)器,類似相當(dāng)于RTMP的publish │ ├── srs_app_config.cpp │ ├── srs_app_config.hpp 讀取配置?件 │ ├── srs_app_conn.cpp │ ├── srs_app_conn.hpp srs的基本連接,每個(gè)連接對應(yīng)?個(gè)協(xié)程,所有的連接都被管理 │ ├── srs_app_coworkers.cpp │ ├── srs_app_coworkers.hpp SrsCoWorkers For origin cluster │ ├── srs_app_dash.cpp │ ├── srs_app_dash.hpp SrsDash 流媒體DASH業(yè)務(wù) The MPEG-DASH encoder, transmux RTMP to DASH. │ ├── srs_app_dvr.cpp │ ├── srs_app_dvr.hpp SrsDvr 錄制RTMP流程flv或者mp4?件 │ ├── srs_app_edge.cpp │ ├── srs_app_edge.hpp SrsEdgeRtmpUpstream 邊緣節(jié)點(diǎn)業(yè)務(wù),?如從源站拉流到邊緣,邊緣回溯到源站 │ ├── srs_app_empty.cpp │ ├── srs_app_empty.hpp 沒有內(nèi)容 │ ├── srs_app_encoder.cpp │ ├── srs_app_encoder.hpp SrsEncoder 可以使?多個(gè)ffmpeg來轉(zhuǎn)換指定的流,最終調(diào)?SrsFFMPEG來轉(zhuǎn)流 │ ├── srs_app_ffmpeg.cpp │ ├── srs_app_ffmpeg.hpp SrsFFMPEG 使?ffmpeg來轉(zhuǎn)換流 │ ├── srs_app_forward.cpp │ ├── srs_app_forward.hpp SrsForwarder 將流轉(zhuǎn)發(fā)到其他服務(wù)器 │ ├── srs_app_fragment.cpp │ ├── srs_app_fragment.hpp SrsFragment 表示?個(gè)分?,如HLS分?、DVR分?或DASH分?。它是?個(gè)媒體?件,例如FLV或MP4,有持續(xù)時(shí)間。 │ ├── srs_app_hds.cpp │ ├── srs_app_hds.hpp SrsHds 將RTMP轉(zhuǎn)成Adobe HDS流 │ ├── srs_app_heartbeat.cpp │ ├── srs_app_heartbeat.hpp SrsHttpHeartbeat HHTP?跳 │ ├── srs_app_hls.cpp │ ├── srs_app_hls.hpp SrsHls HLS業(yè)務(wù),Transmux RTMP stream to HLS(m3u8 and ts). │ ├── srs_app_hourglass.cpp │ ├── srs_app_hourglass.hpp SrsHourGlass 滴答tick的處理程序 │ ├── srs_app_http_api.cpp │ ├── srs_app_http_api.hpp SrsHttpApi HTTP業(yè)務(wù)API │ ├── srs_app_http_client.cpp │ ├── srs_app_http_client.hpp 沒有內(nèi)容 │ ├── srs_app_http_conn.cpp │ ├── srs_app_http_conn.hpp SrsHttpConn,HTTP連接,繼承于SrsConnection │ ├── srs_app_http_hooks.cpp │ ├── srs_app_http_hooks.hpp SrsHttpHooks HTTP勾?,HTTP回調(diào)API │ ├── srs_app_http_static.cpp │ ├── srs_app_http_static.hpp SrsHttpStaticServer HTTP靜態(tài)服務(wù)器實(shí)例,為HTTP靜態(tài)?件和FLV/MP4視頻點(diǎn)播服務(wù) │ ├── srs_app_http_stream.cpp │ ├── srs_app_http_stream.hpp SrsHttpStreamServer HTTP直播流服務(wù),?持FLV/TS/MP3/AAC流 │ ├── srs_app_ingest.cpp │ ├── srs_app_ingest.hpp SrsIngester攝取?件/流/設(shè)備,?FFMPEG編碼(可選), 通過RTMP推送到SRS(或其他RTMP服務(wù)器) │ ├── srs_app_listener.cpp │ ├── srs_app_listener.hpp SrsTcpListener SrsUdpListener TCP/UDP監(jiān)聽器 │ ├── srs_app_log.cpp │ ├── srs_app_log.hpp SrsFastLog ?志 │ ├── srs_app_mpegts_udp.cpp │ ├── srs_app_mpegts_udp.hpp SrsMpegtsOverUdpThe mpegts over udp stream caster │ ├── srs_app_ng_exec.cpp │ ├── srs_app_ng_exec.hpp SrsNgExec │ ├── srs_app_pithy_print.cpp │ ├── srs_app_pithy_print.hpp SrsPithyPrint 收集信息,然后打印 │ ├── srs_app_process.cpp │ ├── srs_app_process.hpp SrsProcess啟動(dòng)和停?進(jìn)程,當(dāng)被終?時(shí)調(diào)?cycle重新啟動(dòng)進(jìn)程 │ ├── srs_app_recv_thread.cpp │ ├── srs_app_recv_thread.hpp SrsHttpRecvThread HTTP數(shù)據(jù)讀取,SrsPublishRecvThread推流數(shù)據(jù)讀取,SrsQueueRecvThread從隊(duì)列讀取;SrsRecvThread封裝的協(xié)程 │ ├── srs_app_refer.cpp │ ├── srs_app_refer.hpp SrsRefer │ ├── srs_app_reload.cpp │ ├── srs_app_reload.hpp ISrsReloadHandler 重新讀取配置?件的處理 │ ├── srs_app_rtmp_conn.cpp │ ├── srs_app_rtmp_conn.hpp SrsRtmpConn RTMP連接 │ ├── srs_app_rtsp.cpp │ ├── srs_app_rtsp.hpp SrsRtpConn RTSP連接,SrsRtspCaster RTSP業(yè)務(wù) │ ├── srs_app_security.cpp │ ├── srs_app_security.hpp SrsSecurity 安全限制,主要是限制url │ ├── srs_app_server.cpp │ ├── srs_app_server.hpp SrsServer SRS服務(wù),對應(yīng)的rtmp、rtsp、http-flv等等業(yè)務(wù)在這?啟動(dòng) │ ├── srs_app_source.cpp │ ├── srs_app_source.hpp SrsSource 對應(yīng)?個(gè)源,?持多個(gè)SrsConsumer來拉流,SrsSourceManager管理源, SrsMetaCache?于源緩存Meta數(shù)據(jù),SrsConsumer源的消費(fèi)者,SrsGopCache GOP緩存 │ ├── srs_app_statistic.cpp │ ├── srs_app_statistic.hpp SrsStatistic流統(tǒng)計(jì) │ ├── srs_app_st.cpp │ ├── srs_app_st.hpp SrsSTCoroutine協(xié)程相關(guān) │ ├── srs_app_thread.cpp │ ├── srs_app_thread.hpp SrsCoroutineManager協(xié)程管理 │ ├── srs_app_utility.cpp │ └── srs_app_utility.hpp ?具類:SrsPlatformInfo、SrsNetworkDevices、SrsMemInfo、SrsDiskStat等等
  • core
  • │ ├── srs_core_autofree.cpp │ ├── srs_core_autofree.hpp 通過棧上的?式構(gòu)建?動(dòng)釋放堆申請的對象,這個(gè)設(shè)計(jì)還是?常值得我們學(xué)習(xí) │ ├── srs_core.cpp │ ├── srs_core.hpp 版本相關(guān)的?些信息 │ ├── srs_core_mem_watch.cpp │ ├── srs_core_mem_watch.hpp 內(nèi)存監(jiān)測接? │ ├── srs_core_performance.cpp │ ├── srs_core_performance.hpp 性能測試相關(guān) │ ├── srs_core_time.cpp │ ├── srs_core_time.hpp 時(shí)間單位相關(guān) │ ├── srs_core_version3.cpp │ └── srs_core_version3.hpp 版本信息
  • kernel // ?視頻格式相關(guān)的
  • │ ├── srs_kernel_aac.cpp │ ├── srs_kernel_aac.hpp SrsAacTransmuxer 合成AAC?頻流,帶ADTS header │ ├── srs_kernel_balance.cpp │ ├── srs_kernel_balance.hpp SrsLbRoundRobin負(fù)載均衡,?于邊緣節(jié)點(diǎn)拉流和其他多個(gè)服務(wù)器的功能 │ ├── srs_kernel_buffer.cpp │ ├── srs_kernel_buffer.hpp SrsBuffer讀取字節(jié)的實(shí)?類 │ ├── srs_kernel_codec.cpp │ ├── srs_kernel_codec.hpp 編碼器相關(guān),包括視頻和?頻,?常核?的?件;SrsFlvVideo?來檢測FLV的video tag對應(yīng)內(nèi)容;SrsFlvAudio?來檢測FLV的audio tag對應(yīng)內(nèi)容;SrsMaxNbSamples256表示video最?的NALUS個(gè)數(shù),audio最?的packet數(shù)量;SrsFrame存儲(chǔ)幀,SrsAudioFrame 存儲(chǔ)AAC幀,SrsVideoFrame存儲(chǔ)視頻幀;SrsFormat編碼器格式,包含了?個(gè)或者多個(gè)流,?如為RTMPformat時(shí),包含?個(gè)視頻和?個(gè)?頻幀。先猜測推流時(shí)的數(shù)據(jù)實(shí)例是保存在SrsFormat? │ ├── srs_kernel_consts.cpp │ ├── srs_kernel_consts.hpp SRS的常量定義,?如播放的標(biāo)記#define SRS_CONSTS_LOG_PLAY "PLA";發(fā)布的標(biāo)記#define SRS_CONSTS_LOG_CLIENT_PUBLISH "CPB";SRS_CONSTS_HTTP_XXX等HTTP響應(yīng)碼;SRS_CONSTS_RTSP_XXX響應(yīng)碼等等。 │ ├── srs_kernel_error.cpp │ ├── srs_kernel_error.hpp 返回值常量定義,ERROR_XXX;SrsCplxError 異常類 │ ├── srs_kernel_file.cpp │ ├── srs_kernel_file.hpp ?件的讀寫,SrsFileWriter?件寫?器,SrsFileReader?件讀取器 │ ├── srs_kernel_flv.cpp │ ├── srs_kernel_flv.hpp FLV SrsFlvDecoder解析,SrsFlvTransmuxer將RTMP轉(zhuǎn)成FLV流;SrsSharedPtrMessage對應(yīng)RTMP的消息 │ ├── srs_kernel_io.cpp │ ├── srs_kernel_io.hpp IO讀寫接?類 │ ├── srs_kernel_log.cpp │ ├── srs_kernel_log.hpp ?志相關(guān) │ ├── srs_kernel_mp3.cpp │ ├── srs_kernel_mp3.hpp SrsMp3Transmuxer將RTMP轉(zhuǎn)成MP3流 │ ├── srs_kernel_mp4.cpp │ ├── srs_kernel_mp4.hpp SrsMp4Encoder MP4復(fù)?器; │ ├── srs_kernel_stream.cpp │ ├── srs_kernel_stream.hpp SrsSimpleStream?vector實(shí)現(xiàn)的簡單的字節(jié)append類,主要在hls和http中使?,將來需要進(jìn)?改進(jìn)。 │ ├── srs_kernel_ts.cpp │ ├── srs_kernel_ts.hpp SrsTsTransmuxer將RTMP流轉(zhuǎn)成http-ts流,該?件實(shí)現(xiàn)了ts格式相關(guān)的接? │ ├── srs_kernel_utility.cpp │ └── srs_kernel_utility.hpp ?具函數(shù),?如bool srs_string_ends_with(std::string str, std::string flag)
  • libs
  • │ ├── srs_lib_bandwidth.cpp │ ├── srs_lib_bandwidth.hpp SrsBandwidthClient srs-librtmp 客戶端帶寬統(tǒng)計(jì) │ ├── srs_librtmp.cpp │ ├── srs_librtmp.hpp srs提供的客戶端rtmp庫 │ ├── srs_lib_simple_socket.cpp │ └── srs_lib_simple_socket.hpp SimpleSocketStream rtmp客戶端的socket封裝
  • main
  • │ ├── srs_main_ingest_hls.cpp 拉取hls發(fā)布到rtmp流媒體服務(wù)器 │ ├── srs_main_mp4_parser.cpp MP4 box解析 │ └── srs_main_server.cpp srs流媒體服務(wù)器主??
  • protocol 流媒體協(xié)議相關(guān)的協(xié)議都在這?
  • │ ├── srs_http_stack.cpp │ ├── srs_http_stack.hpp HTTP協(xié)議 │ ├── srs_protocol_amf0.cpp │ ├── srs_protocol_amf0.hpp Amf0解析 │ ├── srs_protocol_format.cpp │ ├── srs_protocol_format.hpp SrsRtmpFormat繼承了SrsFormat, 代表RTMP格式 │ ├── srs_protocol_io.cpp │ ├── srs_protocol_io.hpp 協(xié)議數(shù)據(jù)讀取的IO封裝接?,?如ISrsProtocolReadWriter │ ├── srs_protocol_json.cpp │ ├── srs_protocol_json.hpp json類 │ ├── srs_protocol_kbps.cpp │ ├── srs_protocol_kbps.hpp ?特率統(tǒng)計(jì)相關(guān) │ ├── srs_protocol_stream.cpp │ ├── srs_protocol_stream.hpp 流讀取,從ISrsReader讀取數(shù)據(jù)到buffer?? │ ├── srs_protocol_utility.cpp │ ├── srs_protocol_utility.hpp 協(xié)議?具函數(shù) │ ├── srs_raw_avc.cpp │ ├── srs_raw_avc.hpp SrsRawH264Stream H264裸流解析,SrsRawAacStream AAC裸流解析 │ ├── srs_rtmp_handshake.cpp │ ├── srs_rtmp_handshake.hpp RTMP握?,包括SrsSimpleHandshake和SrsComplexHandshake │ ├── srs_rtmp_msg_array.cpp │ ├── srs_rtmp_msg_array.hpp SrsMessageArray消息數(shù)組 │ ├── srs_rtmp_stack.cpp │ ├── srs_rtmp_stack.hpp RTMP協(xié)議棧 │ ├── srs_rtsp_stack.cpp │ └── srs_rtsp_stack.hpp RTSP協(xié)議棧
  • service
  • │ ├── srs_service_conn.cpp │ ├── srs_service_conn.hpp ISrsConnection HTTP/RTMP/RTSP等對象的連接接?;IConnectionManager管理連接接? │ ├── srs_service_http_client.cpp │ ├── srs_service_http_client.hpp SrsHttpClient HTTP客戶端 │ ├── srs_service_http_conn.cpp11 │ ├── srs_service_http_conn.hpp HTTP連接 SrsHttpParser,SrsHttpMessage,SrsHttpResponseWriter,SrsHttpResponseReader │ ├── srs_service_log.cpp │ ├── srs_service_log.hpp SrsConsoleLog?志相關(guān) │ ├── srs_service_rtmp_conn.cpp │ ├── srs_service_rtmp_conn.hpp SrsBasicRtmpClient RTMP客戶端類 │ ├── srs_service_st.cpp │ ├── srs_service_st.hpp 對st-thread協(xié)程的封裝 │ ├── srs_service_utility.cpp │ └── srs_service_utility.hpp service組件的?具類
  • utest
  • ├── srs_utest_amf0.cpp ├── srs_utest_amf0.hpp ├── srs_utest_app.cpp ├── srs_utest_app.hpp ├── srs_utest_avc.cpp ├── srs_utest_avc.hpp ├── srs_utest_config.cpp ├── srs_utest_config.hpp ........... 還有其他utest?件,這?忽略
  • 8 directories, 203 files
  • 總結(jié)

    以上是生活随笔為你收集整理的SRS流媒体服务器——单机环境搭建和源码目录介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。