소스(이 소스 rtp://@XXXX:Y의 TV 박스 멀티캐스팅)에서 인터넷(제 경우에는 전화기나 LAN에 있는 다른 장치)으로 스트리밍하려고 하는데 인식할 수 없습니다. 내가 사용하는 명령은 다음과 같습니다
ffmpeg -i rtp://@X.X.X.X:Y -vcodec copy -f mpegts udp://127.0.0.1:1234
하지만 예상대로 작동하지 않습니다. 즉, ffmpeg를 실행하는 동일한 컴퓨터에서 vlc를 열고 스트리밍할 수 있지만 동일한 LAN의 다른 컴퓨터에서는 스트리밍할 수 없습니다. 누구든지 나를 도와줄 수 있나요?
감사합니다!
편집: 결국 멀티캐스트 콘텐츠를 클라이언트에 전달하는 "udpxy"라는 소프트웨어 설치 문제를 해결했습니다. 나는 그것을 라즈베리에 설치했고 이 목적에 아주 잘 작동합니다.
모든 설명에 감사드립니다. 제가 하고 싶은 일과 트랜스코더 사용의 한계를 이해하는 데 도움이 되었습니다. ffmpeg를 사용하여 udpxy로 동일한 작업을 수행할 수 있다고 생각하지만 TV 상자 IP를 직접 게시할 수 있습니다.
답변1
지정된 명령에 대해 명령이 실행되는 컴퓨터 127.0.0.1
입니다 . localhost
물론 동일한 컴퓨터에서만 vlc를 열고 스트림을 재생할 수 있습니다.
동일한 LAN에 있는 다른 컴퓨터로 전달하려면 최소한 LAN에 있는 컴퓨터의 IP 주소가 필요합니다.
이 명령을 실행하는 컴퓨터나 전화기 모두 고정된 공용 IP를 갖고 있지 않기 때문에 "인터넷으로 스트리밍"할 수 없습니다. 둘 다 NAT(Network Address Translation) 뒤에도 있습니다. 그래서 당신은 그렇게 할 수 없습니다.
LAN에 있는 경우 "다른 컴퓨터"에서 직접 멀티캐스트 스트림을 사용하는 것을 방해하는 이유는 무엇입니까(결국 그것은 멀티캐스트이고 이것이 멀티캐스트의 목적입니다...)? 좋은 RTP 멀티캐스트 스트림을 오류가 발생하기 쉬운 단일 주소 UDP 패킷으로 변환하는 것은 나에게 이상적인 솔루션이 아닌 것 같습니다...
답변2
이 답변 포인트를 사용하여 문제를 해결하겠습니다.
TV 상자(멀티캐스트) --> ffmpeg(MPEG 전송 스트림으로 멀티캐스트) --> 클라이언트 VLC? (MPEGT 수신)
생각하다:
비디오 스트리밍은 로컬 LAN을 종료하지 않습니다.
MPEG 전송 스트림을 수신하는 클라이언트는 멀티캐스트 스트림에 참여하거나 수신할 수 없습니다.
TV 상자는 MPEG 전송 스트림을 전송할 수 없습니다.
@dirkt가 말했듯이. "좋은 RTP 멀티캐스트 스트림을 오류가 발생하기 쉬운 단일 주소 UDP 패킷으로 변환하는 것은 나에게 이상적인 솔루션이 아닌 것 같습니다..."
UDP를 TCP로 변경하고 로컬 호스트에서 클라이언트 주소로 변경하면 작동합니까?
ffmpeg -i rtp://@X.X.X.X:Y -vcodec copy -f mpegts tcp://192.168.1.100:1234
tcp://192.168.1.100:1234
-- 클라이언트 PC가 mpegts 스트림을 수신합니다.
rtp://@X.X.X.X:Y
--TV 박스(224.0.0.0 - 239.255.255.255)에 의해 전송되는 방송 스트림.
이상적으로는 TV 상자 전송을 mpegts로 변경하거나 클라이언트 수신을 mpegts에서 방송으로 변경하여 중간 ffmpeg 변환을 제거하는 것이 좋습니다.
어휘:
mpegts-- MPEG 전송 스트림. 오류 수정 및 동기화 모드에서 오디오, 비디오 등을 캡슐화합니다...
IP 멀티캐스트-- 하나의 소스 PC와 여러 개의 대상 PC. IPv4 주소 범위: 224.0.0.0 - 239.255.255.255. 그 중 일부는 라우팅, 게이트웨이 등에서 제외됩니다. "클라이언트"는 멀티캐스트 "스트림"에 참여합니다. 일대다. 메시지가 유실되거나 순서에 맞지 않게 전달될 수 있습니다.