Liar 21 Zgłoś post Napisano Marzec 24, 2014 Witam Mam następujące pytanie chciałbym użytkownikom streamować pliki video, które są w formacie avi, do tego może mi służyć DivX Web Player, jednak trzeba go instalować oraz często pojawiają się opóźnienia dźwięku, obrazu bądź wcale video nie chce się odtwarzać. Tutaj pojawia się pytanie jak streamować pliki avi dla użytkowników w mp4 ? Wygląda to mniej więcej tak: Serwer 1 pliki avi Serwer 2 ffmpeg + serwer www Czy dałoby się zrobić to w następujący sposób Użytkownik otrzymuje stream w mp4 w playerze <- Serwer 2 pobiera plik avi i konwertuje go na mp4Chciałbym aby to działało live, czyli żadne mp4 nie zostają, jak użytkownik chce obejrzeć super.avi to serwer 2 konwertuje super.avi do super.mp4, ale gdy użytkownik przerwie oglądanie, bądź wyłączy stronę konwersja się również wyłączy. Jest coś takiego możliwe ? Z góry wielkie dzięki. Udostępnij ten post Link to postu Udostępnij na innych stronach
Eskimos 17 Zgłoś post Napisano Marzec 24, 2014 Sumie nie łatwiej streamować przy użyciu RTMP? Wszystko możesz trzymać na jednym serwerze i zapewne opóźnienie będzie mniejsze Jako odtwarzacza możesz użyć jwplayer. Jeśli byś miał jakiś problem to pisz śmiało na pw! Udostępnij ten post Link to postu Udostępnij na innych stronach
Desavil 88 Zgłoś post Napisano Marzec 24, 2014 Dołączę się do pytania, ale trochę w innym kontekście. Eskimos, piszesz o użyciu protokołu RTMP. Czy mógłbyś polecić jakieś oprogramowanie (najlepiej darmowe) do streamingu właśnie na tym protokole z poziomu Windowsa? Próbowałem do tego wykorzystać VLC media player, lecz niestety chyba nie wspiera tego protokołu (wspiera m.in. RTSP, RTP, czyli nie to czego potrzebuję). Najlepiej chyba jakieś inne oprogramowanie niż VLC. Dodam, że serwer uruchomiony jest na nginx. Udostępnij ten post Link to postu Udostępnij na innych stronach
Eskimos 17 Zgłoś post Napisano Marzec 25, 2014 Do stremowania używam popularnego programu o nazwie Open Broadcaster Software, a jako serwera nginx'a z modułem rtmp dostępnego tutaj Udostępnij ten post Link to postu Udostępnij na innych stronach
Liar 21 Zgłoś post Napisano Marzec 26, 2014 @Eskimos A nie wiesz w jaki sposób robi to serwis chomikuj ? Oni dają możliwość podglądu video. Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Marzec 26, 2014 Jeżeli masz zamiar podawać pliki .avi z serwera w formacie mp4 to moduł rtmp pozwala na odpalanie ffmpega w momencie gdy user chce odpalić film. Udostępnij ten post Link to postu Udostępnij na innych stronach
jasiek07 0 Zgłoś post Napisano Marzec 27, 2014 Do stremowania używam popularnego programu o nazwie Open Broadcaster Software, a jako serwera nginx'a z modułem rtmp dostępnego tutaj Czesc, mam pytanko, moglbys podac jakis poradnik szczegolowy, jak zbudowac taki serwer? Tj. instalacja oraz konfiguracja na debianie. Moze byc po polsku lub angielsku, pozdrawiam Generalnie cos takiego znalazlem, nadaje sie? Jeszcze mam troche czasu, nadaje na zawnetrzne serwery typu ustream przez ffmpeg, ale mam zamiar w najblizszym czasie zaczac nadawac bezposrednio ze swojego. http://www.piotrdyduch.pl/debian-nginx-rtmp-module/ Troche wydaje mi sie ubogi poradnik, dodatkowo, wedlug niego nadaje 1 kanal "stream", a jak dodac wiecej streamow? Oraz jak to mialoby wygladac przy wspolpracy z ffmpeg? powinienem nadawac ffmpegiem jako output jakis plik np mp4, po czym link do tego pliku bylby linkiem do streamu? Tylko, wydaje mi sie ze ffmpeg bedzie zapisywal caly plik, wiec jak sie wejdzie w link to nie bedzie na zywo tylko bedzie szlo od samego poczatku, czyli od momentu az ffmpeg rozpoczal zapisywanie pliku mp4. Udostępnij ten post Link to postu Udostępnij na innych stronach
Desavil 88 Zgłoś post Napisano Kwiecień 1, 2014 Do stremowania używam popularnego programu o nazwie Open Broadcaster Software, a jako serwera nginx'a z modułem rtmp dostępnego tutaj Dzięki. Szkoda tylko, że niema wersji pod XP, bo nie wspiera jakiegoś DirectX. I działa ten program dopiero od Visty. Znacie może jeszcze jakieś inne programy ze wsparciem RTMP do nadawania z poziomu systemu XP? Udostępnij ten post Link to postu Udostępnij na innych stronach
limes 27 Zgłoś post Napisano Kwiecień 4, 2014 (edytowany) Czesc, mam pytanko, moglbys podac jakis poradnik szczegolowy, jak zbudowac taki serwer? Tj. instalacja oraz konfiguracja na debianie. Moze byc po polsku lub angielsku, pozdrawiam Nagrałem filmik jakis czas temu niedługo umieszcze kolejne, ze wzgledu na zapytania od ludzi. Proszę Edytowano Kwiecień 4, 2014 przez limes (zobacz historię edycji) 1 Udostępnij ten post Link to postu Udostępnij na innych stronach
Liar 21 Zgłoś post Napisano Kwiecień 5, 2014 Okej, próbowałem i chyba się poddam, obciążenie serwera jest spore, wręcz ogromne. Tutaj pojawia się następujące pytanie, w jaki sposób to robi np: catshare Stream jest w .flv ale po pobraniu danego piku otrzymujemy .mkv bądź avi. Jakaś pomoc ? Z góry dziękuję. Tutaj przyklad: catshare.net/test Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Kwiecień 5, 2014 (edytowany) Bardzo prosto. Przechowują 2 pliki. Jeżeli będziesz potrzebował pomocy, czy wykonawcy lub osoby na innych warunkach niż zlecenie - zapraszam na PW. Edytowano Kwiecień 5, 2014 przez Misiek08 (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość Zgłoś post Napisano Kwiecień 10, 2014 (edytowany) Witam Dla zainteresowanych, sprzedam poradnik poprawnej konfiguracji nginx oraz panel do zakładania i zarządzania kanałami na danym serwerze . Cena 200zł od sztuki, prosze pisać na PW . Edytowano Kwiecień 10, 2014 przez Gość (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Kwiecień 10, 2014 (edytowany) Komendy, które doprowadzą do instalacji "portable" nginx-rtmp: apt-get update apt-get upgrade -y apt-get install -y git screen htop iftop nano curl libpcre3-dev libssl-dev git clone https://github.com/moezzie/nginx-portable.git cd nginx-portable git clone https://github.com/arut/nginx-rtmp-module.git Do pliku compile, do linijki zaczynającej się od ./configure należy dodać: --add-module=/bezwzgledny_adres_do_aktualnego_katalogu/nginx-rtmp-module Następnie znowu komenda: ./compile Podstawowa konfiguracja bez zabezpieczeń: worker_processes 1; events { worker_connections 8192; } rtmp { server { listen 1935; application live { live on; } } } http { include mime.types; default_type application/octet-stream; access_log off; sendfile on; keepalive_timeout 65; server { listen 3001; server_name localhost; root html; location / { index index.html index.htm; } location /statt { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root nginx-rtmp-module; } location /controlll { rtmp_control all; allow 127.0.0.1; deny all; } } } Uruchomienie: ./nginx-portable start Jeżeli chodzi o ten panel bardzo prosto go zrobić (wywoływanie komend dla re-streamu + baza streamów, nawet na plikach), ale jak ktoś nie potrafi sam zrobić - to czemu nie. Jeżeli ktoś jest zainteresowany zabezpieczeniami streamu (nie prosty secure_token, ale własne rozwiązanie) to zapraszam do kontaktu. Edytowano Kwiecień 10, 2014 przez Misiek08 (zobacz historię edycji) 1 Udostępnij ten post Link to postu Udostępnij na innych stronach
jasiek07 0 Zgłoś post Napisano Kwiecień 13, 2014 (edytowany) Komendy, które doprowadzą do instalacji "portable" nginx-rtmp: apt-get update apt-get upgrade -y apt-get install -y git screen htop iftop nano curl libpcre3-dev libssl-dev git clone https://github.com/moezzie/nginx-portable.git cd nginx-portable git clone https://github.com/arut/nginx-rtmp-module.git Do pliku compile, do linijki zaczynającej się od ./configure należy dodać: --add-module=/bezwzgledny_adres_do_aktualnego_katalogu/nginx-rtmp-module Następnie znowu komenda: ./compile Podstawowa konfiguracja bez zabezpieczeń: worker_processes 1; events { worker_connections 8192; } rtmp { server { listen 1935; application live { live on; } } } http { include mime.types; default_type application/octet-stream; access_log off; sendfile on; keepalive_timeout 65; server { listen 3001; server_name localhost; root html; location / { index index.html index.htm; } location /statt { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root nginx-rtmp-module; } location /controlll { rtmp_control all; allow 127.0.0.1; deny all; } } } Uruchomienie: ./nginx-portable start Jeżeli chodzi o ten panel bardzo prosto go zrobić (wywoływanie komend dla re-streamu + baza streamów, nawet na plikach), ale jak ktoś nie potrafi sam zrobić - to czemu nie. Jeżeli ktoś jest zainteresowany zabezpieczeniami streamu (nie prosty secure_token, ale własne rozwiązanie) to zapraszam do kontaktu. Dzieki za prosty poradnik, jedno pytanie brzmi, jak teraz nadawac? Gdzie powinienem zapisywac z ffmpeg, oraz jaki adres potem podac np w vlc zeby odtworzyc stream. no i jak moge sprawdzic czy wszystko jest ok? uzywalem wczesniej apache, teraz po usunieciu apache i zainstalowaniu nginxa, moge jakos sprawdzic przez przegladarke czy wszystko jest ok? bo po wpisaniu adresu ip mojego serwera, cos tam laduje ale w efekcie pokazuje blad wczytywania strony. Edytowano Kwiecień 13, 2014 przez jasiek07 (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Kwiecień 13, 2014 To co podałem to akurat przykładowa konfiguracja. Nadajesz na <IP>/live/<nazwastreama> i tak samo odtwarzasz. 1 Udostępnij ten post Link to postu Udostępnij na innych stronach
jasiek07 0 Zgłoś post Napisano Kwiecień 13, 2014 To co podałem to akurat przykładowa konfiguracja. Nadajesz na <IP>/live/<nazwastreama> i tak samo odtwarzasz. Dzieki za pomoc. A mam pytanko jeszcze, na jakiej zasadzie to dziala? Poniewaz ja np. nadaje z tego samego serwera na ktory wysylam tak jakby, bo adres rtmp servera to ten sam z ktorego wysylam np z ffmpeg. I to dziala na takiej zasadzie ze zapisuje plik na dysku gdzies? Chodzi mi o to, czy ilosc osob, ktora oglada dany stream ma jakies znaczenie w mojej sytuacji? Poniewaz chcialbym zeby to wygladalo mniej wiecej tak, ze ja streamuje, ale tak jakby transfer wychodzacy z mojego serwera odbywa sie dopiero gdy ktos oglada (czyli jakby pobiera) video z mojego serwera, a jesli nikt nie oglada to transfer na zewnatrz mojego serwera sie nie odbywa, a plik jest tylko zapisywany na dysku.. Troche to niezbyt profesjonalnie wyjasnilem, ale mam nadzieje ze wiadomo o co mi chodzi. Pytam, poniewaz wydaje mi sie ze zeby osiagnac to o czym ja mowie, to z ffmpega powinienem jako out nie podawac adres rtmp serwera, a poprostu nazwe pliku, i ten plik by sie zapisywal gdzies i kazdy moglby go odtwarzac gdyby mial do niego adres. Nie nadawalem nigdy bezposrednio z serwera do nikogo, ani nie mialem stycznosci z nginx rtmp stad takie glupie pytanie. Pozdrawiam Udostępnij ten post Link to postu Udostępnij na innych stronach
jasiek07 0 Zgłoś post Napisano Kwiecień 14, 2014 (edytowany) Nie wiem dlaczego, ale nie moge nic nadawac z mojego serwera, poniewaz kazda transmisja sie zacina, obraz staje np. na kilka sekund po czym przeskakuje dalej a w tle np. dzwiek idzie caly czas, albo tez zdarza sie ze buforuje co 1-2 sek i to wszystko razem sprawia ze nie da sie ogladac kompletnie. Z poziomu ffmpeg wszystko wyglada wporzadku, fps na poziomie 28, time rowniez ok (nie widac zeby byly problemy z nadawaniem, do serwera wszystko idzie wporzadku, natomiast jak juz sie odtwarza stream w jakims playerze np. vlc to nie da sei tego ogladac. Siec jest ok, cos z nginxem? Uzywalem przykladowej konfiguracji ktora podales, moze cos trzeba w niej zmienic? Sprawdzilem nadajac na inny serwer np. ustream i jest ok, czyli cos z configuracja mojego serwera jest nie tak. probowalem nadajac na rtmp://<IP>:1935/live/<nazwastreama> oraz rtmp://127.0.0.1:1935/live/ch1/live/<nazwastreama> bez roznicy Probowalem ze swojego serwera nadawac bezposrednio, jak i z innego, co rowniez nie mialo roznicy. Edytowano Kwiecień 14, 2014 przez jasiek07 (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Kwiecień 14, 2014 Ogólnie moduł rtmp do nginx'a ma 1 mankament - jeżeli nadajesz z ffmpega to brakuje dużo informacji w streamie dlatego uruchomienie streama jako oglądający jest problematyczne i trwać może do 15 sekund. Jest oczywiście możliwość naprawienia tego konfiguracją modułu i ffmpega, jednak myślę, że warto czekać przy włączeniu 10-15sekund, ale oszczędzić procesor na serwerze - chyba że masz dużo wolnego procesora to trzeba na ffmpegu wymusić tworzenie klatek całościowych i będzie się ładnie uruchamiać. Fakt, że tnie już w czasie oglądania jest niepokojący i dziwi mnie to trochę, bo nie spotkałem się z problemami (dopóki nie oglądało więcej osób niż ogarniało łącze). Jeżeli nadajesz ffmpegiem na lokalny host to nie ma wtedy problemu z łączem wychodzącym, bo jak nikt nie ogląda to go nie używasz. adres, na który masz nadawać to: rtmp://<IP>:1935/live/<nazwastreama> oraz rtmp://127.0.0.1:1935/live/<nazwastreama> Konstrukcja rtmp://<IP>:1935/live/<nazwastreama> oraz rtmp://127.0.0.1:1935/live/ch1/live/<nazwastreama> ma błąd (/live/ch1/live - powtórzenie/zagnieżdżenie aplikacji). 1 Udostępnij ten post Link to postu Udostępnij na innych stronach
jasiek07 0 Zgłoś post Napisano Kwiecień 16, 2014 (edytowany) Ogólnie moduł rtmp do nginx'a ma 1 mankament - jeżeli nadajesz z ffmpega to brakuje dużo informacji w streamie dlatego uruchomienie streama jako oglądający jest problematyczne i trwać może do 15 sekund. Jest oczywiście możliwość naprawienia tego konfiguracją modułu i ffmpega, jednak myślę, że warto czekać przy włączeniu 10-15sekund, ale oszczędzić procesor na serwerze - chyba że masz dużo wolnego procesora to trzeba na ffmpegu wymusić tworzenie klatek całościowych i będzie się ładnie uruchamiać. Fakt, że tnie już w czasie oglądania jest niepokojący i dziwi mnie to trochę, bo nie spotkałem się z problemami (dopóki nie oglądało więcej osób niż ogarniało łącze). Jeżeli nadajesz ffmpegiem na lokalny host to nie ma wtedy problemu z łączem wychodzącym, bo jak nikt nie ogląda to go nie używasz. adres, na który masz nadawać to: rtmp://<IP>:1935/live/<nazwastreama> oraz rtmp://127.0.0.1:1935/live/<nazwastreama> Konstrukcja rtmp://<IP>:1935/live/<nazwastreama> oraz rtmp://127.0.0.1:1935/live/ch1/live/<nazwastreama> ma błąd (/live/ch1/live - powtórzenie/zagnieżdżenie aplikacji). Dzieki za pomoc, oczywiscie z tym zagniezdzeniem aplikacji to literowka, musialo mi sie jakos zle skopiowac. Dodalem do ffmpega -re i jakos sie to uspokoilo o wiele rzadziej sie zdarza przycinka. jeszcze pokombinuje z tym. Warto nadmienic ze dzieje sie tak tylko z jakoscia sd (~900bitrate) a przy hd (~2000+) zdarzaja sie takie przycinki, wykluczam lacze. Moze powinienem jakos okreslic wielkosc buffora? mam wrazenie jakby bardzo male pakiety byly wysylane, poniewaz te przycinki trwaja ulamki sekund, wiec wnioskuje ze moze zbyt duzo malych pakietow jest wysylane, zamiast mniej wiekszych i niektore lacza (np. tez z wiekszym pingiem) moga sobie z tym nie radzic. Przyznam ze sprawdzalem na 2 roznych laczach i roznica byla widoczna, a oba sa teoretycznie wystarczajace (jedno ~10mbps ale z pingiem na poziomie 70-100ms a drugie ok 50mbps z pingiem ok 30ms, gdzie nawet w przypadku tego pierwszego, mimo czestszych przycin, nadal byl zapas lacza). Da sie jakos zwiekszyc wielkosc buforu/pakietow wysylanych z serwera/odbieranych przez widzow? Czy moze jakies inne rozwiazanie? Mam jeszcze jedno pytanie, odnosnie mojej konfiguracji. Oczywiscie dopiero zaczynam przygode z nginxem, dlatego nie jest ona zbyt czarujaca, narazie ogarniam podstawy. Nie rozumiem dlaczego kazdy moze nadawac na moj serwer, skoro umozliwilem to tylko sobie. A sprawdzalem i mozna nadawac nadal z innego serwera: config: worker_processes 1; error_log logs/error.log debug; events { worker_connections 1024; } rtmp_auto_push on; rtmp { server { listen 1935; chunk_size 4000; application live { live on; record off; allow publish 127.0.0.1; allow play all; } } } # HTTP can be used for accessing RTMP stats http { server { listen 8080; server_name localhost; location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /var/www/; } } } sprecyzowalem allow publish 127.0.0.1; Czyli powinno byc nadawanie ograniczone tylko do localhosta prwada? Czy moze powinienem dodac jeszcze deny all ponizej, zeby okreslic ze cala reszta nie moze nadawac? Czy w zlym miejscu umiescilem dyrektywe? I jeszcze raz wielkie dzieki za pomoc. edit:// przypomnialo mi sie jeszcze jedno.. czasami zdarza sie ze dzwiek sie deformuje, tj brzmi nienaturalnie, najczesciej slychac przy muzyce, co moze byc tego powodem? Edytowano Kwiecień 16, 2014 przez jasiek07 (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Kwiecień 16, 2014 Nie wiem czemu się dźwięk deformuje, a jak jest z pakietami to trzeba by zajrzeć do kodu źródłowego modułu. Autor zapewniał już kiedyś, że moduł nie bawi się w nic, po prostu przyjmuje pakiety i przesyła do ludzi. Możliwe, że jednak coś majstruje z buforowaniem. Jeżeli chodzi o zmianę ustawień to uczulam, żeby nie używać reloada. Moduł rtmp wymaga, aby za każdym razem kiedy coś chcemy zmienić - robić pełny restart. Stop, chwila odczekania na zabicie wszystkich połączeń i start. Udostępnij ten post Link to postu Udostępnij na innych stronach
TomaszG 6 Zgłoś post Napisano Kwiecień 16, 2014 Zauważ że ten moduł rtmp niczego nie zmienia w przesyłanych danych. Dźwięk się deformuje bo: - rekompresujesz strumień ? - skąd pobierasz dźwięk? Przerwy w odtwarzaniu wideo pojawiają się gdy łącze nie pozwala na utrzymanie stałego transferu. Wszystkie łącza w tym kraju są sprzedawane w wersji 'do' xxx mbps, co tylko oznacza że nie masz gwarancji prędkości. Już miałem takie przypadki gdzie kilka set osób korzystało z łącza 100mbps(provider w małym mieście), w rezultacie nie dało się utrzymać stałej transmisji na poziomie 2mbps. Udostępnij ten post Link to postu Udostępnij na innych stronach
jasiek07 0 Zgłoś post Napisano Kwiecień 16, 2014 Dzieki za odpowidzi. Zmienilem player na jwplayer i ustawilem buffor 5sek i wydaje mi sie ze jest znacznie lepiej. Mozliwe ze to problem z internetem, chodz problem jest juz zdecydowanie mniejszy, sprawdze potem jeszcze na szybszym laczu i wtedy bede pewny, choc pewnie masz racje. W zasadzie to moge na obecna chwile wykluczyc, poniewaz odtwarzanie jest juz w miare plynne. Co do ost. problemu to zrestartuje dla pewnosci cala maszyne o polnocy i wtedy zobacze czy to problem z reloadem. Dziekuje za pomoc. Udostępnij ten post Link to postu Udostępnij na innych stronach
TomaszG 6 Zgłoś post Napisano Kwiecień 19, 2014 W sumie do transmisji w tym przypadku (dużo szczegółów) polecał bym kompresje bezstratną HUFFUV. Zajmuje ona nieco więcej pasma niż stratna ale zakładam że powinna cię ta metoda bardziej usatysfakcjonować. 1 Udostępnij ten post Link to postu Udostępnij na innych stronach
jasiek07 0 Zgłoś post Napisano Kwiecień 19, 2014 (edytowany) Dzięki za odpowiedź. Transkodowanie na obecną chwilę niestety raczej odpada ponieważ nie mam na tyle zasobów żeby transkodować video do innego kodeka. Na obecną chwilę nie zmieniam paramtrów wideo podczas retransmisji, ale później z pewnością się tym zainteresuję. Chodź w zasadzie teraz wszystko trzyma się kupy całkiem przyzwoicie. Pozostaje mi tylko troszke zabezpieczyć stream, żeby zminimalizować obciążnie serwera przez osoby z zewnątrz, ale myśle, że znajde coś przydatnego na ten temat w sieci, chętnie wysłucham jakieś wskazówki, albo pomocne artykuły jeśli ktoś coś ma w zanadrzut. Pozdrawiam Edytowano Kwiecień 19, 2014 przez jasiek07 (zobacz historię edycji) Udostępnij ten post Link to postu Udostępnij na innych stronach
Misiek08 285 Zgłoś post Napisano Kwiecień 19, 2014 Jakiego serwera używasz? Moduł rtmp do nginx'a, Wowza, Red5, czy coś innego? Udostępnij ten post Link to postu Udostępnij na innych stronach