[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6138":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},6138,"nginx-rtmp-module","arut\u002Fnginx-rtmp-module","arut","NGINX-based Media Streaming Server","http:\u002F\u002Fnginx-rtmp.blogspot.com",null,"C",14014,3592,636,1061,0,1,5,12,4,45,"BSD 2-Clause \"Simplified\" License",false,"master",true,[],"2026-06-12 02:01:16","# NGINX-based Media Streaming Server\n## nginx-rtmp-module\n\n\n### Project blog\n\n  http:\u002F\u002Fnginx-rtmp.blogspot.com\n\n### Wiki manual\n\n  https:\u002F\u002Fgithub.com\u002Farut\u002Fnginx-rtmp-module\u002Fwiki\u002FDirectives\n\n### Google group\n\n  https:\u002F\u002Fgroups.google.com\u002Fgroup\u002Fnginx-rtmp\n\n  https:\u002F\u002Fgroups.google.com\u002Fgroup\u002Fnginx-rtmp-ru (Russian)\n\n### Donation page (Paypal etc)\n\n  http:\u002F\u002Farut.github.com\u002Fnginx-rtmp-module\u002F\n\n### Features\n\n* RTMP\u002FHLS\u002FMPEG-DASH live streaming\n\n* RTMP Video on demand FLV\u002FMP4,\n  playing from local filesystem or HTTP\n\n* Stream relay support for distributed\n  streaming: push & pull models\n\n* Recording streams in multiple FLVs\n\n* H264\u002FAAC support\n\n* Online transcoding with FFmpeg\n\n* HTTP callbacks (publish\u002Fplay\u002Frecord\u002Fupdate etc)\n\n* Running external programs on certain events (exec)\n\n* HTTP control module for recording audio\u002Fvideo and dropping clients\n\n* Advanced buffering techniques\n  to keep memory allocations at a minimum\n  level for faster streaming and low\n  memory footprint\n\n* Proved to work with Wirecast, FMS, Wowza,\n  JWPlayer, FlowPlayer, StrobeMediaPlayback,\n  ffmpeg, avconv, rtmpdump, flvstreamer\n  and many more\n\n* Statistics in XML\u002FXSL in machine- & human-\n  readable form\n\n* Linux\u002FFreeBSD\u002FMacOS\u002FWindows\n\n### Build\n\ncd to NGINX source directory & run this:\n\n    .\u002Fconfigure --add-module=\u002Fpath\u002Fto\u002Fnginx-rtmp-module\n    make\n    make install\n\nSeveral versions of nginx (1.3.14 - 1.5.0) require http_ssl_module to be\nadded as well:\n\n    .\u002Fconfigure --add-module=\u002Fpath\u002Fto\u002Fnginx-rtmp-module --with-http_ssl_module\n\nFor building debug version of nginx add `--with-debug`\n\n    .\u002Fconfigure --add-module=\u002Fpath\u002Fto-nginx\u002Frtmp-module --with-debug\n\n[Read more about debug log](https:\u002F\u002Fgithub.com\u002Farut\u002Fnginx-rtmp-module\u002Fwiki\u002FDebug-log)\n\n### Windows limitations\n\nWindows support is limited. These features are not supported\n\n* execs\n* static pulls\n* auto_push\n\n### RTMP URL format\n\n    rtmp:\u002F\u002Frtmp.example.com\u002Fapp[\u002Fname]\n\napp -  should match one of application {}\n         blocks in config\n\nname - interpreted by each application\n         can be empty\n\n\n### Multi-worker live streaming\n\nModule supports multi-worker live\nstreaming through automatic stream pushing\nto nginx workers. This option is toggled with\nrtmp_auto_push directive.\n\n\n### Example nginx.conf\n\n    rtmp {\n\n        server {\n\n            listen 1935;\n\n            chunk_size 4000;\n\n            # TV mode: one publisher, many subscribers\n            application mytv {\n\n                # enable live streaming\n                live on;\n\n                # record first 1K of stream\n                record all;\n                record_path \u002Ftmp\u002Fav;\n                record_max_size 1K;\n\n                # append current timestamp to each flv\n                record_unique on;\n\n                # publish only from localhost\n                allow publish 127.0.0.1;\n                deny publish all;\n\n                #allow play all;\n            }\n\n            # Transcoding (ffmpeg needed)\n            application big {\n                live on;\n\n                # On every pusblished stream run this command (ffmpeg)\n                # with substitutions: $app\u002F${app}, $name\u002F${name} for application & stream name.\n                #\n                # This ffmpeg call receives stream from this application &\n                # reduces the resolution down to 32x32. The stream is the published to\n                # 'small' application (see below) under the same name.\n                #\n                # ffmpeg can do anything with the stream like video\u002Faudio\n                # transcoding, resizing, altering container\u002Fcodec params etc\n                #\n                # Multiple exec lines can be specified.\n\n                exec ffmpeg -re -i rtmp:\u002F\u002Flocalhost:1935\u002F$app\u002F$name -vcodec flv -acodec copy -s 32x32\n                            -f flv rtmp:\u002F\u002Flocalhost:1935\u002Fsmall\u002F${name};\n            }\n\n            application small {\n                live on;\n                # Video with reduced resolution comes here from ffmpeg\n            }\n\n            application webcam {\n                live on;\n\n                # Stream from local webcam\n                exec_static ffmpeg -f video4linux2 -i \u002Fdev\u002Fvideo0 -c:v libx264 -an\n                                   -f flv rtmp:\u002F\u002Flocalhost:1935\u002Fwebcam\u002Fmystream;\n            }\n\n            application mypush {\n                live on;\n\n                # Every stream published here\n                # is automatically pushed to\n                # these two machines\n                push rtmp1.example.com;\n                push rtmp2.example.com:1934;\n            }\n\n            application mypull {\n                live on;\n\n                # Pull all streams from remote machine\n                # and play locally\n                pull rtmp:\u002F\u002Frtmp3.example.com pageUrl=www.example.com\u002Findex.html;\n            }\n\n            application mystaticpull {\n                live on;\n\n                # Static pull is started at nginx start\n                pull rtmp:\u002F\u002Frtmp4.example.com pageUrl=www.example.com\u002Findex.html name=mystream static;\n            }\n\n            # video on demand\n            application vod {\n                play \u002Fvar\u002Fflvs;\n            }\n\n            application vod2 {\n                play \u002Fvar\u002Fmp4s;\n            }\n\n            # Many publishers, many subscribers\n            # no checks, no recording\n            application videochat {\n\n                live on;\n\n                # The following notifications receive all\n                # the session variables as well as\n                # particular call arguments in HTTP POST\n                # request\n\n                # Make HTTP request & use HTTP retcode\n                # to decide whether to allow publishing\n                # from this connection or not\n                on_publish http:\u002F\u002Flocalhost:8080\u002Fpublish;\n\n                # Same with playing\n                on_play http:\u002F\u002Flocalhost:8080\u002Fplay;\n\n                # Publish\u002Fplay end (repeats on disconnect)\n                on_done http:\u002F\u002Flocalhost:8080\u002Fdone;\n\n                # All above mentioned notifications receive\n                # standard connect() arguments as well as\n                # play\u002Fpublish ones. If any arguments are sent\n                # with GET-style syntax to play & publish\n                # these are also included.\n                # Example URL:\n                #   rtmp:\u002F\u002Flocalhost\u002Fmyapp\u002Fmystream?a=b&c=d\n\n                # record 10 video keyframes (no audio) every 2 minutes\n                record keyframes;\n                record_path \u002Ftmp\u002Fvc;\n                record_max_frames 10;\n                record_interval 2m;\n\n                # Async notify about an flv recorded\n                on_record_done http:\u002F\u002Flocalhost:8080\u002Frecord_done;\n\n            }\n\n\n            # HLS\n\n            # For HLS to work please create a directory in tmpfs (\u002Ftmp\u002Fhls here)\n            # for the fragments. The directory contents is served via HTTP (see\n            # http{} section in config)\n            #\n            # Incoming stream must be in H264\u002FAAC. For iPhones use baseline H264\n            # profile (see ffmpeg example).\n            # This example creates RTMP stream from movie ready for HLS:\n            #\n            # ffmpeg -loglevel verbose -re -i movie.avi  -vcodec libx264\n            #    -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1\n            #    -f flv rtmp:\u002F\u002Flocalhost:1935\u002Fhls\u002Fmovie\n            #\n            # If you need to transcode live stream use 'exec' feature.\n            #\n            application hls {\n                live on;\n                hls on;\n                hls_path \u002Ftmp\u002Fhls;\n            }\n\n            # MPEG-DASH is similar to HLS\n\n            application dash {\n                live on;\n                dash on;\n                dash_path \u002Ftmp\u002Fdash;\n            }\n        }\n    }\n\n    # HTTP can be used for accessing RTMP stats\n    http {\n\n        server {\n\n            listen      8080;\n\n            # This URL provides RTMP statistics in XML\n            location \u002Fstat {\n                rtmp_stat all;\n\n                # Use this stylesheet to view XML as web page\n                # in browser\n                rtmp_stat_stylesheet stat.xsl;\n            }\n\n            location \u002Fstat.xsl {\n                # XML stylesheet to view RTMP stats.\n                # Copy stat.xsl wherever you want\n                # and put the full directory path here\n                root \u002Fpath\u002Fto\u002Fstat.xsl\u002F;\n            }\n\n            location \u002Fhls {\n                # Serve HLS fragments\n                types {\n                    application\u002Fvnd.apple.mpegurl m3u8;\n                    video\u002Fmp2t ts;\n                }\n                root \u002Ftmp;\n                add_header Cache-Control no-cache;\n            }\n\n            location \u002Fdash {\n                # Serve DASH fragments\n                root \u002Ftmp;\n                add_header Cache-Control no-cache;\n            }\n        }\n    }\n\n\n### Multi-worker streaming example\n\n    rtmp_auto_push on;\n\n    rtmp {\n        server {\n            listen 1935;\n\n            application mytv {\n                live on;\n            }\n        }\n    }\n","arut\u002Fnginx-rtmp-module 是一个基于 NGINX 的媒体流服务器。它支持 RTMP、HLS 和 MPEG-DASH 实时流媒体传输，以及 FLV\u002FMP4 格式的点播视频播放。项目具备流中继功能，支持推拉模式的分布式流媒体传输，并能够通过 FFmpeg 进行在线转码。此外，它还提供了多种高级缓冲技术来优化内存使用，确保快速且低延迟的流媒体服务。适用于需要稳定可靠的实时音视频流处理场景，如网络直播、在线教育等。该项目已证明与 Wirecast、FMS、Wowza 等多种流媒体工具兼容。",2,"2026-06-11 03:05:47","top_language"]