Bạn đã gặp phải một vụ hack xấu xí trong Live555 , thư viện VLC sử dụng để cung cấp tính năng máy khách RTSP. (Mã máy chủ RTSP của VLC là dành riêng cho VLC.) Hack cố gắng tìm ra IP nào mà máy của bạn dường như sử dụng trên mạng LAN. (Xấu xí như hack, tôi không biết cách nào tốt hơn để Live555 làm điều này.)
Bạn phải mở cổng UDP 15947 trong tường lửa của mình để khắc phục lỗi mà bạn gặp phải. Đó là "cổng thử nghiệm" Live555 sử dụng cho bản hack này.
Làm xong việc đó, bạn cũng có thể phải mở các cổng bổ sung để nhận luồng của mình, tùy thuộc vào cách tường lửa của bạn hoạt động. RTSP chỉ là giao thức điều khiển luồng , không phải là giao thức phân phối luồng . Hãy nghĩ về RTSP là "các nút VCR" cho giao thức phân phối luồng thực tế: phát, dừng, tạm dừng, FF, tua lại .... Máy khách RTSP đàm phán các cổng phân phối luồng với máy chủ như một phần của hành động "phát".
Kết quả cuối cùng là máy khách (VLC trong trường hợp này) sẽ yêu cầu máy chủ gửi phương tiện đến nó trên một cổng cụ thể trong SETUP
lệnh RTSP :
SETUP rtsp://192.168.0.1:8554/42.ts/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/2.0.2 (LIVE555 Streaming Media v2011.12.23)
Transport: RTP/AVP;unicast;client_port=60860-60861
Đó là, VLC đang nói với máy chủ RTSP rằng nó muốn phương tiện được phân phối trên các cổng 60860 và 60861 thông qua RTP. Khách hàng chọn các cổng đó một cách ngẫu nhiên. Nếu tường lửa của bạn chặn chúng, nó sẽ chặn phân phối luồng mặc dù đàm phán RTSP đã thành công.
Trong trường hợp tốt nhất, tường lửa của bạn sẽ không chặn các cổng cao như vậy hoặc nó sẽ có một số tính năng kiểm tra trạng thái cho phép nó bỏ chặn chúng khi thấy cuộc đàm phán RTSP này.
Nếu tường lửa của bạn chặn nó, bạn có thể gỡ lỗi bằng Wireshark . Nó hiểu giao thức RTSP. Nhấp chuột phải vào một gói trong luồng RTSP và nói "Theo dõi luồng TCP". Trong cửa sổ bật lên, tìm SETUP
lệnh RTSP . Sau đó bắt đầu lại Wireshark, lần này tìm kiếm lưu lượng UDP trên các cổng đó. (Tất cả điều này trong khi ứng dụng khách RTSP tiếp tục tải xuống luồng hoặc cố gắng.)