listen 1935 1936; pid ./objs/srs.pid; chunk_size 60000; ff_log_dir ./objs; srs_log_tank console; srs_log_level trace; srs_log_file ./objs/srs.log; max_connections 1000; daemon off; utc_time off; pithy_print_ms 10000; heartbeat { enabled off; interval 9.3; url http://127.0.0.1:8085/api/v1/servers; device_id my-srs-device; summaries off; } stats { network 0; disk sda sdb xvda xvdb; } http_api { enabled on; listen 1985; crossdomain on; raw_api { enabled on; allow_reload on; allow_query on; allow_update on; } } http_server { enabled off; listen 8080; dir ./objs/nginx/html; } stream_caster { enabled off; caster mpegts_over_udp; output rtmp://127.0.0.1/live/livestream; listen 8935; rtp_port_min 57200; rtp_port_max 57300; } vhost __defaultVhost__; vhost vhost.srs.com { enabled off; chunk_size 128; tcp_nodelay on; min_latency on; cluster { mode remote; origin 127.0.0.1:1935 localhost:1935; token_traverse off; vhost same.edge.srs.com; debug_srs_upnode off; } forward { enabled off; destination 127.0.0.1:1936 127.0.0.1:1937; } play { time_jitter full; mix_correct off; atc off; atc_auto off; mw_latency 100; gop_cache off; queue_length 10; send_min_interval 10.0; reduce_sequence_header on; } publish { mr off; mr_latency 350; firstpkt_timeout 20000; normal_timeout 7000; } refer { enabled off; all github.com github.io; publish github.com github.io; play github.com github.io; } bandcheck { enabled off; key 35c9b402c12a7246868752e2878f7e0e; interval 30; limit_kbps 4000; } security { enabled off; allow play all; allow publish all; deny publish all; } http_static { enabled off; mount [vhost]/hls; dir ./objs/nginx/html/hls; } http_remux { enabled off; fast_cache 30; mount [vhost]/[app]/[stream].flv; } http_hooks { enabled off; on_connect http://127.0.0.1:8085/api/v1/clients http://localhost:8085/api/v1/clients; on_close http://127.0.0.1:8085/api/v1/clients http://localhost:8085/api/v1/clients; on_publish http://127.0.0.1:8085/api/v1/streams http://localhost:8085/api/v1/streams; on_unpublish http://127.0.0.1:8085/api/v1/streams http://localhost:8085/api/v1/streams; on_play http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions; on_stop http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions; on_dvr http://127.0.0.1:8085/api/v1/dvrs http://localhost:8085/api/v1/dvrs; on_hls http://127.0.0.1:8085/api/v1/hls http://localhost:8085/api/v1/hls; on_hls_notify http://127.0.0.1:8085/api/v1/hls/[app]/[stream][ts_url]; } exec { enabled off; publish ./objs/ffmpeg/bin/ffmpeg -f flv -i [url] -c copy -y ./[stream].flv; } hls { enabled off; hls_fragment 10; hls_td_ratio 1.5; hls_aof_ratio 2.0; hls_window 60; hls_on_error ignore; hls_storage disk; hls_path ./objs/nginx/html; hls_m3u8_file [app]/[stream].m3u8; hls_ts_file [app]/[stream]-[seq].ts; hls_ts_floor off; hls_entry_prefix http://your-server; hls_mount [vhost]/[app]/[stream].m3u8; hls_acodec aac; hls_vcodec h264; hls_cleanup on; hls_dispose 0; hls_nb_notify 64; hls_wait_keyframe on; } hds { enabled off; hds_fragment 10; hds_window 60; hds_path ./objs/nginx/html; } dvr { enabled off; dvr_plan session; dvr_path ./objs/nginx/html/[app]/[stream].[timestamp].flv; dvr_duration 30; dvr_wait_keyframe on; time_jitter full; } ingest livestream { enabled off; input { type file; url ./doc/source.200kbps.768x320.flv; } ffmpeg ./objs/ffmpeg/bin/ffmpeg; engine { enabled off; iformat flv; vfilter { s 30; ss 300; } vcodec libx264; vbitrate 1500; vfps 25; vwidth 768; vheight 320; vthreads 12; vprofile main; vpreset medium; vparams { t 100; coder 1; b_strategy 2; bf 3; refs 10; } acodec libfdk_aac; abitrate 70; asample_rate 44100; achannels 2; aparams { profile:a aac_low; } oformat flv; output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]; } } transcode live { enabled off; ffmpeg ./objs/ffmpeg/bin/ffmpeg; engine ffsuper { enabled off; iformat flv; vfilter { s 30; ss 300; } vcodec libx264; vbitrate 1500; vfps 25; vwidth 768; vheight 320; vthreads 12; vprofile main; vpreset medium; vparams { t 100; coder 1; b_strategy 2; bf 3; refs 10; } acodec libfdk_aac; abitrate 70; asample_rate 44100; achannels 2; aparams { profile:a aac_low; } oformat flv; output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; } } transcode { enabled off; ffmpeg ./objs/ffmpeg/bin/ffmpeg; engine ffsuper { enabled off; iformat flv; vfilter { s 30; ss 300; } vcodec libx264; vbitrate 1500; vfps 25; vwidth 768; vheight 320; vthreads 12; vprofile main; vpreset medium; vparams { t 100; coder 1; b_strategy 2; bf 3; refs 10; } acodec libfdk_aac; abitrate 70; asample_rate 44100; achannels 2; aparams { profile:a aac_low; } oformat flv; output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; } engine ffhd { enabled off; vcodec libx264; vbitrate 1200; vfps 25; vwidth 1382; vheight 576; vthreads 6; vprofile main; vpreset medium; vparams; acodec libfdk_aac; abitrate 70; asample_rate 44100; achannels 2; aparams; output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; } engine ffsd { enabled off; vcodec libx264; vbitrate 800; vfps 25; vwidth 1152; vheight 480; vthreads 4; vprofile main; vpreset fast; vparams; acodec libfdk_aac; abitrate 60; asample_rate 44100; achannels 2; aparams; output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; } engine fffast { enabled off; vcodec libx264; vbitrate 300; vfps 20; vwidth 768; vheight 320; vthreads 2; vprofile baseline; vpreset superfast; vparams; acodec libfdk_aac; abitrate 45; asample_rate 44100; achannels 2; aparams; output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; } engine vcopy { enabled off; vcodec copy; acodec libfdk_aac; abitrate 45; asample_rate 44100; achannels 2; aparams; output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; } engine acopy { enabled off; vcodec libx264; vbitrate 300; vfps 20; vwidth 768; vheight 320; vthreads 2; vprofile baseline; vpreset superfast; vparams; acodec copy; output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; } engine copy { enabled off; vcodec copy; acodec copy; output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; } } }