2013-10-29 12 views
26

Próbuję przekonwertować strumień rtmp na żywo do strumienia hls na bieżąco.W jaki sposób możemy transkodować strumień live rtmp do strumienia hls na żywo za pomocą ffmpeg?

mam jakiś pomysł po przeczytaniu

http://sonnati.wordpress.com/2011/08/30/ffmpeg-%E2%80%93-the-swiss-army-knife-of-internet-streaming-%E2%80%93-part-iv/

jestem w stanie konwertować strumienia RTMP live do HLS ale nie w czasie wykonywania. po uruchomieniu polecenia i przetestowaniu dowolnego pliku hsl (.m3u8 i .ts) nie jestem w stanie go zobaczyć, ale gdy przerywam polecenie i sprawdzam, otrzymuję pliki hls zgodnie z wymaganiami.

Szukałem w Google dla rozwiązania, ale nie jestem w stanie uzyskać właściwej odpowiedzi.

Czy jakiekolwiek ciało może mi pomóc?

z góry dzięki ...

Odpowiedz

-1

Musisz użyć oprogramowania serwera strumieniowego, które spożywa RTMP strumieni i wyjść HLS. Dostępne opcje: Unreal Media Server, Wowza Media Server, Adobe Media Server.

59

Jest to krótki przewodnik dla HLS strumieniowe z dowolnego pliku wejściowego lub strumienia:

śledzę podejścia user1390208, więc używam FFMPEG tylko do wytworzenia strumienia RTMP co mój serwer odbiera następnie dostarczyć HLS. Zamiast Unreal/Wowza/Adobe używam darmowego serwera nginx z modułem rtmp, który jest dość łatwy w konfiguracji. Oto, jak to zrobić w skrócie: Any input file or stream -> ffmpeg -> rtmp -> nginx server -> HLS -> Client lub bardziej szczegółowe:

wejściowy plik wideo lub strumień (http, rtmp, cokolwiek) -> ffmpeg transkoduje na żywo do x.264 + aac, wyjścia do rtmp -> nginx pobiera rtmp i wyświetla HLS użytkownikowi (klientowi). Po stronie klienta można użyć VLC lub cokolwiek innego i połączyć się z plikiem .m3u8 dostarczonym przez nginx.

  • Podążyłem za instrukcją instalacji dla nginx this.
  • This to mój plik konfiguracyjny nginx.
  • ten sposób używam ffmpeg przekodować mój plik wejściowy do RTMP: (! .mkv jest 1080p z dźwiękiem 5.1, w zależności od danych wejściowych, należy użyć niższych bitrate)

    ffmpeg -re -i mydirectory/myfile.mkv -c:v libx264 -b:v 5M -pix_fmt yuv420p -c:a:0 libfdk_aac -b:a:0 480k -f flv rtmp://localhost:12345/hls/mystream; 
    

Skąd masz strumień rtmp?

  • Plik? Wtedy możesz użyć dokładnie mojego podejścia.
  • Dowolny serwer X ze strumieniem Y? Następnie trzeba zmienić polecenie ffmpeg do:

    ffmpeg -re -i rtmp://theServerX/yourStreamY -c:v libx264 -b:v 5M -pix_fmt yuv420p -c:a:0 libfdk_aac -b:a:0 480k -f flv rtmp://localhost:12345/hls/mystream; 
    

    lub jeśli strumień rtmp jest już H.264/AAC zakodowane, można spróbować użyć opcji copy w ffmpeg do przesyłania zawartości bezpośrednio do nginx.

Jak widać w moim pliku config nginx:

  • Serwer rtmp ma "wniosek" o nazwie "HLS". Jest to część opisująca, gdzie nginx nasłuchuje strumienia rtmp ffmpeg i dlatego strumienie ffmpeg do rtmp://localhost:12345/hls/mystream;
  • Mój serwer http ma location /hls. Oznacza to, że w VLC mogę połączyć się z http://myServer:80/hls/mystream.m3u8, aby uzyskać dostęp do strumienia HLS.

Czy wszystko jest jasne? Szczęśliwy streaming!

+2

czy ten strumień http działa dla iPhone'a i Androida ????? –

+0

To bardzo przydatna odpowiedź. – scaryguy

+0

Świetna odpowiedź! Dokładnie to, czego potrzebowałem. –

3

Jako aktualizację tego pytania, udało mi się ukończyć transmisję na żywo z RTMP do HLS bez użycia ffmpeg, jak?

Po prostu używając dokładnie tego samego pliku konfiguracyjnego nginx udostępnionego przez user3069376 i bardzo ostrożnie podchodząc do ścieżek, które generują manifest .m3uh, opcja hls w module RTMP powinna się tym zająć.

chodzi o odtwarzacz wideo na Video.Js pracował jak czar o

+3

Czy możesz rozwinąć więcej lub udostępnić plik conf? – JorgeGarza

13

Spróbuj tego RTMP do HLS ustawienia wiersza poleceń:

ffmpeg -v verbose -i rtmp://<host>:<port>/<stream> -c:v libx264 -c:a aac -ac 1 -strict -2 -crf 18 -profile:v baseline -maxrate 400k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 10 -hls_list_size 6 -hls_wrap 10 -start_number 1 <pathToFolderYouWantTo>/<streamName>.m3u8 

nie mogą być pewne opóźnienie w paszy HLS. Jednak to zadziała.

+0

działa świetnie .. a także działa ze strumienia HLS –

Powiązane problemy