# زبان های اسکریپتی > PHP > آموزش: سرور های RTMP و Live Stream

## mohammadhosin

آپدیت جدید 2015 در ادامه:

سلام دوستان
همین طور که از اسم تاپیک مشخصه ، این تاپیک رو به راه اندازی سرور های RTMP و مشتقات اون اختصاص داره مثل Live Stram و ...
و از اونجا که هیچ منبع فارسی پیدا نکردم با اجازه اساتید میخواستم استارت اون رو بزنم
البته ادمین عزیز اگر جای تاپیک مشکل داره اونو به مکان مناسب هدایت کند

از دوستان و اساتیدی که قبلا در این زمینه فعالیتی داشتن تقاضا داریم ما را کمک و همراهی فرمایند.

*   آپدیت پست ها :
*
STREAM with FFmpeg
چت صوتی تصویری 
RED5 در لینوکس

پخش زنده در HTML5      اNEW



اگه سوالی داشتید میتونید تو تلگرام با اکانت زیر با من در ارتباط باشید
Stranger_mh@
یا از طریق لینک زیر در گروهی که در همین رابطه ساختم عضو شوید
https://telegram.me/joinchat/BWTMbQGbEofkfulC5bzzpA

----------


## mohammadhosin

اول از اساس سرور های RTMP شروع میکنیم
بعد یک کد ساده برای پخش فایل های سرور در سمت Client میپردازیم
بعد روش و نرم افزار های مربوته برای پخش آنلاین

خوب ابتدا سرورها
در کل سرور های رسمی و غیر رسمی زیادی تا الان برای این کار ها موجود هستی که میشه به موارد زیر اشاره کرد:
1- (Flash Media Server (FMS  یکی از معروف ترین و در عین حال گرون ترین سرور های میباشد (1024 دلار ) 

2- Wowza Media Server که تا الان نسخه 3.5 موجود می باشد و حدودا 980 $ میباشد 

3- RED 5  که رایگان و آپن سورس میباشد و نسخه تحت ویندوز هم داره
پس ما اساس آموزس رو بر اساس RED5 میگذاریم


نسخه های دیگه ای هم هستم که قابل اعتماد نیستن (حداقل من باهاشون کار نکردم)
مثل :

Adobe:
- Flash Media Server http://www.adobe.com/products/flashmediaserver/
- LiveCycle DS http://www.adobe.com/products/livecycle/dataservices/

Non-Adobe:
- Red5 http://osflash.org/red5 (Java)
- Wowza http://www.wowzamedia.com/ (Java)
- WebOrb http://www.themidnightcoders.com/products.html (.NET, Java)
- ErlyVideo http://erlyvideo.org/ (Erlang)
- RubyIzumi http://code.google.com/p/rubyizumi/ (Ruby)
- RTMPD http://www.rtmpd.com/ (C++‎‎‎‎‎)
- Cygnal http://wiki.gnashdev.org/Cygnal (C++‎‎‎‎‎)
- RTMPy http://rtmpy.org/wiki/RTMP (Python)
- RTMPlite http://code.google.com/p/rtmplite/ (Python)
- MammothServer (OpenFMS) http://mammothserver.org/ (C++‎‎‎‎‎)


دوستان سرور Red 5 رو از این لینک دانلود کنند (نسخه java ) البته شما به java 1.6 احتیاج دارید که میتونید از اینجا دانلود کنید

پیشنهاد میکنم یه سیستم مجازی با VirtualBox بسازید و یه ویندوز XP نصب کنید (البته برای دوستانی که سرور های VPS دسترسی ندارند)

در پایان نصب RED 5 از شما IP برای سرور میخواد که اگه از VPS استفاده میکنید آی پی وی پی اس و اگر از VirtualBox  استفاده میکنید آی پی کارت شبکه رو بهش بدید
مرحله آخر نصب RED 5 ازتون پورت میخواد که میتونید هر پورتی برای قسمت webapps وارد کنید (پیشنهاد من 8080 است تا با پورت 80 تداخل ایجاد نکنه البته خود RED 5 سرور آپاچی دارد و نیاز به نصب سرور دیگه ای نیست که در ادامه اگه لازم شد میگم)
خوب نصب سرور تمام شد ولی هنوز سرور قابل ران شدن نیست چون باید جاوا را به صورت پیشفرض برای ویندوز شناخته شود که بعد از نصب java 1.6 و راهنمایی این لینک ، این کار رو انجام بدید.
حالا در run ویندوز services.msc رو اجرا کنید و در لیست دنبال RED 5 بگردید و اونو Start کنید 
حالا سرور شما ران شده

در ادامه با یک نرم افزار (FFmpeg)که خیلی کاربردی  هم هست به سرور وصل میشیم و ....

دوستان اینو بگم که سرور های RTMP در حال رشد هستن و تا الان خیلی از کارها مثل Chat های آنلاین ، سرور های پخش زنده تلویزیون ، پخش فیلم های بدون  اینکه بشود سورس فیلم دانلود شود، پخش آنلاین بازی های کامپیوتری ، و خیلی کار های دیگه  که من در حد توانایی های خودم تا اونجا که بتونم آموزش رو تکمیل تر میکنم

دوستان با تشکرشون  به ما انرژی برای ادامه مسیر دهند.

----------


## mohammadhosin

خوب دوستان در ادامه آموزش ابتدا صفحه وبی که قراره سمت کلاینت قراره باز بشه میسازیم
در واقه یه صفحه ای هست که بصورت  flash اجرا میشه  که در اینجا ما از JW Player استفاده میکنیم (البته دوستانی که با Silverlight کار کردن هم میتونند اونو به سرور وصل کنند که اگه کسی خواست میتونم آموزشش بزارم)
خوب ابتدا باید jw player رو دانلود کنیم که من نسخه 5.1 رو براتون میزارم (چون نسخه جدید یه تغیراتی داده شده) 
live.zip
که شامل 3 فایل است 
player.swf
jwplayer.js
live.php 
که شما باید این سه فایل رو در پوشه webapps بزارید (چون سرور Red5 این پوشه رو به عنوان صفحه وب باز میکنه مثل یه سرور معمولی )
یا میتونید از هر سرور جانبی که خواستید استفاده کنید (مثل مجموعه Xampp ) و این 3 فایل رو در root قرار دهید

حالا توضیح کد

<script type='text/javascript' src='jwplayer.js'></script>

<div id='mediaplayer'></div>

<script type="text/javascript">
  jwplayer('mediaplayer').setup({
    'flashplayer': 'player.swf',       //name player
    'id': 'playerID',
    'width': '720',                        //size player
    'height': '306',                      // size player
    'provider': 'rtmp',                  // protocol name
    'streamer': 'rtmp://192.168.56.102:1935/live/',     // server IP + app name
    'file': 'mhm',                          // name file
   
  });
</script>

البته دوستان اگه میخوان با بارگذازی صفحه ، پلیر به صورت خودکار اجرا بشه کد زیر رو رو اضافه کنند
autostart: "true",

فقط کافیه در کد بالا آدرس سایت و یا آی پی سرورتون رو بدید 
در کد بالا "mhm" همان فایل است که ما با نرم افزار های مختلف به صورت آنلاین در پوشه live سرور red 5 میسازیم (نگران نشید در ادامه راحتتر متوجه میشید)

خوب تا اینجا ما یه صفحه وب ساختیم تا الان شما باید اینو دو رو داشته باشید
live 1.jpg
live 2.jpg

همین طور که در تصویر دوم نشان داده شده من پورت سرور رو 1392 گذاشتم و هر سه فایل بالا رو در پوشه Root خود سرور ریختم

----------


## mohammadhosin

خوب دوستان
ما تا اینجا سرور RED5 و صفحه کلاینت رو ساختیم
حالا قسمت اصلی آموزش
شما برای ارسال فیلم ها ، آهنگ ها ، وب کم خودتون ، .... (هر چیزی که فکرشون رو بکنید) به سرور ،احتیاج به یه نرم افزار یا application مخصوص red5 احتیاج دارید که در ادامه توضیح میدهم

*FFMPEG*
ابتداد برنامه FFmpeg (قویترین نرم افزار آپن سورس برای هر کاری که فکرشو بکنید)
نرم افزار ffmpeg را میتونید از این لینک دانلود کنید (نسخه Static)
کاربرد زیادی داره (تبدیل ، stream ، ...) برای فرستادن فیلم مورد نظر به سرور استفاده میکنیم

بعد از دانلود نرم افزار پیشنهاد میکنم cmd.zip رو دانلود کنید (که یه فایل bat است برای ارجای مستقیم شما به مکان فایل ffmpeg در حالت CMD ) تا نخواید هر دقیقه وارد cmd شوید و به مکان فایل برید (امیدوارم گرفته باشید چی میگم :افسرده: )
و فایل cmd.bat رو در مکانی که ffmpeg رو اکسترک کردید بریزید و اجرا کنید

حالا ما فرض میکنیم که شما یه فیلم بنام stranger.mp4 دارید که میخواید به سرور بفرستید ، کد زیر رو بنویسید:

ffmpeg -re -i stranger.mp4 -f flv rtmp://192.168.56.102:1935/live/mhm

از کد همه چیز واضحه ( که اگه کسی خواست میتونم بیشتر توضیح بدهم)

*نکته:* توجه داشته باشید که شما میتونید از هر کجا که خواستید به سرورتون در جای دیگه stream کنید یعنی یه vps در مثلا کشور هلند دارید و شما یه فیلم رو با برنامه ffmpeg از روی کامپیوتر خودتون در ایران ، به سرور میفرستید (همین کاری که سایت live.irib.ir میکنه )

live 3.png

حالا مرورگر خود رو باز کرده و وارد سایت خودتون شوید ( در اینجا من روی IP 192.168.56.102 سرور رو ران کردم)

http://192.168.56.102:1392/live.php

----------


## mohammadhosin

اول یه عذر خواهی میکنم بابت یه چند وقتی که نبودم و نتونستم این تاپیک رو آپدیت کنم :خجالت: 
واما ادامه ...

حالا در ادامه با استفاده از یه فال swf که ارتباط با سرور برقرار میکنه یه چت صوتی و تصویری دو طرفه برقرار میکنیم

خوب اول شما این فایل رو دانلود کنید 
ضمیمه 96346
این فایل رو در هر کجای سایتتون خواستید بزارید بعد به آدرس فایل بروید
مثلا من در این آدرس گذاشتم
http://192.168.56.102/chat/publisher.swf

حالا نفر دوم هم باید به همین آدرس بره
بعد در قسمت location (شماره 1 ) آدرس سرور + پوشه Live  رو وارد میکنیم و connect رو میزنیم
live 4.png
در سرور من rtmp://192.168.56.102/live  


حالا در قسمت (شماره 2) دو سر برگ وجود دارد view و publish 
از view برای نمایش کسی که میخواید باهاش چت کنید برای این کار هم فقط کافیه اسم دوستتون رو وارد کنید و play رو بزنید (شماره 3)

از publish برای فرستادن تصویر(video) و صدای خودتون(audio ) استفاده کنید (البته میتونید با توجه به پهنای باندی که در اختیار دارید کیفیت رو تغییر بدید )
live 5.png
در قسمت device میتونید وب کن خودتون رو انتخاب کنید و در قسمت quality کیفیت رو تغییر بدید ( در حالت 0 ;حالت پیشفرض است)
حالا باید ابتدا Start رو بزنید (روشن شدن وب کم ) بعد Publish  رو برای فرستادن وب کم به سرور .
تنظیمات audio هم به همین صورت است
 حالا شما صدا و تصویر رو به سرور ارسال کرده اید و دوست شما هم با وارد کردن اسم شما در view و زدن play شما یک چت صوتی و تصویری خواهید داشت.

----------


## mohsen_msl

سلام دوست عزیز
یک سوال داشتم خدمتتون
من بازی آنلاین بیلیارد دارم
از همین روش استفاده کردم
همه چیزش انجام میشه.
اما یه مشکل هست
این بازی بصورت دونفری.تک نفری و با کامپیوتر قابل انجامه
در مورد دو نفری بازی انجام نمیشه.حتی قابلیت چت کردنش هم کار نمیکنه.
رو لوکال از rtmp path  سایت اصلی استفاده میکنم جواب میده اما وقتی آپلود میکنم رو سایت جواب نمیده.
کلا برای بازی های آنلاین دو نفری نیاز به تنظیمات خاصی هست؟
اگر میشه راهنمایی و یا کمک کنید ممنون میشم.
یه نکته اینکه:از rtmp اصلیش استفاده میکنم روی لوکال البته بازی دو نفری اجرا میشه به همراه چت کردن.
اما از rtmp دیگه ای استفاده میکنم جواب نمیده قابلیت چت و بازی دو نفری.
نمونه:
delkade.com/game

----------


## mohsen_msl

یه سوال دیگه
تو rtmp path باید فایلی چیزی قرار بگیره؟یا فقط یجور حالت temp داره؟

----------


## mohammadhosin

درود بر شما
دوست عزیز
موقعی که path رو روی پوشه live اجرا میکنی هم مشکل داری؟   ( rtmp://servername/live  )
اگه مشکل داشتی باید خود فایل بازی رو در سرور برنامه red 5 بزاری و از اونجا اجرا کنی 
همون طور که میدونید سرور red 5 در خودش یه apache داره و مسیرش هم در مسیر Red5\webapps (بهتره در مسیر Red5\webapps\installer بزارید)

----------


## mohammadhosin

برخی از دوستان تقاضای نصب red5 در لینوکس را داشتن
من خودم رو ubuntu 10.9 نصب کردم و به خوبی هم کار میکنه
طریقه نصب و راه اندازی هم میتونید از این لیک  و این لینک ببینید

----------


## jianfough

سلام

اگر بخواهیم یک play list درست کنیم به چه صورت است
یعنی بخواهیم به فایل های ویدیویی روی سرور زمان بندی پخش بدیم

ممنون

----------


## mehriana

پخش آنلاین 
درود

میخواستم از شما کمک بگیرم در رابطه با انواع تکنیکهای کاربردی و قابل استفاده برای پخش آنلاین فیلم در اینترنت و اینکه چه دلایلی اعم از نوع کدنویسی،سخت افزار سرور و هر دلیلی که میتونه دخیل باشه تو این موضوع و باعث میشه یک سرور و صفحه وبی که داره از اون سرور استفاده میکنه بتونه این فیلم رو با بهترین کیفیت و بیشترین سرعت و کمترین پارازیت پخش کنه حتی با وجود سرعت کم اینترنت در ایران و پهنای باند نه چندان زیاد. 


با سپاس

----------


## mohammadhosin

> سلام
> 
> اگر بخواهیم یک play list درست کنیم به چه صورت است
> یعنی بخواهیم به فایل های ویدیویی روی سرور زمان بندی پخش بدیم
> 
> ممنون


راستش اون موقع من خودم هم خیلی دنبال playlist کردن با ffmpeg بودن 
تا اون زمان ffmpeg هنوز از playlist  ساپورت نمی کرد (یا حداقل من چیزی پیدا نکرم)
اگه شما با نسخه جدیدش کار کردید و به نتیجه ای رسیدید حتما اینجا هم بزارید 
مرسی

----------


## AspForFood

از آموزش شما خیلی خیلی متشکرم واقعا عالی است من چند ماه است که میخواهم یک چیزی شبیه ویدیو کنفرانس درست کنم وتا جایی رسوندم سوال من اینه که آیا برای این جور کارها نیاز به یک هاست مخصوص است؟ وکجا پیدا میشود؟ آیا میشود با کمک خود فلش در سرور از وبکم ها عکس گرفت و کد نویسی کرد؟
 با تشکر از آموزش شما

----------


## tajrobeh

با سلام و تشکر فراوان از آموزشی که گذاشتید
من یک سوال دارم اگر بخواهم ورودی رو از دوربین یا از ماهواره بگیرم یا از یک کارت گرافیک ورودی رو بگیرم باید چه کار کنم

شما اموزش استریم کردن یک فایل رو بخوبی توضیح دادید ومن هم جواب گرفتم
اما می خواهم برای پخش زنده ازش استفاده کنم یعنی از طریق کارت گرافیک ورودی صدا و تصویر  رو بگیرم و پخش زنده استریم کنم لطفا راهنمایی کنید
با تشکر

----------


## mohammadhosin

> با سلام و تشکر فراوان از آموزشی که گذاشتید
> من یک سوال دارم اگر بخواهم ورودی رو از دوربین یا از ماهواره بگیرم یا از یک کارت گرافیک ورودی رو بگیرم باید چه کار کنم
> 
> شما اموزش استریم کردن یک فایل رو بخوبی توضیح دادید ومن هم جواب گرفتم
> اما می خواهم برای پخش زنده ازش استفاده کنم یعنی از طریق کارت گرافیک ورودی صدا و تصویر  رو بگیرم و پخش زنده استریم کنم لطفا راهنمایی کنید
> با تشکر


درود بر شما
دوست عزیز شما میتونید از FFmpeg استفاده کنید چون میشه به صورت مستقیم از دسکتاپ کپچر کرد و یا از کارت های ویدئویی و یا کارت رسیورها (DVB card) مستقیم ورودی داشته باشید بهتر از رفرنس FFmpeg استفاده کنید  
http://www.ffmpeg.org/ffmpeg-all.html#Input-Devices




> از آموزش شما خیلی خیلی متشکرم واقعا عالی است من چند ماه است که میخواهم یک چیزی شبیه ویدیو کنفرانس درست کنم وتا جایی رسوندم سوال من اینه که آیا برای این جور کارها نیاز به یک هاست مخصوص است؟ وکجا پیدا میشود؟ آیا میشود با کمک خود فلش در سرور از وبکم ها عکس گرفت و کد نویسی کرد؟
>  با تشکر از آموزش شما


نه لازم نیست چون من خودم اوایل با یه VPS ویندوز 2003 با رم 512 شروع کردم و خیلی خوب جواب گرفتم ولی برای پایداری بیشتر بهتر از سرور های لینوکس استفاده شود 

موفق باشید

----------


## mohammadhosin

سلام دوباره بعد از یه وقفه چند ماهه

امروز میخوام براتون webcam رو رو سرور بفرستیم

ابتدا این فایل رو دانلود کنید 
www.stranger.ir.zip
فقط بعد از اسم سرور ، پورت 1935 رو اضافه کنید.

اینم فایل پلیر 
film.zip

----------


## nassim0

فايل ضمیمه 96346 حذف شده

----------


## nassim0

چطور ميشه از بقيه تصوير وب كم گرفت  ؟؟؟

----------


## hadi46

با سلام زمان اجرای live stream این خطا رو میده میشه راهنمایی نمایید
HandShake: Type mismatch: client sent 3, server answered 7
RTMP_Connect1, handshake failed.
rtmp://192.168.2.8:1392/live/mhm: Unknown error occurred

----------


## sahand02

سلام خسته نباشید 
ببخشید برا شبکه های تلویزیونی چطور استفاده میشه ؟
من بخوام شبکه های تلویزیونی رو بزارم باید چیکار کنیم از اینترنت بگیرم و دخیره کنم و سرور پخش کنه یا از دستگاه پخش میشه ؟چطوریه لطفا کمکم کنید

----------


## mohammadhosin

> سلام خسته نباشید 
> ببخشید برا شبکه های تلویزیونی چطور استفاده میشه ؟
> من بخوام شبکه های تلویزیونی رو بزارم باید چیکار کنیم از اینترنت بگیرم و دخیره کنم و سرور پخش کنه یا از دستگاه پخش میشه ؟چطوریه لطفا کمکم کنید


شما از هر دو روش میتونید استفاده کنید 
اگه از تو سرور میخواید این کار رو کنید مجبورید از سایت های خود شبکه ها لینک رو کپچر کنید ، با خود ffmpeg بهترین گزینه هست
ویا از تو خونه اگه tvcard دارید هم میشه با ffmpeg این کار رو کنید

----------


## tajrobeh

> شما از هر دو روش میتونید استفاده کنید 
> اگه از تو سرور میخواید این کار رو کنید مجبورید از سایت های خود شبکه ها لینک رو کپچر کنید ، با خود ffmpeg بهترین گزینه هست
> ویا از تو خونه اگه tvcard دارید هم میشه با ffmpeg این کار رو کنید


میشه دستورات ffmpeg  رو برای هر دو روش بنویسید
با تشکر فراوان

----------


## navidnavvabpour

سلام دوست عزیزم
من سرور RED 5 رو به روشی که شما توضیح دادید راه اندازی کردم با آدرس روی سرور 192.168.10.109:8080 دسترسی دارم .
همچنین برنامه adobe flash media live encoder رو ری یک سیستم دیگر نصب کردم و استریم رو به آدرس rtmp://192.168.10.109/live کانکت کردم .
خوب تا اینجا مشکلی ندارم  ، حالا چطور تصویر استریم رو می تونم ببینم ؟
اون 3 تا فایل شما رو نیز داخل پوشه Root ریختم و با آدرس http://192.168.10.109:8080/live.php صفحه مربوط به پلیر باز میشه و لی تصویری توش نیست !!
کد live.php من به این شکل هست :


<script type='text/javascript' src='jwplayer.js'></script>


<div id='mediaplayer'></div>


<script type="text/javascript">
  jwplayer('mediaplayer').setup({
    'flashplayer': 'player.swf',
    'id': 'playerID',
    'width': '720',
    'height': '306',
    'provider': 'rtmp',
    'streamer': 'rtmp://192.168.10.109:1935/live/',
    'file': 'mhm',

  });
</script>

----------


## moein23

شرمنده که من تایپیک قدیمی رو بالا میارم

اما یه سوال داشتم
این کار برای دوربین های مدار بسته هم جواب میده میشه انلاین تصویر های دوربین رو بزارم تو سایتم ؟

----------


## mohammadhosin

> شرمنده که من تایپیک قدیمی رو بالا میارم
> 
> اما یه سوال داشتم
> این کار برای دوربین های مدار بسته هم جواب میده میشه انلاین تصویر های دوربین رو بزارم تو سایتم ؟


بله میشود 
از دستور input برای ffmpeg استفاده کنید 
توضیحات بیشتر در داکیومنت خود ffmpeg


دو ستان میبخشید که دیر پاسخ میدم
این پست مربوط به 2 سال پیش میشه 
اگه سوالی داشتید با واتس آپ پاسخ میدم
09171705286
یا علی

----------


## Crack Doner

Nice Work On A Nice Blog Great Time Be Here With New & Unique Info About Title From: <a href=http://www.jojosoftwares.com/vlc-media-player-2-2-1-32-bit-full/> VLC Media Player </a>, <a href=http://www.jojosoftwares.com/evolve-wallpaper-android-phone-free/> Evolve Wallpaper For Android</a>: Kiss:

----------


## amin12011380

سلام چجوری می شه یه اپلیکیشن اندرویدی ساخت که به سرور ارسال کنه و ایم که آیا این سرور می تونه چند ورودی داشته باشه و کاربرا به دلخواه انتخاب کنن کدوم پخش شه؟

----------

