나는 여기에 이미 가지고 있는 RPI와 카메라 모듈을 사용하여 내 필요에 맞는 완벽한 모바일 웹캠을 만들려고 노력하고 있습니다. 저는 RPI와 "클라이언트"로 사용할 노트북에서 Arch를 실행하고 있습니다. 카메라가 실행 중이고 raspivid
데이터를 어딘가에서 파이프할 수 있으며 앞뒤로 SSH를 통해 연결할 수 있습니다.
이제 로컬 네트워크를 통해 전송하려고 합니다. 이상적으로는 RPI에서 "서버" 스크립트를 시작하고 서버를 다시 종료하기로 결정할 때까지 필요한 만큼 많은 클라이언트를 연결할 수 있습니다. 그리고 이상적으로는 별도의 장치를 보유하고 무선으로 전송하는 데 따른 대기 시간이 거의 감지할 수 없을 것이므로 비디오와 오디오를 보상하고 동기화하려고 노력할 필요가 없습니다. 그래서 제가 이해한 바로는 VLC를 사용하는 것은 불가능합니다. 또한 이상적으로는 "클라이언트"가 스트림을 사용 가능하게 하거나 /dev/video1
다른 방식으로 제공하는 것이 좋습니다. 하지만 현재는 OBS에 넣고 싶습니다.어떻게든.
지금까지 몇 가지 튜토리얼, 특히 관련 튜토리얼을 따라해 보았 netcat
으나 클라이언트에서 스트림을 재생할 수 없는 경우 프로세스가 즉시 중지되거나 연결이 끊어졌습니다.
어디를 살펴봐야 하는지, 어떻게 계획해야 하는지에 대한 조언이 있나요? 동적 클라이언트 연결 해제를 구현하기 위해 미디어 서버와 같은 것을 사용하려고 생각했지만 매우 가벼워야 합니다.
답변1
비디오를 스트리밍하려면 비디오 스트리밍용으로 설계된 프로토콜을 사용하십시오. 이는 UDP 및 멀티캐스트를 의미하므로 원하는 만큼 많은 클라이언트를 연결할 수 있습니다. TCP와 유니캐스트를 사용하면 연결이 끊어지면 중지됩니다.
이러한 프로토콜이 존재합니다.RTTP, 다음과 같은 서버 구현이 존재합니다.아이스 방송. "초경량"은 아니지만 RaspPi에서 제대로 작동합니다.
아니요, 스트림을 원하지 않습니다 /dev/video1
. 대신 멀티캐스트 그룹에 제대로 연결한 다음 네트워크에서 스트림을 읽을 수 있는 클라이언트를 사용해야 합니다.
VLC에 대해 무엇을 알고 있고 왜 불가능한지 잘 모르겠지만 VLC(및 대부분의 다른 비디오 플레이어)는 RTSP 스트리밍용 클라이언트로 잘 작동해야 하며 동기식인 경우 비디오와 오디오를 동기화하는 데 문제가 없어야 합니다. 스트리밍(여기서할 수 있다문제가 발생하는지 여부는 하드웨어가 RaspPi에 어떻게 연결되어 있는지에 따라 다르지만 애초에 오디오 소스를 언급하지 않았습니다.
편집하다
ffmpeg
미니멀리즘을 고수 한다면개울여러 가지 방법이 있지만 관련된 프로토콜, 차이점, 필요한 명령줄 옵션을 이해하는 데 시간을 투자해야 합니다.
편집하다
글쎄, 나는 비디오를 보았습니다 (적어도 처음에는 VLC와 지연으로 인해 비디오 시청을 특별히 좋아하지 않습니다).
틀림없이적절한 인코딩 방법을 사용하는 경우 대기 시간이 많이 발생합니다. 효과적으로 인코딩하려면 꽤 많은 프레임이 필요합니다(그리고 디코딩하는 데에도 동일한 수의 프레임이 필요합니다). 무엇보다도, 아무것도 손실되지 않도록 많은 버퍼링을 수행합니다.
재미삼아 ffmpeg
멀티캐스트 그룹에서 RTP를 사용해 보았는데 대기 시간도 많이 발생했습니다(H264의 경우 약 1~2초, 추가 대기 시간 추가 ffplay
). 대기 시간을 줄이는 것은 그 자체로 과학이며 옵션을 많이 살펴보고 이에 대해 읽어야 합니다. 그러나 지연이 문제를 나타내는 것은 아니며 오히려 그 반대입니다.
따라서 대기 시간이 절대적으로 낮아야 하는 경우 압축, 이미지 크기, 인코딩 품질 및 대역폭을 고려해야 합니다. 아무 것도 도움이 되지 않으면 인코딩 단계를 제거하세요.