webentwicklung-frage-antwort-db.com.de

Wie kann ich einen rohen RTSP-Stream in eine Datei sichern?

Ist es möglich, einen rohen RTSP-Stream in eine Datei zu kopieren und die Datei später in einen abspielbaren Stream zu dekodieren?

Derzeit verwende ich FFmpeg zum Empfangen und Dekodieren des Streams und speichere ihn in einer mp4-Datei. Dies funktioniert einwandfrei, ist jedoch CPU-intensiv und schränkt die Anzahl der RTSP-Streams, die ich gleichzeitig auf meinem Server empfangen kann, erheblich ein.

Ich möchte den Stream in einer Datei speichern, ohne ihn zu dekodieren, und den Dekodierungsteil auf den Zeitpunkt verschieben, zu dem die Datei geöffnet werden muss.

Ist das möglich?

Ich habe VLC ausprobiert, das noch rechenintensiver als FFmpeg ist. Ich habe mir auch diese Frage angesehen, wo in der Antwort steht, dass das Speichern von RTSP in einer Datei nicht sinnvoll ist, und diese Frage , wo der Kommentar unter der Frage lautet: "Roher RTSP-Inhalt" nicht gut zum Speichern und Wiedergeben geeignet ... ", was darauf hinzudeuten scheint, dass es einen Weg gibt.

Danke im Voraus!


[~ # ~] edit [~ # ~] Hier ist der Befehl, den ich für FFmpeg verwende:

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

41
Felix

Wenn Sie Ihre ffmpeg-Befehlszeile neu codieren, ist dies möglicherweise der Grund für die hohe CPU-Belastung. Sie müssen die Streams einfach in den einzelnen Container kopieren. Da ich Ihre Befehlszeile nicht habe, kann ich hier keine spezifische Verbesserung vorschlagen. Dein acodec und vcodec sollte auf kopieren eingestellt sein ist alles was ich sagen kann.

BEARBEITEN: Wenn Sie Ihre Befehlszeile sehen und diese bereits ausprobiert haben, ist dies zum Nutzen anderer, die auf die gleiche Frage stoßen. Der Befehl:

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

wird nicht transcodieren und die Datei für Sie in einem mp4 ausgeben. Dies setzt natürlich voraus, dass die gestreamten Inhalte mit einem mp4 kompatibel sind (was höchstwahrscheinlich der Fall ist).

55
av501

Mit diesem Befehl hatte ich eine schlechte Bildqualität

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

Damit erhielt ich fast ohne Verzögerung eine gute Bildqualität.

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

Sie können mplayer verwenden.

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

Der Codec "copy" ist nur eine blöde Kopie des Streams. Mencoder fügt einen Header und das hinzu, was Sie wahrscheinlich wollen.

In der mplayer-Quelldatei "stream/stream_rtsp.c" ist eine prebuffer_size-Einstellung von 640 KB und keine Option, die Größe zu ändern, sondern neu zu kompilieren. Dies hat zur Folge, dass das Schreiben des Streams immer verzögert wird, was für Dinge wie Kameras ärgerlich sein kann. Außerdem erhalten Sie eine Ausgabedatei, die Sie an den meisten Stellen problemlos wiedergeben können.

6
Tel