mirror of
https://github.com/ossrs/srs.git
synced 2026-01-12 00:05:45 +08:00
Page:
migrate_v4_CN_rtmp pk http
Pages
ARMTranscode
Architecture
BandwidthTestTool
BravoMediaServer
Build
CNHome
CNHome_v1
Compare
Contact
DRM
DVR
DeliveryHLS
DeliveryRTMP
ENHome_v1
Edge
FFMPEG
Features
FlvVodStream
Forward
GPERF
GPROF
GSoC2022
Git
GoDevGuide
HTTPApi
HTTPCallback
HTTPServer
Heartbeat
Home
HowToAskQuestion
HowToFilePR
IDE
Ingest
LicenseMixing
LinuxService
LiveShow
LowLatency
Perf
Performance
Product
RTMP ATC
RTMP.PK.HTTP
RTMPHandshake
RaspberryPi
Reload
RtmpUrlVhost
SRS QQ Dismissed
Sample
SampleARM
SampleDemo
SampleFFMPEG
SampleForward
SampleHLS
SampleHTTP
SampleIngest
SampleRTMP
SampleRealtime
SampleTranscode2HLS
ServerSideScript
SrsLibrtmp
SrsLinuxArm
SrsLog
TimeJitter
VideoTutorial
WindowsSRS
migrate_v4_CN_arm
migrate_v4_CN_client sdk
migrate_v4_CN_delivery hds
migrate_v4_CN_delivery hls
migrate_v4_CN_delivery rtmp
migrate_v4_CN_drm
migrate_v4_CN_edge
migrate_v4_CN_ffmpeg
migrate_v4_CN_flv vod stream
migrate_v4_CN_git
migrate_v4_CN_gperf
migrate_v4_CN_gprof
migrate_v4_CN_hevc
migrate_v4_CN_http api
migrate_v4_CN_http server
migrate_v4_CN_ide
migrate_v4_CN_install
migrate_v4_CN_introduction
migrate_v4_CN_k8s
migrate_v4_CN_log rotate
migrate_v4_CN_log
migrate_v4_CN_low latency
migrate_v4_CN_nginx exec
migrate_v4_CN_nginx for hls
migrate_v4_CN_origin cluster
migrate_v4_CN_perf
migrate_v4_CN_performance
migrate_v4_CN_raspberrypi
migrate_v4_CN_reload
migrate_v4_CN_reuse port
migrate_v4_CN_rtmp atc
migrate_v4_CN_rtmp handshake
migrate_v4_CN_rtmp pk http
migrate_v4_CN_rtmp url vhost
migrate_v4_CN_sample arm
migrate_v4_CN_sample dash
migrate_v4_CN_sample ffmpeg
migrate_v4_CN_sample forward
migrate_v4_CN_sample hls cluster
migrate_v4_CN_sample hls
migrate_v4_CN_sample http flv cluster
migrate_v4_CN_sample http flv
migrate_v4_CN_sample http
migrate_v4_CN_sample ingest
migrate_v4_CN_sample origin cluster
migrate_v4_CN_sample realtime
migrate_v4_CN_sample rtmp cluster
migrate_v4_CN_sample rtmp
migrate_v4_CN_sample srt
migrate_v4_CN_sample transcode to hls
migrate_v4_CN_sample
migrate_v4_CN_service
migrate_v4_CN_snapshot
migrate_v4_CN_special control
migrate_v4_CN_srt codec
migrate_v4_CN_srt params
migrate_v4_CN_srt url
migrate_v4_CN_streamer
migrate_v4_CN_time jitter
migrate_v4_CN_webrtc
migrate_v4_CN_windows
migrate_v4_EN_arm
migrate_v4_EN_client sdk
migrate_v4_EN_delivery hds
migrate_v4_EN_delivery hls
migrate_v4_EN_delivery rtmp
migrate_v4_EN_drm
migrate_v4_EN_edge
migrate_v4_EN_ffmpeg
migrate_v4_EN_flv vod stream
migrate_v4_EN_forward
migrate_v4_EN_git
migrate_v4_EN_gperf
migrate_v4_EN_gprof
migrate_v4_EN_hevc
migrate_v4_EN_http api
migrate_v4_EN_http server
migrate_v4_EN_ide
migrate_v4_EN_install
migrate_v4_EN_introduction
migrate_v4_EN_k8s
migrate_v4_EN_log rotate
migrate_v4_EN_log
migrate_v4_EN_low latency
migrate_v4_EN_nginx exec
migrate_v4_EN_nginx for hls
migrate_v4_EN_origin cluster
migrate_v4_EN_perf
migrate_v4_EN_performance
migrate_v4_EN_raspberrypi
migrate_v4_EN_reload
migrate_v4_EN_reuse port
migrate_v4_EN_rtmp atc
migrate_v4_EN_rtmp handshake
migrate_v4_EN_rtmp pk http
migrate_v4_EN_rtmp url vhost
migrate_v4_EN_sample arm
migrate_v4_EN_sample dash
migrate_v4_EN_sample ffmpeg
migrate_v4_EN_sample forward
migrate_v4_EN_sample hls cluster
migrate_v4_EN_sample hls
migrate_v4_EN_sample http flv cluster
migrate_v4_EN_sample http flv
migrate_v4_EN_sample http
migrate_v4_EN_sample ingest
migrate_v4_EN_sample origin cluster
migrate_v4_EN_sample realtime
migrate_v4_EN_sample rtmp cluster
migrate_v4_EN_sample rtmp
migrate_v4_EN_sample srt
migrate_v4_EN_sample transcode to hls
migrate_v4_EN_sample
migrate_v4_EN_service
migrate_v4_EN_snapshot
migrate_v4_EN_special control
migrate_v4_EN_srt codec
migrate_v4_EN_srt params
migrate_v4_EN_srt url
migrate_v4_EN_streamer
migrate_v4_EN_time jitter
migrate_v4_EN_webrtc
migrate_v4_EN_windows
migrate_v5_CN_arm
migrate_v5_CN_client sdk
migrate_v5_CN_delivery hds
migrate_v5_CN_delivery hls
migrate_v5_CN_delivery rtmp
migrate_v5_CN_drm
migrate_v5_CN_edge
migrate_v5_CN_ffmpeg
migrate_v5_CN_flv vod stream
migrate_v5_CN_git
migrate_v5_CN_gperf
migrate_v5_CN_gprof
migrate_v5_CN_hevc
migrate_v5_CN_http api
migrate_v5_CN_http server
migrate_v5_CN_ide
migrate_v5_CN_install
migrate_v5_CN_introduction
migrate_v5_CN_k8s
migrate_v5_CN_log rotate
migrate_v5_CN_log
migrate_v5_CN_low latency
migrate_v5_CN_nginx exec
migrate_v5_CN_nginx for hls
migrate_v5_CN_origin cluster
migrate_v5_CN_perf
migrate_v5_CN_performance
migrate_v5_CN_raspberrypi
migrate_v5_CN_reload
migrate_v5_CN_reuse port
migrate_v5_CN_rtmp atc
migrate_v5_CN_rtmp handshake
migrate_v5_CN_rtmp pk http
migrate_v5_CN_rtmp url vhost
migrate_v5_CN_sample arm
migrate_v5_CN_sample dash
migrate_v5_CN_sample ffmpeg
migrate_v5_CN_sample forward
migrate_v5_CN_sample hls cluster
migrate_v5_CN_sample hls
migrate_v5_CN_sample http flv cluster
migrate_v5_CN_sample http flv
migrate_v5_CN_sample http
migrate_v5_CN_sample ingest
migrate_v5_CN_sample origin cluster
migrate_v5_CN_sample realtime
migrate_v5_CN_sample rtmp cluster
migrate_v5_CN_sample rtmp
migrate_v5_CN_sample srt
migrate_v5_CN_sample transcode to hls
migrate_v5_CN_sample
migrate_v5_CN_service
migrate_v5_CN_snapshot
migrate_v5_CN_special control
migrate_v5_CN_srt codec
migrate_v5_CN_srt params
migrate_v5_CN_srt url
migrate_v5_CN_streamer
migrate_v5_CN_time jitter
migrate_v5_CN_webrtc
migrate_v5_CN_windows
migrate_v5_EN_arm
migrate_v5_EN_client sdk
migrate_v5_EN_delivery hds
migrate_v5_EN_delivery hls
migrate_v5_EN_delivery rtmp
migrate_v5_EN_drm
migrate_v5_EN_edge
migrate_v5_EN_ffmpeg
migrate_v5_EN_flv vod stream
migrate_v5_EN_forward
migrate_v5_EN_git
migrate_v5_EN_gperf
migrate_v5_EN_gprof
migrate_v5_EN_hevc
migrate_v5_EN_http api
migrate_v5_EN_http server
migrate_v5_EN_ide
migrate_v5_EN_install
migrate_v5_EN_introduction
migrate_v5_EN_k8s
migrate_v5_EN_log rotate
migrate_v5_EN_log
migrate_v5_EN_low latency
migrate_v5_EN_nginx exec
migrate_v5_EN_nginx for hls
migrate_v5_EN_origin cluster
migrate_v5_EN_perf
migrate_v5_EN_performance
migrate_v5_EN_raspberrypi
migrate_v5_EN_reload
migrate_v5_EN_reuse port
migrate_v5_EN_rtmp atc
migrate_v5_EN_rtmp handshake
migrate_v5_EN_rtmp pk http
migrate_v5_EN_rtmp url vhost
migrate_v5_EN_sample arm
migrate_v5_EN_sample dash
migrate_v5_EN_sample ffmpeg
migrate_v5_EN_sample forward
migrate_v5_EN_sample hls cluster
migrate_v5_EN_sample hls
migrate_v5_EN_sample http flv cluster
migrate_v5_EN_sample http flv
migrate_v5_EN_sample http
migrate_v5_EN_sample ingest
migrate_v5_EN_sample origin cluster
migrate_v5_EN_sample realtime
migrate_v5_EN_sample rtmp cluster
migrate_v5_EN_sample rtmp
migrate_v5_EN_sample srt
migrate_v5_EN_sample transcode to hls
migrate_v5_EN_sample
migrate_v5_EN_service
migrate_v5_EN_snapshot
migrate_v5_EN_special control
migrate_v5_EN_srt codec
migrate_v5_EN_srt params
migrate_v5_EN_srt url
migrate_v5_EN_streamer
migrate_v5_EN_time jitter
migrate_v5_EN_webrtc
migrate_v5_EN_windows
v1 wiki cn
v1 wiki en
v1_CN_ARMTranscode
v1_CN_Architecture
v1_CN_BandwidthTestTool
v1_CN_Build
v1_CN_Compare
v1_CN_Contact
v1_CN_DRM
v1_CN_DVR
v1_CN_DeliveryHLS
v1_CN_DeliveryRTMP
v1_CN_Docs
v1_CN_Edge
v1_CN_FFMPEG
v1_CN_Features
v1_CN_FlvVodStream
v1_CN_GPERF
v1_CN_GPROF
v1_CN_Git
v1_CN_HTTPApi
v1_CN_HTTPCallback
v1_CN_HTTPServer
v1_CN_Heartbeat
v1_CN_Home
v1_CN_HowToAskQuestion
v1_CN_IDE
v1_CN_LinuxService
v1_CN_LiveShow
v1_CN_Perf
v1_CN_Performance
v1_CN_Product
v1_CN_Project
v1_CN_RTMP ATC
v1_CN_RTMP.PK.HTTP
v1_CN_RTMPHandshake
v1_CN_RaspberryPi
v1_CN_Reload
v1_CN_RtmpUrlVhost
v1_CN_SRS QQ Dismissed Email
v1_CN_SRS QQ Dismissed Messages
v1_CN_Sample
v1_CN_SampleARM
v1_CN_SampleDemo
v1_CN_SampleFFMPEG
v1_CN_SampleForward
v1_CN_SampleHLS
v1_CN_SampleHTTP
v1_CN_SampleIngest
v1_CN_SampleRTMP
v1_CN_SampleRTMPCluster
v1_CN_SampleRealtime
v1_CN_SampleTranscode2HLS
v1_CN_ServerSideScript
v1_CN_Setup
v1_CN_SrsLibrtmp
v1_CN_SrsLinuxArm
v1_CN_SrsLog
v1_CN_TimeJitter
v1_CN_WindowsSRS
v1_CN_hevc
v1_EN_ARMTranscode
v1_EN_Architecture
v1_EN_BandwidthTestTool
v1_EN_Build
v1_EN_Compare
v1_EN_Contact
v1_EN_DRM
v1_EN_DVR
v1_EN_DeliveryHLS
v1_EN_DeliveryRTMP
v1_EN_Docs
v1_EN_Edge
v1_EN_FFMPEG
v1_EN_Features
v1_EN_FlvVodStream
v1_EN_Forward
v1_EN_GPERF
v1_EN_GPROF
v1_EN_Git
v1_EN_HTTPApi
v1_EN_HTTPCallback
v1_EN_HTTPServer
v1_EN_Heartbeat
v1_EN_Home
v1_EN_HowToAskQuestion
v1_EN_IDE
v1_EN_LinuxService
v1_EN_LiveShow
v1_EN_LowLatency
v1_EN_Perf
v1_EN_Performance
v1_EN_Product
v1_EN_Project
v1_EN_RTMP ATC
v1_EN_RTMP.PK.HTTP
v1_EN_RTMPHandshake
v1_EN_RaspberryPi
v1_EN_Reload
v1_EN_RtmpUrlVhost
v1_EN_Sample
v1_EN_SampleARM
v1_EN_SampleDemo
v1_EN_SampleFFMPEG
v1_EN_SampleForward
v1_EN_SampleHLS
v1_EN_SampleHTTP
v1_EN_SampleIngest
v1_EN_SampleRTMP
v1_EN_SampleRTMPCluster
v1_EN_SampleRealtime
v1_EN_SampleTranscode2HLS
v1_EN_ServerSideScript
v1_EN_Setup
v1_EN_SrsLibrtmp
v1_EN_SrsLinuxArm
v1_EN_SrsLog
v1_EN_TimeJitter
v1_EN_WindowsSRS
v1_EN_hevc
v2 wiki cn
v2 wiki en
v2_CN_ARMTranscode
v2_CN_Architecture
v2_CN_BandwidthTestTool
v2_CN_Build
v2_CN_Compare
v2_CN_Contact
v2_CN_DRM
v2_CN_DeliveryHDS
v2_CN_DeliveryHLS
v2_CN_DeliveryRTMP
v2_CN_Docs
v2_CN_Edge
v2_CN_FFMPEG
v2_CN_Features
v2_CN_FlvVodStream
v2_CN_GPERF
v2_CN_GPROF
v2_CN_Git
v2_CN_HTTPApi
v2_CN_HTTPServer
v2_CN_Heartbeat
v2_CN_Home
v2_CN_HowToAskQuestion
v2_CN_IDE
v2_CN_LinuxService
v2_CN_LiveShow
v2_CN_LowLatency
v2_CN_Perf
v2_CN_Performance
v2_CN_Product
v2_CN_Project
v2_CN_RTMP ATC
v2_CN_RTMP.PK.HTTP
v2_CN_RTMPHandshake
v2_CN_RaspberryPi
v2_CN_Reload
v2_CN_RtmpUrlVhost
v2_CN_Sample
v2_CN_SampleARM
v2_CN_SampleDemo
v2_CN_SampleFFMPEG
v2_CN_SampleForward
v2_CN_SampleHLS
v2_CN_SampleHTTP
v2_CN_SampleHttpFlv
v2_CN_SampleHttpFlvCluster
v2_CN_SampleIngest
v2_CN_SampleRTMP
v2_CN_SampleRTMPCluster
v2_CN_SampleRealtime
v2_CN_SampleTranscode2HLS
v2_CN_ServerSideScript
v2_CN_Setup
v2_CN_SpecialControl
v2_CN_SrsLibrtmp
v2_CN_SrsLinuxArm
v2_CN_SrsLog
v2_CN_Streamer
v2_CN_TimeJitter
v2_CN_WebP2P
v2_CN_WindowsSRS
v2_CN_hevc
v2_EN_ARMTranscode
v2_EN_Architecture
v2_EN_BandwidthTestTool
v2_EN_Build
v2_EN_Compare
v2_EN_Contact
v2_EN_DRM
v2_EN_DeliveryHDS
v2_EN_DeliveryHLS
v2_EN_DeliveryRTMP
v2_EN_Docs
v2_EN_Edge
v2_EN_FFMPEG
v2_EN_Features
v2_EN_FlvVodStream
v2_EN_Forward
v2_EN_GPERF
v2_EN_GPROF
v2_EN_Git
v2_EN_HTTPApi
v2_EN_HTTPServer
v2_EN_Heartbeat
v2_EN_Home
v2_EN_HowToAskQuestion
v2_EN_IDE
v2_EN_LinuxService
v2_EN_LiveShow
v2_EN_LowLatency
v2_EN_Perf
v2_EN_Performance
v2_EN_Product
v2_EN_Project
v2_EN_RTMP ATC
v2_EN_RTMP.PK.HTTP
v2_EN_RTMPHandshake
v2_EN_RaspberryPi
v2_EN_Reload
v2_EN_RtmpUrlVhost
v2_EN_Sample
v2_EN_SampleARM
v2_EN_SampleDemo
v2_EN_SampleFFMPEG
v2_EN_SampleForward
v2_EN_SampleHLS
v2_EN_SampleHTTP
v2_EN_SampleHttpFlv
v2_EN_SampleHttpFlvCluster
v2_EN_SampleIngest
v2_EN_SampleRTMP
v2_EN_SampleRTMPCluster
v2_EN_SampleRealtime
v2_EN_SampleTranscode2HLS
v2_EN_ServerSideScript
v2_EN_Setup
v2_EN_SpecialControl
v2_EN_SrsLibrtmp
v2_EN_SrsLinuxArm
v2_EN_SrsLog
v2_EN_Streamer
v2_EN_TimeJitter
v2_EN_WebP2P
v2_EN_WindowsSRS
v2_EN_hevc
v3_CN_ARMTranscode
v3_CN_Architecture
v3_CN_BandwidthTestTool
v3_CN_Build
v3_CN_ClientSDK
v3_CN_CommercialSDK
v3_CN_Compare
v3_CN_Contact
v3_CN_DRM
v3_CN_DeliveryHDS
v3_CN_DeliveryHLS
v3_CN_DeliveryMethod
v3_CN_DeliveryRTMP
v3_CN_Dev_HttpServer
v3_CN_Docs
v3_CN_Edge
v3_CN_FFMPEG
v3_CN_Features
v3_CN_FlvVodStream
v3_CN_GPERF
v3_CN_GPROF
v3_CN_Git
v3_CN_HTTPApi
v3_CN_HTTPServer
v3_CN_Heartbeat
v3_CN_Home
v3_CN_HowToAskQuestion
v3_CN_IDE
v3_CN_Kafka
v3_CN_LinuxService
v3_CN_LiveShow
v3_CN_LogRotate
v3_CN_LowLatency
v3_CN_NgExec
v3_CN_OriginCluster
v3_CN_Perf
v3_CN_Performance
v3_CN_Product
v3_CN_Project
v3_CN_REUSEPORT
v3_CN_RTMP ATC
v3_CN_RTMP.PK.HTTP
v3_CN_RTMPHandshake
v3_CN_RaspberryPi
v3_CN_Reload
v3_CN_RtmpUrlVhost
v3_CN_Sample
v3_CN_SampleARM
v3_CN_SampleDASH
v3_CN_SampleDemo
v3_CN_SampleFFMPEG
v3_CN_SampleForward
v3_CN_SampleHLS
v3_CN_SampleHTTP
v3_CN_SampleHttpFlv
v3_CN_SampleHttpFlvCluster
v3_CN_SampleIngest
v3_CN_SampleOriginCluster
v3_CN_SampleRTMP
v3_CN_SampleRTMPCluster
v3_CN_SampleRealtime
v3_CN_SampleTranscode2HLS
v3_CN_ServerSideScript
v3_CN_Setup
v3_CN_Snapshot
v3_CN_SpecialControl
v3_CN_SrsLibrtmp
v3_CN_SrsLinuxArm
v3_CN_SrsLog
v3_CN_Streamer
v3_CN_TimeJitter
v3_CN_WebP2P
v3_CN_WindowsSRS
v3_CN_hevc
v3_EN_ARMTranscode
v3_EN_Architecture
v3_EN_BandwidthTestTool
v3_EN_Build
v3_EN_ClientSDK
v3_EN_CommercialSDK
v3_EN_Compare
v3_EN_Contact
v3_EN_DRM
v3_EN_DeliveryHDS
v3_EN_DeliveryHLS
v3_EN_DeliveryMethod
v3_EN_DeliveryRTMP
v3_EN_Dev_HttpServer
v3_EN_Docs
v3_EN_Edge
v3_EN_FFMPEG
v3_EN_Features
v3_EN_FlvVodStream
v3_EN_Forward
v3_EN_GPERF
v3_EN_GPROF
v3_EN_Git
v3_EN_HTTPApi
v3_EN_HTTPServer
v3_EN_Heartbeat
v3_EN_Home
v3_EN_HowToAskQuestion
v3_EN_IDE
v3_EN_Kafka
v3_EN_LinuxService
v3_EN_LiveShow
v3_EN_LogRotate
v3_EN_LowLatency
v3_EN_NgExec
v3_EN_OriginCluster
v3_EN_Perf
v3_EN_Performance
v3_EN_Product
v3_EN_Project
v3_EN_REUSEPORT
v3_EN_RTMP ATC
v3_EN_RTMP.PK.HTTP
v3_EN_RTMPHandshake
v3_EN_RaspberryPi
v3_EN_Reload
v3_EN_RtmpUrlVhost
v3_EN_Sample
v3_EN_SampleARM
v3_EN_SampleDASH
v3_EN_SampleDemo
v3_EN_SampleFFMPEG
v3_EN_SampleForward
v3_EN_SampleHLS
v3_EN_SampleHTTP
v3_EN_SampleHttpFlv
v3_EN_SampleHttpFlvCluster
v3_EN_SampleIngest
v3_EN_SampleOriginCluster
v3_EN_SampleRTMP
v3_EN_SampleRTMPCluster
v3_EN_SampleRealtime
v3_EN_SampleTranscode2HLS
v3_EN_ServerSideScript
v3_EN_Setup
v3_EN_Snapshot
v3_EN_SpecialControl
v3_EN_SrsLibrtmp
v3_EN_SrsLinuxArm
v3_EN_SrsLog
v3_EN_Streamer
v3_EN_TimeJitter
v3_EN_WebP2P
v3_EN_WindowsSRS
v3_EN_hevc
v4_CN_Build
v4_CN_ClientSDK
v4_CN_Compare
v4_CN_Contact
v4_CN_DRM
v4_CN_DVR
v4_CN_DeliveryHDS
v4_CN_DeliveryHLS
v4_CN_DeliveryHttpStream
v4_CN_DeliveryMethod
v4_CN_DeliveryRTMP
v4_CN_Docs
v4_CN_Edge
v4_CN_FFMPEG
v4_CN_Features
v4_CN_FlvVodStream
v4_CN_Forward
v4_CN_GPERF
v4_CN_GPROF
v4_CN_Git
v4_CN_HTTPApi
v4_CN_HTTPCallback
v4_CN_HTTPServer
v4_CN_Home
v4_CN_HowToAskQuestion
v4_CN_IDE
v4_CN_Ingest
v4_CN_K8S
v4_CN_LinuxService
v4_CN_LogRotate
v4_CN_LowLatency
v4_CN_NgExec
v4_CN_NginxForHLS
v4_CN_OriginCluster
v4_CN_Perf
v4_CN_Performance
v4_CN_Product
v4_CN_REUSEPORT
v4_CN_RTMP ATC
v4_CN_RTMP.PK.HTTP
v4_CN_RTMPHandshake
v4_CN_RaspberryPi
v4_CN_Reload
v4_CN_RtmpUrlVhost
v4_CN_SRTCodec
v4_CN_SRTParams
v4_CN_SRTURL
v4_CN_SRTWiki
v4_CN_Sample
v4_CN_SampleARM
v4_CN_SampleDASH
v4_CN_SampleDemo
v4_CN_SampleFFMPEG
v4_CN_SampleForward
v4_CN_SampleHLS
v4_CN_SampleHTTP
v4_CN_SampleHlsCluster
v4_CN_SampleHttpFlv
v4_CN_SampleHttpFlvCluster
v4_CN_SampleIngest
v4_CN_SampleOriginCluster
v4_CN_SampleRTMP
v4_CN_SampleRTMPCluster
v4_CN_SampleRealtime
v4_CN_SampleSRT
v4_CN_SampleTranscode2HLS
v4_CN_Security
v4_CN_Setup
v4_CN_Snapshot
v4_CN_SpecialControl
v4_CN_SrsLibrtmp
v4_CN_SrsLinuxArm
v4_CN_SrsLog
v4_CN_Streamer
v4_CN_TimeJitter
v4_CN_WebRTC
v4_CN_WindowsSRS
v4_CN_hevc
v4_EN_Build
v4_EN_ClientSDK
v4_EN_Compare
v4_EN_Contact
v4_EN_DRM
v4_EN_DVR
v4_EN_DeliveryHDS
v4_EN_DeliveryHLS
v4_EN_DeliveryHttpStream
v4_EN_DeliveryMethod
v4_EN_DeliveryRTMP
v4_EN_Docs
v4_EN_Edge
v4_EN_FFMPEG
v4_EN_Features
v4_EN_FlvVodStream
v4_EN_Forward
v4_EN_GPERF
v4_EN_GPROF
v4_EN_Git
v4_EN_HTTPApi
v4_EN_HTTPCallback
v4_EN_HTTPServer
v4_EN_Home
v4_EN_HowToAskQuestion
v4_EN_IDE
v4_EN_Ingest
v4_EN_K8S
v4_EN_LinuxService
v4_EN_LogRotate
v4_EN_LowLatency
v4_EN_NgExec
v4_EN_NginxForHLS
v4_EN_OriginCluster
v4_EN_Perf
v4_EN_Performance
v4_EN_Product
v4_EN_REUSEPORT
v4_EN_RTMP ATC
v4_EN_RTMP.PK.HTTP
v4_EN_RTMPHandshake
v4_EN_RaspberryPi
v4_EN_Reload
v4_EN_RtmpUrlVhost
v4_EN_SRTCodec
v4_EN_SRTParams
v4_EN_SRTURL
v4_EN_SRTWiki
v4_EN_Sample
v4_EN_SampleARM
v4_EN_SampleDASH
v4_EN_SampleDemo
v4_EN_SampleFFMPEG
v4_EN_SampleForward
v4_EN_SampleHLS
v4_EN_SampleHTTP
v4_EN_SampleHlsCluster
v4_EN_SampleHttpFlv
v4_EN_SampleHttpFlvCluster
v4_EN_SampleIngest
v4_EN_SampleOriginCluster
v4_EN_SampleRTMP
v4_EN_SampleRTMPCluster
v4_EN_SampleRealtime
v4_EN_SampleSRT
v4_EN_SampleTranscode2HLS
v4_EN_Security
v4_EN_Setup
v4_EN_Snapshot
v4_EN_SpecialControl
v4_EN_SrsLibrtmp
v4_EN_SrsLinuxArm
v4_EN_SrsLog
v4_EN_Streamer
v4_EN_TimeJitter
v4_EN_WebRTC
v4_EN_WindowsSRS
v4_EN_hevc
v5_CN_Build
v5_CN_ClientSDK
v5_CN_Compare
v5_CN_Contact
v5_CN_DRM
v5_CN_DVR
v5_CN_DeliveryHDS
v5_CN_DeliveryHLS
v5_CN_DeliveryHttpStream
v5_CN_DeliveryMethod
v5_CN_DeliveryRTMP
v5_CN_Docs
v5_CN_Edge
v5_CN_FFMPEG
v5_CN_Features
v5_CN_FlvVodStream
v5_CN_Forward
v5_CN_GPERF
v5_CN_GPROF
v5_CN_Git
v5_CN_HTTPApi
v5_CN_HTTPCallback
v5_CN_HTTPServer
v5_CN_Home
v5_CN_HowToAskQuestion
v5_CN_IDE
v5_CN_Ingest
v5_CN_K8S
v5_CN_LinuxService
v5_CN_LogRotate
v5_CN_LowLatency
v5_CN_NgExec
v5_CN_NginxForHLS
v5_CN_OriginCluster
v5_CN_Perf
v5_CN_Performance
v5_CN_Product
v5_CN_REUSEPORT
v5_CN_RTMP ATC
v5_CN_RTMP.PK.HTTP
v5_CN_RTMPHandshake
v5_CN_RaspberryPi
v5_CN_Reload
v5_CN_RtmpUrlVhost
v5_CN_SRTCodec
v5_CN_SRTParams
v5_CN_SRTURL
v5_CN_SRTWiki
v5_CN_Sample
v5_CN_SampleARM
v5_CN_SampleDASH
v5_CN_SampleDemo
v5_CN_SampleFFMPEG
v5_CN_SampleForward
v5_CN_SampleHLS
v5_CN_SampleHTTP
v5_CN_SampleHlsCluster
v5_CN_SampleHttpFlv
v5_CN_SampleHttpFlvCluster
v5_CN_SampleIngest
v5_CN_SampleOriginCluster
v5_CN_SampleRTMP
v5_CN_SampleRTMPCluster
v5_CN_SampleRealtime
v5_CN_SampleSRT
v5_CN_SampleTranscode2HLS
v5_CN_Security
v5_CN_Setup
v5_CN_Snapshot
v5_CN_SpecialControl
v5_CN_SrsLibrtmp
v5_CN_SrsLinuxArm
v5_CN_SrsLog
v5_CN_Streamer
v5_CN_TimeJitter
v5_CN_WebRTC
v5_CN_WindowsSRS
v5_CN_hevc
v5_EN_Build
v5_EN_ClientSDK
v5_EN_Compare
v5_EN_Contact
v5_EN_DRM
v5_EN_DVR
v5_EN_DeliveryHDS
v5_EN_DeliveryHLS
v5_EN_DeliveryHttpStream
v5_EN_DeliveryMethod
v5_EN_DeliveryRTMP
v5_EN_Docs
v5_EN_Edge
v5_EN_FFMPEG
v5_EN_Features
v5_EN_FlvVodStream
v5_EN_Forward
v5_EN_GPERF
v5_EN_GPROF
v5_EN_Git
v5_EN_HTTPApi
v5_EN_HTTPCallback
v5_EN_HTTPServer
v5_EN_Home
v5_EN_HowToAskQuestion
v5_EN_IDE
v5_EN_Ingest
v5_EN_K8S
v5_EN_LinuxService
v5_EN_LogRotate
v5_EN_LowLatency
v5_EN_NgExec
v5_EN_NginxForHLS
v5_EN_OriginCluster
v5_EN_Perf
v5_EN_Performance
v5_EN_Product
v5_EN_REUSEPORT
v5_EN_RTMP ATC
v5_EN_RTMP.PK.HTTP
v5_EN_RTMPHandshake
v5_EN_RaspberryPi
v5_EN_Reload
v5_EN_RtmpUrlVhost
v5_EN_SRTCodec
v5_EN_SRTParams
v5_EN_SRTURL
v5_EN_SRTWiki
v5_EN_Sample
v5_EN_SampleARM
v5_EN_SampleDASH
v5_EN_SampleDemo
v5_EN_SampleFFMPEG
v5_EN_SampleForward
v5_EN_SampleHLS
v5_EN_SampleHTTP
v5_EN_SampleHlsCluster
v5_EN_SampleHttpFlv
v5_EN_SampleHttpFlvCluster
v5_EN_SampleIngest
v5_EN_SampleOriginCluster
v5_EN_SampleRTMP
v5_EN_SampleRTMPCluster
v5_EN_SampleRealtime
v5_EN_SampleSRT
v5_EN_SampleTranscode2HLS
v5_EN_Security
v5_EN_Setup
v5_EN_Snapshot
v5_EN_SpecialControl
v5_EN_SrsLibrtmp
v5_EN_SrsLinuxArm
v5_EN_SrsLog
v5_EN_Streamer
v5_EN_TimeJitter
v5_EN_WebRTC
v5_EN_WindowsSRS
v5_EN_hevc
Clone
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
HOME > CN > Delivery Method
分发方式比较
Note: 如果觉得Github的Wiki访问太慢,可以访问 Gitee 镜像。
互联网上的两种主要的分发方式:直播和WebRTC,什么时候用谁,完全决定于应用场景。
还有其他的分发方式,这些分发方式不属于互联网常见和通用的方式,不予以比较:
- UDP:譬如YY的实时应用,视频会议等等,或者RTSP之类。这类应用的特点就是实时性要求特别高,以毫秒计算。TCP家族协议根本就满足不了要求,所以HTTP/TCP都不靠谱。这类应用没有通用的方案,必须自己实现分发(服务端)和播放(客户端)。
- P2P:譬如RTMFP或者各家自己的协议。这类应用的特点是节省带宽。目前PC/flash上的RTMFP比较成熟,Android上的P2P属于起步群雄纷争标准不一,IOS上P2P应该没有听说过。
- RTSP:这种不是互联网上的主要应用,在其他领域譬如安防等有广泛应用。
另外,HTTP的也分为几种:
- HTTP progressive:早期流媒体服务器分发http文件时,以普通的http文件分发,这种叫做渐进式下载,意思就是如果文件很大譬如1小时时长1GB大小,想从中间开始播放是不行的。但这种方式已经是作古了,很多http服务器支持http文件的seek,就是从中间开始播放。
- HTTP stream:支持seek的HTTP流,譬如各家视频网站的点播分发方式。或者稍微复杂点的,譬如把一个大文件切几段之后分发。目前在pc/flash上点播国内的主流分发是这种方式。
- HLS:这种是现在适配方式最广(除了flash, 需要额外的as库支持),在PC上有vlc,Android/IOS原生播放器就支持播放HLS,HTML5里面的url可以写HLS地址。总之,在移动端是以HLS为主。
- HDS:adobe自己的HLS,一坨屎。
- DASH:各家提出的HLS,目前还没有广泛应用。
对比以下互联网上用的流媒体分发方式:
- HLS:apple的HLS,支持点播和直播。
- HTTP:即HTTP stream,各家自己定义的http流,应用于国内点播视频网站。
- RTMP:直播应用,对实时性有一定要求,以PC为主。
RTMP
RTMP本质上是流协议,主要的优势是:
- 实时性高:RTMP的实时性在3秒之内,经过多层CDN节点分发后,实时性也在3秒左右。在一些实时性有要求的应用中以RTMP为主。
- 支持加密:RTMPE和RTMPS为加密协议。虽然HLS也有加密,但在PC平台上flash对RTMPE/RTMPS支持应该比较不错。
- 稳定性高:在PC平台上flash播放的最稳定方式是RTMP,如果做CDN或者大中型集群分发,选择稳定性高的协议一定是必要的。HTTP也很稳定,但HTTP是在协议上稳定;稳定性不只是服务端的事情,在集群分发,服务器管理,主备切换,客户端的支持上,RTMP在PC分发这种方式上还是很有优势。
- 编码器接入:编码器输出到互联网(还可以输出为udp组播之类广电应用),主要是RTMP。譬如专业编码器,或者flash网页编码器,或者FMLE,或者ffmpeg,或者安防摄像头,都支持RTMP输出。若需要接入多种设备,譬如提供云服务;或者希望网页直接采集摄像头;或者能在不同编码器之间切换,那么RTMP作为服务器的输入协议会是最好的选择。
- 系统容错:容错有很多种级别,RTMP的集群实现时可以指定N上层,在错误时切换不会影响到下层或者客户端,另外RTMP的流没有标识,切到其他的服务器的流也可以继续播放。HLS的流热备切换没有这么容易。若对于直播的容错要求高,譬如降低出问题的概率,选择RTMP会是很好的选择。
- 可监控:在监控系统或者运维系统的角度看,流协议应该比较合适监控。HTTP的流监控感觉没有那么完善。这个不算绝对优势,但比较有利。
RTMP的劣势是:
- 协议复杂:RTMP协议比起HTTP复杂很多,导致性能低下。测试发现两台服务器直连100Gbps网络中,HTTP能跑到60Gbps,但是RTMP只能跑到10Gbps,CPU占用率RTMP要高很多。复杂协议导致在研发,扩展,维护软件系统时都没有HTTP那么方便,所以HTTP服务器现在大行其道,apache/nginx/tomcat,N多HTTP服务器;而RTMP协议虽然早就公开,但是真正在大规模中分发表现良好的没有,adobe自己的FMS在CDN中都经常出问题。
- Cache麻烦:流协议做缓存不方便。譬如点播,若做RTMP流协议,边缘缓存RTMP会很麻烦。如果是HTTP,缓存其实也很麻烦,但是HTTP服务器的缓存已经做了很久,所以只需要使用就好。这是为何点播都走HTTP的原因。
HTTP
HTTP说的是HTTP流,譬如各大视频网站的点播流。
HTTP本质上还是文件分发,主要的优势是:
- 性能很高:HTTP的性能没得说,协议简单,各种HTTP高性能服务器也完善。如果分发的量特别大,譬如点播视频网站,没有直播的实时性要求,HTTP协议是最好选择。
- 没有碎片:HTTP比HLS没有碎片,HTTP分发大文件会比小文件分发方便很多。特别是存储,小文件的性能超低,是个硬伤。
- 穿墙:互联网不可能不开放HTTP协议,否则就不叫互联网。所以任何端口封掉,也不会导致HTTP流看不了。(不过RTMP也能穿墙,用RTMPT协议)。
HTTP的劣势是:
- 实时性差:基本上没有实时性这个说法。
- 原生支持不好:就PC上flash对于HTTP流支持还可以,Android/IOS上似乎只能mp4,总之移动端对于HTTP的支持不是很完善。
HLS
HLS是Apple的开放标准,在Android3?以上也原生支持.
HLS的主要优势是:
- 性能高:和HTTP一样。
- 穿墙:和HTTP一样。
- 原生支持很好:IOS上支持完美。Android上支持差些。PC/flash上现在也有各种as插件支持HLS。
HLS的主要劣势是:
- 实时性差:基本上HLS的延迟在10秒以上。
- 文件碎片:若分发HLS,码流低,切片较小时,小文件分发不是很友好。特别是一些对存储比较敏感的情况,譬如源站的存储,嵌入式的SD卡。
应用方式
推荐的方式是:
- 编码器输出RTMP协议。
- 流媒体系统接入使用RTMP协议。
- 流媒体系统内部直播分发使用RTMP。
- PC+直播+实时性要求高:使用flash播放RTMP。
- PC+直播+没有实时性要求:使用RTMP或者HLS均可。
- PC+点播:使用HTTP或者HLS。
- Apple IOS/OSX:都使用HLS(实时性要求高得自己解析RTMP,或者使用外部库,譬如https://www.vitamio.org)
- Andorid:和IOS一样,不过可以确定的是可以自己开发支持RTMP。
Winlin 2014.4
Welcome to SRS wiki!
SRS 5.0 wiki
Please select your language:
SRS 4.0 wiki
Please select your language:
SRS 3.0 wiki
Please select your language:
SRS 2.0 wiki
Please select your language:
SRS 1.0 wiki
Please select your language:
