2013-04-28 16 views
25

Czy można zrzucić nieprzetworzony strumień RTSP do pliku, a następnie odszyfrować plik do odtwarzanego elementu?Jak zrzucić surowy strumień RTSP do pliku?

Obecnie używam FFmpeg do odbioru i dekodowania strumienia, zapisując go do pliku mp4. Działa to doskonale, ale wymaga dużej mocy obliczeniowej i poważnie ograniczy liczbę strumieni RTSP, które mogę odbierać jednocześnie na moim serwerze.

Chciałbym zapisać strumień do pliku bez jego dekodowania i opóźnić część dekodowania do momentu, kiedy plik musi zostać otwarty.

Czy to możliwe?

Próbowałem VLC, który jest jeszcze bardziej obciążający procesor niż FFmpeg. Spojrzałem też na this question, gdzie odpowiedź brzmi: Zrzucanie RTSP do pliku nie jest użyteczne, i this question, gdzie komentarz poniżej pytania mówi: "Nieprzetworzona zawartość RTSP nie nadaje się dobrze do zapisu i odtwarzania ...", co wydaje się wskazywać że jest droga.

Z góry dziękuję!


EDIT Oto polecenia Używam dla FFmpeg:

ffmpeg -i rtsp://@192.168.241.1:62159 -r 15 C:/DB_Videos/2013-04-30 17_18_34.703.mp4

Odpowiedz

34

Jeśli reencoding w linii poleceń FFmpeg, które mogą być powodem, dla którego jest to CPU intensywny. Musisz po prostu skopiować strumienie do pojedynczego kontenera. Ponieważ nie mam Twojej linii poleceń, nie mogę tutaj zaproponować konkretnej poprawy. Twoje acodec i vcodec powinny być ustawione na kopiowanie to wszystko, co mogę powiedzieć.

EDYCJA: Widząc swoją linię poleceń i biorąc pod uwagę, że już ją wypróbowałeś, jest to korzystne dla innych osób, które natrafiają na to samo pytanie. Polecenie:

ffmpeg -i rtsp://@192.168.241.1:62156 -acodec copy -vcodec copy c:/abc.mp4 

nie wykona transkodowania i nie zrzuci pliku w formacie MP4. Oczywiście zakłada to, że treści strumieniowe są kompatybilne z MP4 (co według wszelkiego prawdopodobieństwa są).

+0

Rozumiem, więc dodanie kopii powinno zmniejszyć użycie procesora? Dam ci to. (Dodano moje polecenie FFmpeg do pytania). Dodam również zastrzeżenie, że jestem kompletnym początkującym FFmpeg :) – Felix

+0

Wow, to szalone! Zużycie mojego procesora spadło z 7% do 0.1% !!! Dziękuję bardzo av501! – Felix

+0

Nie ma za co. Zgaduję, że dodałeś -ododec copy -vcodec copy i to powinno dać ci oryginalną otrzymaną treść. – av501

9

pomocą tego polecenia miałem zła jakość obrazu

ffmpeg -i rtsp://192.168.XXX.XXX:554/live.sdp -vcodec copy -acodec copy -f mp4 -y MyVideoFFmpeg.mp4 

z tym, niemal bez zwłoki, mam dobrą jakość obrazu.

ffmpeg -i rtsp://192.168.XXX.XXX:554/live.sdp -b 900k -vcodec copy -r 60 -y MyVdeoFFmpeg.avi 
4

Możesz użyć mplayera.

mencoder -nocache -rtsp-stream-over-tcp rtsp://192.168.XXX.XXX/test.sdp -oac copy -ovc copy -o test.avi 

Kodek "kopia" jest po prostu głupią kopią strumienia. Mencoder dodaje nagłówek i rzeczy, które prawdopodobnie chcesz.

W pliku źródłowym mplayera "stream/stream_rtsp.c" to ustawienie prebuffer_size o wielkości 640k i brak opcji zmiany rozmiaru innego niż rekompilacja. Powoduje to, że zapisywanie strumienia jest zawsze opóźnione, co może być denerwujące dla rzeczy takich jak kamery, ale oprócz tego otrzymujesz plik wyjściowy i możesz odtwarzać go w większości miejsc bez problemu.

Powiązane problemy