2013-10-03 16 views
5

Piszę aplikację czatu z połączeniem wideo za pomocą webRTC. Mam dwa zdalne i lokalne numery MediaStream, które chcesz scalić i zapisać jako jeden plik. Tak więc przy otwieraniu pliku zobaczę dużą ramkę wideo (strumień zdalny) i małą ramkę wideo w prawym górnym rogu (strumień lokalny). Teraz mogę nagrywać te dwa strumienie oddzielnie, używając RecordRTC. Jak mogę połączyć je z nodejs? (Brak kodu, ponieważ nie wiem, jak to się robi)Scalanie dwóch strumieni wideo i zapisywanie jako jednego pliku

+1

Nie wiem, co masz na myśli przez „scalić je z nodejs”. Masz na myśli, że chcesz nagrać pojedynczy film pasujący do ramki w klatce, którą widzisz na ekranie? Nie mam nic, o czym mógłbym się przekonać, choć wydaje mi się, że można zhakować coś na płótnie. –

+0

@SamDutton Mam na myśli właśnie to. Myślałem o używaniu płótna, ale nie byłem pewien. Dzięki za sugestię – karaxuna

Odpowiedz

3

Można użyć FFmpeg z -filter_complex, tutaj jest pracowity i przetestowany przykład używając wersji FFmpeg N-62162-gec8789a:

ffmpeg -i main_video.mp4 -i in_picture.mp4 -filter_complex "[0:v:0]scale=640x480[main_video]; [1:v:0]scale=240x180[in_picture];[main_video][in_picture]overlay=390:10" output.mp4 

Więc to, polecenie mówi FFmpeg do zapoznania się z dwóch plików wejściowych, main_video.mp4 i in_picture.mp4, a następnie wysyła informacje do flagi -filter_complex ...

-filter_complex flag bierze (pierwsze wejście, pierwszy utwór wideo) [0:v:0] i skalować ten film, aby być 640x480px i identyfikuje wideo jako [main_video], następnie pobiera [1:v:0] (drugie wejście, ścieżka wideo 0) i zmienia rozmiar wideo na 240x180px na nazwę wideo [in_picture], a następnie łączy oba filmy tworząc nakładkę drugiego na x = 390 y = 10.

Następnie zapisuje wyjście do output.mp4

To jest to, co chcesz?

UPDATE: Zapomniałem dodać, wszystko czego potrzebujesz w węźle jest modułem do uruchomienia FFmpeg, istnieje wiele z nich: https://nodejsmodules.org/tags/ffmpeg

Powiązane problemy