Skocz do zawartości
Desavil

RTMP - jaki darmowy odtwarzacz

Polecane posty

Witam.

Chciałbym się dowiedzieć jakie polecacie darmowe odtwarzacze (włącznie z zastosowaniem komercyjnym) protokołu RTMP na swoją stronę internetową. Chodzi mi, aby wspierały dużą ilość przeglądarek oraz urządzeń mobilnych.

 

Pozdrawiam!

Edytowano przez Desavil (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tak, tylko licencja w wersji darmowej tych odtwarzaczy nie pozwala na użytek komercyjny, chyba że coś źle przeczytałem.

 

@edit

Chyba flowplayer można używać do celów komercyjnych w wersji darmowej:

Free version

The Free version is licensed under a GPL based License. Use it freely in every possible situation including commercial projects. This version displays a Flowplayer copyright notice on the bottom left corner of the player. Copyright notices and author attribution are also present in the player's context menu. According to the license the copyright notices and author attribution must stay intact and be shown in the player's User Interface even if you modify the source code.
See Free license FAQ for more information.

 

Edytowano przez Desavil (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Mam jeszcze takie pytanie.

Na nginx'ie postawiony serwer RTMP. Na odtwarzaczu videojs obraz bez problemu się wyświetla.

Natomiast nie wiem dlaczego na wspomnianym flowplayer po konfiguracji do odtwarzania tego protokołu, wyświetla się taki komunikat:

flash: Invalid RTMP URL
rtmpt://moj-serwer:3050/stream/live

Dziwi mnie, dlaczego on dopisuje na końcu literę "t" rtmpt a podana konfiguracja jest w taki sposób:

flowplayer.conf = {
  live: true, // mandatory with live streams
  rtmp: "rtmp://moj-serwer:3050/stream/live",
  ratio: 9/16,
  // work around a bug in the flash engine regarding live streams
  swf: "//releases.flowplayer.org/5.4.3/flowplayer.swf"
};
Edytowano przez Desavil (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

video.js, mediaelement.js lub OSMF.

 

W razie dodatkowych pytań zapraszam na PW lub tutaj w temacie :) RTMP to podstawowy protokół przesyłania danych. Odmiany T, F, S, E to po prostu RTMP z dodatkowymi elementami np. zabezpieczającymi stream.

Edytowano przez Misiek08 (zobacz historię edycji)
  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Natomiast nie wiem dlaczego na wspomnianym flowplayer po konfiguracji do odtwarzania tego protokołu, wyświetla się taki komunikat:

Zależy jaka to wersja flowplayera. Sam nie korzystam z najnowszej dlatego podaje przykład zastosowania wersji oznaczonej cyframi 3.2

http://chrzastowice.com/iframe.php?ch=kamera1

W kodzie strony wszystko widać.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Problemem był mój błąd.

 

Tutaj:

rtmp: "rtmp://moj-serwer:3050/stream/live",

Nie podaje się całej ścieżki, usunąłem /live i dopisałem w:

<source type="video/flash" src="live" />

I działa w taki sposób.

 

Pomógł Misiek08, któremu bardzo dziękuję.

 

 

Jedyne co mnie jeszcze w tym streamie denerwuje, to długie jego wczytywanie w odtwarzaczu. Po rozpoczęciu nadawania stream ładuje się w ok. 2 sekundy, ale jak już działa np. 1-2 dni to ładowanie trwa nawet 10 sekund. Samo opóźnienie nie jest złe, najmniejsze jakie zauważyłem to 2 sekundy, a największe 5 sekund.

Edytowano przez Desavil (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tak jak mówiłem na PW. Moduł nginx-rtmp jest tutaj przyczyną, jedynie można delikatnie próbować poprawić takimi rzeczami jak wait_video/wait_key (więcej można w dokumentacji modułu poczytać), jednak opóźnienie ok. 3-5sekund przy uruchamianiu i tak zostanie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Chciałbym dopytać jeszcze o jedną rzecz, aby nie tworzyć nowego tematu.

 

Czy w jakiś sposób można robić reconnect, nawiązywać ponownie połączenie ze strumieniem jeżeli nastąpi jakiś problem w komunikacji? Mam kamerkę IP, z której streamuję obraz przez nginx i czasem nastąpi rozłączenie z powodu działania internetu. Zrobiłem sobie więc taki skrypt:

#!/bin/bash
while [ true ] ; do
        ffmpeg -i rtsp://strumien -vcodec libx264 -b:v 500k -bufsize 500k -an -f flv rtmp://127.0.0.1:1935/stream/live -vf scale=hd720
        sleep 5
done

Niestety nie zawsze się to sprawdza, a wręcz w momencie jeżeli ffmpeg będzie wyrzucał dużo "drop=", nie następuje wtedy próba ponownego połączenia. Można to jakoś zautomatyzować? Może da się to zrobić bezpośrednio w module rtmp dla nginx?

 

Dziękuję za pomoc.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nginx ma takie dyrektywy jak exec_publish i inne exec. Popatrz, czy np. taka dyrektywa wraz z Twoim skryptem nie byłaby wystarczająca.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dokładnie jak Misiek08 napisał, podaje przykład, sam korzystam z tego w celu transkodowania kanałów

application live {
...
exec_push ffmpeg -i rtsp://strumien -vcodec libx264 -b:v 500k -bufsize 500k -an -f flv rtmp://127.0.0.1:1935/stream/live -vf scale=hd720
...
}

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W taki sposób niestety w ogóle się nie łączy. Zarówno przez exec_push jak i exec_publish.

rtmp {
        server {
                listen 1935;
                chunk_size 4000;
                buflen 1s;
                application stream {
                        max_connections 100;
                        allow publish 127.0.0.1;
                        deny publish all;
                        allow play all;
                        live on;
                        exec_push ffmpeg -i rtsp://strumien -vcodec libx264 -b:v 500k -bufsize 500k -an -f flv rtmp://127.0.0.1:1935/stream/live -vf scale=hd720;
                }
        }
}
Edytowano przez Desavil (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Spróbuj tak:

exec_static ffmpeg -i rtsp://strumien -vcodec libx264 -b:v 500k -bufsize 500k -an -f flv rtmp://127.0.0.1:1935/stream/live -vf scale=hd720;

Przepraszam mój wcześniejszy post dotyczył transkodowania kanałów obecnie nadawanych na serwer, ale mniejsza z tym teraz już sprawdziłem i tak powinno działać ;-)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Teraz się połączyło i nadaje.

Ale połączenie ze streamem w playerze trwa bardzo długo, pomijam już to, ale obraz nie jest płynny tylko klatkuje. W rtmpstats widzę również, że Timestamp oraz A-V, dla playing nie idzie płynnie z publishing, co w przypadku bezpośredniego nadawania z uruchomionej komendy ffmpeg z poziomu konsoli nie miało miejsca, hmm.

 

Dodam jeszcze, że czasami ffmpeg wyświetla takie coś:

 bitrate= 274.9kbits/frame=   73 fps= 48 q=30.0 size=      28kB time=00:00:00.84 bitrate= 274.9kbits/frame=   73 fps= 36 q=30.0 size=      28kB time=00:00:00.84 bitrate= 274.9kbits/frame=   73 fps= 29 q=30.0 size=      28kB time=00:00:00.84 bitrate= 274.9kbits/frame=   73 fps= 24 q=30.0 size=      28kB time=00:00:00.84 bitrate= 274.9kbits/frame=   73 fps= 21 q=30.0 size=      28kB time=00:00:00.84 bitrate= 274.9kbits/frame=   73 fps= 18 q=30.0 size=      28kB time=00:00:00.84 bitrate= 274.9kbits/frame=   73 fps= 16 q=30.0 size=      28kB time=00:00:00.84 bitrate= 274.9kbits/frame=   73 fps= 14 q=30.0 size=      28kB time=00:00:00.84 bitrate= 274.9kbits/frame=   73 fps= 13 q=30.0 size=      28kB time=00:00:00.84 bitrate= 274.9kbits/frame=   73 fps= 12 q=30.0 size=      28kB time=00:00:00.84 bitrate= 274.9kbits/frame=   73 fps= 11 q=30.0 size=      28kB time=00:00:00.84 bitrate= 274.9kbits/frame=   74 fps= 10 q=30.0 size=      28kB time=00:00:00.88 bitrate= 262.9kbits/frame=   94 fps= 12 q=29.0 size=      51kB time=00:00:01.68 bitrate= 247.8kbits/frame=  109 fps= 14 q=30.0 size=     123kB time=00:00:08.68 bitrate= 116.0kbits/frame=  109 fps= 13 q=30.0 size=     123kB time=00:00:08.68 bitrate= 116.0kbits/frame=  109 fps= 12 q=30.0 size=     123kB time=00:00:08.68 bitrate= 116.0kbits/frame=  109 fps= 11 q=30.0 size=     123kB time=00:00:08.68 bitrate= 116.0kbits/frame=  109 fps= 11 q=30.0 size=     123kB time=00:00:08.68 bitrate= 116.0kbits/frame=  109 fps= 10 q=30.0 size=     123kB time=00:00:08.68 bitrate= 116.0kbits/frame=  109 fps=9.8 q=30.0 size=     123kB time=00:00:08.68 bitrate= 116.0kbits/frame=  109 fps=9.4 q=30.0 size=     123kB time=00:00:08.68 bitrate= 116.0kbits/frame=  109 fps=9.0 q=30.0 size=     123kB time=00:00:08.68 bitrate= 116.0kbits/frame=  109 fps=8.7 q=30.0 size=     123kB time=00:00:08.68 bitrate= 116.0kbits/frame=  109 fps=8.3 q=30.0 size=     123kB time=00:00:08.68 bitrate= 116.0kbits/frame=  109 fps=8.0 q=30.0 size=     123kB time=00:00:08.68 bitrate= 116.0kbits/frame=  113 fps=8.0 q=28.0 size=     130kB time=00:00:08.84 bitrate= 120.7kbits/frame=  145 fps=9.9 q=23.0 size=     208kB time=00:00:10.12 bitrate= 168.2kbits/frame=  153 fps= 10 q=28.0 size=     262kB time=00:00:10.44 bitrate= 205.3kbits/frame=  153 fps=9.8 q=28.0 size=     262kB time=00:00:10.44 bitrate= 205.3kbits/frame=  153 fps=9.5 q=28.0 size=     262kB time=00:00:10.44 bitrate= 205.3kbits/frame=  153 fps=9.2 q=28.0 size=     262kB time=00:00:10.44 bitrate= 205.3kbits/frame=  153 fps=8.9 q=28.0 size=     262kB time=00:00:10.44 bitrate= 205.3kbits/frame=  153 fps=8.7 q=28.0 size=     262kB time=00:00:10.44 bitrate= 205.3kbits/frame=  153 fps=8.4 q=28.0 size=     262kB time=00:00:10.44 bitrate= 205.3kbits/frame=  153 fps=8.2 q=28.0 size=     262kB time=00:00:10.44 bitrate= 205.3kbits/frame=  153 fps=8.0 q=28.0 size=     262kB time=00:00:10.44 bitrate= 205.3kbits/frame=  153 fps=7.8 q=28.0 size=     262kB time=00:00:10.44 bitrate= 205.3kbits/frame=  153 fps=7.6 q=28.0 size=     262kB time=00:00:10.44 bitrate= 205.3kbits/frame=  153 fps=7.4 q=28.0 size=     262kB time=00:00:10.44 bitrate= 205.3kbits/frame=  157 fps=7.4 q=28.0 size=     282kB time=00:00:10.60 bitrate= 217.7kbits/frame=  184 fps=8.5 q=29.0 size=     346kB time=00:00:17.28 bitrate= 164.1kbits/frame=  196 fps=8.8 q=28.0 size=     384kB time=00:00:17.76 bitrate= 177.0kbits/frame=  196 fps=8.6 q=28.0 size=     384kB time=00:00:17.76 bitrate= 177.0kbits/frame=  196 fps=8.5 q=28.0 size=     384kB time=00:00:17.76 bitrate= 177.0kbits/frame=  196 fps=8.3 q=28.0 size=     384kB time=00:00:17.76 bitrate= 177.0kbits/frame=  196 fps=8.1 q=28.0 size=     384kB time=00:00:17.76 bitrate= 177.0kbits/frame=  196 fps=7.9 q=28.0 size=     384kB time=00:00:17.76 bitrate= 177.0kbits/frame=  196 fps=7.8 q=28.0 size=     384kB time=00:00:17.76 bitrate= 177.0kbits/frame=  196 fps=7.6 q=28.0 size[h264 @ 0x33bd520] mmco: unref short failureime=00:00:52.60 bitrate= 130.5kbits/s dup=0 drop=6
[h264 @ 0x33bd520] illegal short term buffer state detected
[h264 @ 0x32954e0] left block unavailable for requested intra mode at 0 22kbits/s dup=0 drop=6
[h264 @ 0x32954e0] error while decoding MB 0 22, bytestream 14005
[h264 @ 0x32954e0] concealing 1889 DC, 1889 AC, 1889 MV errors in I frame
[h264 @ 0x316d480] Cannot use next picture in error concealmentrate= 137.8kbits/s dup=0 drop=6
[h264 @ 0x316d480] concealing 1629 DC, 1629 AC, 1629 MV errors in P frame
[h264 @ 0x34e5560] concealing 1076 DC, 1076 AC, 1076 MV errors in I frame5kbits/s dup=0 drop=7
[h264 @ 0x316d480] concealing 812 DC, 812 AC, 812 MV errors in I frame34.7kbits/s dup=0 drop=7
[h264 @ 0x316d480] Cannot use next picture in error concealmentrate= 135.1kbits/s dup=0 drop=7
[h264 @ 0x316d480] concealing 359 DC, 359 AC, 359 MV errors in P frame
frame= 2164 fps=5.1 q=28.0 size=    6907kB time=00:06:57.68 bitrate= 135.5kbits/s dup=0 drop=7

Edytowano przez Desavil (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Serwer dedykowany E3 1245v2, 32 GB RAM, 2x 120 GB SSD, 250Mbps, na którym uruchomiony jest praktycznie tylko ten ffmpeg nie wyrabia?

Edytowano przez Desavil (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×