آموزش مرحله به مرحله راه اندازی سرویس استریمینگ سرور یا سرور پخش زنده رایگان با قابلیت پشتیبانی از پروتکل های RTMP و HLS که جزو رایج ترین پروتکل های استریمینگ (Streaming) بصورت زنده (Live) و تعاملی (VOD) در سیستم عامل های ویندوز.
از موارد کاربردی این استریم سرور میتوان به راه اندازی یک سرور پخش زنده اینترنتی، برای دریافت و انتشار پخش زنده، یا همان تلویزیون اینترنتی؛ و یا راه اندازی یک وبسایت انتشار ویدیو، با قابلیت جلوگیری از دانلود؛ نام برد.
مقدمه
امروزه جریان های زنده یا همان پخش زنده های اینترنتی طرفداران زیادی پیدا کرده است. هم برای کسانی که تولید محتوا میکنند و هم بیننده ها. معمولا در رویداد های ورزشی نظیر مسابقات فوتبال داخلی و خارجی مانند لیگ های دسته یک ، یا دو یا ... و حتی بازی های فوتبال استانی و دانشجویی و یا در سطح خارجی مانند لیگ های برتر اروپا و آسیا و لالیگا و مسابقات بین المللی ورزشی نظیر جام جهانی همه دوست دارند جریان مسابقات خود را بصورت زنده پخش کنند.
و حتی اگر از فوتبال بگذریم برگزار کنندگان مجالس مذهبی و فرهنگی، سمینار ها، کنسرت ها، جشواره ها و ... همگی علاقه دارن که رویداد خود را بصورت مستقیم روی اینترنت منتشر کنند.
از آنجایی که پخش در یک شبکه تلویزیونی هزینه ی زیادی برای اجرا کنندگان مراسم در بردارد، همگی به سمت پخش زنده در اینترنت روی آورده اند زیرا مبلغ آن نسبتا خیلی پایین است و حتی ممکن است در برخی موارد نزدیک به صفر برسد.
امروزه شبکه های اجتماعی بزرگی مانند Youtube و facebook و اینستگرام این قابلیت را بصورت رایگان برای کاربران خود فراهم کرده اند و حتی در این کارزا سرویس های داخلی نظیر آپارات و لحظه نگار نیز این امکان را با کمی محدودیت در اختیار کاربران بصورت رایگان گذاشته اند.ممکن است هر سرویسی محدودیت های خاص خود را داشته باشد و یا حتی قوانین آن سرویس دهنده با مذاق ما سازگار نباشد و یا حتی بخواهیم برای خود سرویسی داشته باشیم مستقل از دیگر وبسایت ها و در آن رویداد خودمان را بصورت رایگان و یا غیر رایگان ارائه بدهیم. با این آموزش شما میتوانید یک سرور پخش زنده رایگان در سرور ویندوز راه اندازی کنید و پخش زنده ی خود را منتشر نمایید.
برای این آموزش نیاز دارید که اصطلاحاتی را بلد باشید:
استریمینگ مدیا (Streaming media) و یا محتوای جاری به رسانه ای گفته میشود که همزمان با ارسال توسط گیرنده قابل نمایش است. به بیان دیگر برای تماشای فایل گیرنده نیاز ندارد تمامی فایل را دانلود کند تا بتواند آن را مشاهده نماید بلکه فرستنده میتواند فایل را بصورت جاری ارسال کند و گیرنده آن را تماشا کند. مثال آن پخش زنده های تلویزیون های اینترنتی صدا و سیما.
استریمینگ سرور (Streaming Server) به سروری گفته میشود که سرویس های مبتنی بر جریان زنده (استریمینگ Streaming) اعم از صوتی و تصویری یا زنده و تعاملی را ارائه میدهد. از رایج ترین پروتکل های جریان زنده میتوان RTMP و HLS و MMS (این پروتکل ربطی به MMS دریافتی در گوشی ندارد) را نام برد که هم اکنون در سایت های معروفی همچون یوتیوب و آپارات و پخش زنده اینترنتی سایت صدا و سیما استفاده میشود.
پروتکل RTMP که مخفف شده ی (Real-Time Messaging Protocol) میباشد ساخته و پرداخته شرکت Macromedia سازنده Flash است که هم اکنون تحت انحصار شرکت Adobe میباشد. این پروتکل در ابتدا برای جریان زنده صدا و تصویر روی بستر اینترنت بین یک فلش پلیر و سرور ایجاد شد که بعدها با استقبال عمومی مواجه و در اکثر دستگاه های خانگی و حرفه ای و اکثر پلیر ها اعم از موبایل و سیستم های مختلف استفاده شد. پرت پیشفرض این پروتکل 1935 است و برای استفاده آن در مرورگر وب باید از فلش پلیر استفاده نمود.
پرتکل HLS مخفف شده (HTTP Live Streaming) است. این پروتکل توسط شرکت Apple برای استفاده جریان زنده در پلیر QuickTime و سیستم عامل های OS X و iOS موبایل و مرورگر Safari نوشته شده که هم اکنون در فایرفاکس، گوگل کروم و مرورگر جدید ماکروسافت Microsoft Edge پیاده سازی شده. این پروتکل با تبدیل جریان زنده بصورت فایل های تکه ای قابلیت پخش آن را در تمامی مرورگر ها با تگ < video > مقدور کرده است، این فایل های تکه ای در یک فایل M3U playlist ذخیره شده. بر این اساس آدرس دهی این پروتکل با این پسوند تمام میشود. به دلیل استفاده از پروتکل HTTP در این پروتکل اغلب نیازی به تنظیم Firewall در مبدا و مقصد نیست و از پروکسی ها براحتی عبور میکند که تمامی اینها راحتی استفاده برای کاربران را به همراه دارد.همچنین از ویژگی های خوب این پروتکل استفاده از قابلیت adaptive bitrate streaming میباشد. با استفاده از این قابلیت میتوان پهنای باند کاربر را شناسایی کرده و جریان زنده ای متناسب با پهنای باندش برای آن ارسال کرد.
پیش نیازها
برای راه اندازی یک سرور پخش زنده اینترنتی شما نیاز به یک سرور ویندوز دارید ورژن ویندوز فرقی نمیکند ولی بهتر است از آخرین ورژن ویندوز سرور استفاده شود در صورتی که میخواهید این آموزش را روی سیستم عامل های دیگر امتحان کنید در پایان این مقاله لینک آموزش آنها موجود میباشد.
سیستم عامل توصیه شده : Windows Server 2016 Standard
درصورتی که قصد استفاده از قابلیت ABS و یا Transcoding را دارید نیاز به رم و CPU بالایی دارید.
درصورتی که میخواهید همزمان تصاویر را ذخیره Record کنید نیاز به هارد SSD و حجم بالا دارید.
برای استفاده از این نرم افزار به صورت سرویس نیاز به دسترسی Administrator دارید.
شروع نصب
شما نیاز به یک نسخه کمپایل شده از Nginx به همراه ماژول nginx-rtmp-module دارید که من برای شما این کار را انجام داده ام. شما میتوانید فایل Zip ریلیز شده از پروژه alighaemia/nginx-rtmp-hls-win32 که لینک دانلود در انتهای مطلب موجود است را دانلود و آن را به درایو C انتقال دهید.
بهتر است فایل در ریشه اصلی درایو C قرار گیرد و همچنین نام فولدر آن نیز nginx باشد.
برای اجرای برنامه کافی است که فایل nginx.exe را باز نمایید. در صورتی که در اجرای برنامه به مشکل خوردید میتوانید آن را با دسترسی Administrator باز کنید.
در صورتی که بخواهید nginx بصورت سرویس Service در سیستم عامل شما نصب و اجرا شود میتوانید از ابزار NSSM استفاده کنید. ابتدا باید آخرین نسخه از nssm را از لینک بالا دانلود کرده و فایل nssm.exe از فولدر win64 این بسته را به محل نصب Nginx انتقال دهید.
سپس یک cmd از منوی استارت با دسترسی Administrator باز نمایید و دستورات زیر را وارد نمایید:
ali@windows$ cd c:\nginx
ali@windows$ nssm install nginx
با دستور بالا پنجره ای باز میشود که مقادیر آن را بصورت زیر وارد کنید همچنین در صورتی که نیاز به فایل های logs داشته باشید تب I/O را کامل کنید.
در پایان روی Install Service کلیک کنید. هم اکنون nginx شما بصورت سرویس نصب شده است و هر وقت ویندوز اجرا شود این برنامه نیز اجرا خواهد شد.
ارسال پخش زنده
در این قسمت از آموزش پخش زنده به این مرحله میرسیم که چگونه پخش زنده را برای سرور ارسال کنیم و آن را تماشا کنیم.
پخش زنده را باید با پروتکل RTMP برای nginx ارسال کرد. نرم افزار های گرافیکی ارسال پخش زنده با پروتکل RTMP عبارت اند از Adobe Flash Media Live Encoder, OBS, vMix, Wirecast, VLC که هر کدام قابلیت خاص خودشان را دارند. اکثر این نرم افزار ها کتابخانه هایی نظیر ffmpeg برای ارسال استریم استفاده میکنند.
به دلیل در دسترس بودن و همچنین Open Source بودن برای آموزش ما از نرم افزار OBS استفاده میکنیم که شما میتوانید آن را از وبسایت obsproject.com بصورت رایگان دانلود کنید.
روی دکمه Settings کلیک کرده و به تب Stream بروید و مطابق تصویر زیر اطلاعات سرور را وارد کنید.
همان طور که در تصویر مشخص است در قسمت URL آدرس آی پی یا هاست نیم سرور خود را وارد کنید. در صورتی که nginx را در سیستم شخصی خود نصب نموده اید به جای test.ghm.me عبارت localhost را وارد کنید. در صورتی که از سرور دیگری استفاده میکنید IP آن سرور را وارد کنید.
دقت کنید که مقدار 1935 و hls باید ثابت باشد. شما میتوانید آنها را در فایل nginx.conf در شاخه conf محل نصب nginx تغییر دهید. بعد از اعمال تغییرات نیاز دارد که nginx را مجددا بارگزاری کنید.
در قسمت Stream key یک نام دلخواه وارد کنید. در انتها تغییرات را تایید کرده و روی دکمه Start Streaming کلیک کنید و منتظر باشید قسمت پایین سبز شود.
تماشای پخش زنده
برای تماشای پخش زنده شما نیاز به پلیر های مخصوصی دارید. درصورتی که میخواهید در مرورگر از آن استفاده کنید باید آموزش قرار دادن پخش زنده با پروتکل HLS در وبسایت را که در وبلاگ منتشر شده است را مطالعه فرمایید.
همچنین شما میتوانید با استفاده از نرم افزار VLC پخش زنده را با استفاده از آدرس های زیر بصورت مستقیم در ویندوز تماشا کنید.
RTMP : rtmp://test.ghm.me:1935/hls/test_ghm
HLS : http://test.ghm.me:8080/hls/test_ghm.m3u8
همچنین شما میتوانید وضعیت دریافت و ارسال استریم ها به nginx را با آدرس زیر بررسی کنید:
http://test.ghm.me:8080/stat
به جای test.ghm.me آدرس سرور خود را قرار دهید. (برای سیستم شخصی از localhost استفاده میشود.)
درصورتی میخواهید این آموزش را در سیستم عامل Ubuntu انجام دهید میتوانید به این لینک مراجعه کنید.
سلام وقت بخیر ممنون
ولی تمام مراحل رو انجام دادم ولی وقتی روی start streaming کلیک میکنم ارور میده . میگه یه جای کار اشتباهه
شما باید به جای هاست test.ghm.me ای پی سرورتون رو بگذارید و یا اگر از سیستم شخصی استفاده میکنید localhost را وارد کنید.
داخل لب تاب این کارهارو انجام دادم ولی انجام نشد.
امکانش هست با شما در ارتباط باشم ؟
092xxxx9152
میتونید با ایمیل من در تماس باشید.
سلام وقت بخیر ممنون از پاسخگویی
بنده داخل لب تاب خودم موفق شدم که انجام بدم.
امروز سرور ویندوز 2012 خریدم.
به وسیله ی ریموت به ویندوز سررو وصل شدم و داخل خوده سرور امتحان کردم و انجام شد. خوب بود.
ولی وقتی داخل لب تاب خودم بهش وصل میشدم ارور میداد.
ارورش اینه.
faild to conect to server
حدود 10 ثانیه زمان میبره تا این پیام رو برسونه.
مشخصاتی که وارد هم میکنم به این صورته
قسمت یو آر ال : rtmp://ip:1935/hls
و نام هم به دلخواه
در قسمت یو آر ال اشتباه میکنم ؟
باید در قسمت یو آر ال rtmp رو ننویسم و فقط آی پی رو بنویسم ؟
سلام دوست عزیز، دو نکته:
1- به جای ip در rtmp://ip:1935/hls آی پی سرورتون رو بزارید. مثلا : rtmp://88.45.13.22:1935/hls
2- فایروال سرور رو خاموش کنید.
ممنون از لطفی که به بنده دارین.
رفتم چک کردم .
فایروال برای هر سه قسمت خاموش بود.
چند بار دیگه هم سعی کردم ولی نشد.
آدرس رو هم به همون صورتی که شما گفتین وارد کردم.
از جای دیگه میتونه باشه که اتصال برقرار نمیشه ؟
آخه با ریموت لب تاب خودم به سرور وصل میشم. ولی اینجوری ن.
سلام علیکم
بسیار ممنونم از آموزش های جامع و خوبتون
اگر لطف کنید نحوه authentication و یا ایجاد stream key که امنیت را بالا ببرد و دیگران بادانستن ip نتوانند stream بگذارند را هم آموزش دهید ممنون می شوم
باسلام خدمت شما دوست عزیز، مطالب مورد نظر رو تو این لینک میتونید پیدا کنید :
https://ln.ghm.me/b177
سلام خسته نباشید ممنون از آموزشتون
چطوری مثل آپارات یک استریم کی درست کنیم ؟
و دوم این اینک چطوری مثل آپارات لیست لایو ها رو نمایش بدیم؟
باسلام، شما میتونید از قابلیت Notify استفاده کنید که آموزشش رو در وبلاگ قرار دادم :
https://ln.ghm.me/b177
یک زحمتی داشتم
شما لطف کردید و یک فایل آماده و قابل استفاده رو در اختیار ما گذاشتید که بسیار هم خوبه
یه لطفی بکنید و آموزش بدید که چطور انجینکس و ماژولrtmp اون رو به صورت جدا دریافت و در هم مثل شما ادغام کنیم
هر چند میدونم که سخته توضیحش اما این کارو بکنید که دیگه محشر میشه
باسلام دوست عزیز،
شما باید نسخه nginx را مجدد توسط mingw ،gcc و msys به همراه rtmp و سورس اصلی آن build کنید.
سلام چجوری سرور رو به ویدو پیلیر هاست متصل کنم؟؟؟
سوالتون نامفهوم هست ولی میتونید لینک خروجی رو با آموزش موجود در این پست در صفحه ی وب قراردهید.
سلام چطوری باشما در ارتباط باشم کار فوری دارم ممنون
ایمیل ارسال نمایید در خدمتم:
ali {@} ghm {.} me
سلام - من میخوام دوربین های مداربسته کلاسهای درس یک مدرسه رو روی وب نمایش بدم . چند تا سوال از حضورتون داشتم.1-با یه سرور میشه چند استریم همزمان داشت؟ 2- چه سخت افزاری برای این کار نیازه؟ 3 - از rtsp میشه استفاده کرد؟ 3-چه عواملی بر لگ تاثیر دارن؟ تعداد بیننده همزمان چه تاثیری داره و رفع مشکل احتمالیش چه راهکاری؟ ممنون میشم راهنمایی بفرمایید
با سلام دوست عزیز،
خوشحالم از این که آموزش ها براتون مفید بوده.
1- بله شما با توجه به منابع سرور (پهنای باند و رم و سی پی یو) میتوانید استریم روی سرور اجرا نمایید
2- با تست و خطا میتوانید به این سخت افزار برسید ولی فقط استریم چند دوربین سخت افزار بالایی نیاز ندارد
3- بله شما میتوانید با ffmpeg اکثر پروتکل ها را به یکدیگر تبدیل نمایید
4- منظور از سوال آخرتون رو متوجه نشدم لطفا واضح تر بفرماید
سلام ایا پخش زنده فوتبال اینترنتی را می توانیم انجام دهیم
باسلام ، بله حتما، شما میتوانید هر محتوایی را پخش زنده نمایید.
با آموزش های موجود در وبلاگ شما میتوانید تلویزیون اینترنتی خود را راه اندازی نمایید.
سلام ابتدا تشکر میکنم از این مطلب مفیدتون، یه سوال داشتم و آن اینکه برای راه اندازی پخش زنده صدا و سیما باید به چه طریقی عمل کرد چون محتوای ورودی اینجا چطور به دست میاد که بوسیله روش های فوق به گیرنده ارسال بشه. در اینجا ما محتوا رو خودمان داریم ولی در پخش زنده تلویزیونی گرفتن محتوا هم یه جنبه قضیه است
سلام دوست عزیز
ممنون بابت آموزش خوبتون
اگه براتون امکانش هست آموزش Video on Demand هم بزارید و اینکه راهی برای اکانتینگ کاربر ها می شناسید که این امکان رو به ادمین بده که مدت زمان بازدید کاربر یا حجم دریافتی یک کاربر رو بشه اندازه گیری کرد؟
با تشکر
سلام دوست عزیز
برای راه اندازی سیستم اکانتینگ خودتون باید یک CMS نوشته و آن را با nginx تلفیق کنید.
ممنون
بسیار مفید و کاربردی بود
اما چرا تاخیر زیاد در پخش داره؟
مثلا الآن که لایو رو استارت می کنم دو دقیقه بعد در پخش کننده پخش میشه
مشخصات سرور هم بالاست
منم مشکل پخش نشدن و سیاه شدن صفحه رو دارم. وقتی لینک ویدیوهای دیگه رو میزارم خیلی راحت پخش می کنه ولی وقتی لینک همون استریمی که آموزش دادید رو میزارم هیچی پخش نمیکنه. ممنون میشم راهنمایی کنید
سلام من میخوام توی توویچ و اپارات همزمان استریم کنم فقطم استریم
چه نوع سروری به کارم میاد
سرور ویندوز 2008 رم یک هلند یا المان کارمو راه میندازه؟
سلام وقتتون بخیر .کاری که من میخوام انجام بدم اینه که با گوشی از مسابقات فیلم بگیرم و کاربران سایتم بصورت آنلاین مسابقات تماشا کنند .سوالم اینه آیا نرم افزار nginx برای من کارایی داره ؟
سلام جواب نداد به من اینروش خطای استارت nginx میده به من
سلام وقت بخیر شما سفارشی هم راه اندازی میکنید؟