2013-05-04 172 views
7

Tôi đã cố gắng tìm ra cách để dòng máy tính để bàn của tôi (qua mạng LAN) bằng cách sử dụng VLC và để đạt được độ trễ thấp nhất có thể (< 100ms). Mục tiêu là để một máy tính khác nhận được luồng và có khả năng chơi trò chơi trong khi phát trực tuyến (ví dụ: chơi trò chơi từ PC1 trên PC bên cạnh TV).Stream máy tính để bàn trên RTP bằng cách sử dụng VLC với độ trễ thấp nhất có thể

Tôi nên sử dụng cài đặt nào? Tôi đã thử nhiều cách tiếp cận nhưng vẫn chưa thành công.

EDIT: Tôi đang mở để sử dụng một cái gì đó khác với VLC là tốt.

Trả lời

8

Tôi cũng đã thử cùng với VLC và không bao giờ có thể nhận được độ trễ dưới 3 giây. FFmpeg đã làm điều kỳ diệu và cuối cùng cung cấp một độ trễ dưới 1 giây.

mpeg2video và UPD cung cấp kết quả tốt nhất, độ trễ RTP cảm thấy hơi tồi tệ hơn nhưng rất gần. Việc chuyển sang x264 cải thiện chất lượng để trao đổi độ trễ nhiều hơn một chút, nhưng điều đó thực sự phụ thuộc vào bao nhiêu nội dung động và tốc độ của CPU. Tôi chỉ có x264 làm việc với UDP, nhưng phải có một cách để làm điều đó với RTP.

Tôi không chắc nó có khả thi để chơi hay không. Các máy chủ sẽ được theo một khối lượng công việc nặng và độ trễ sẽ được chú ý - ít nhất là trên Linux, không biết về các cửa sổ.

Trên Linux thử một trong các lệnh sau:

$ ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec mpeg2video -b:v 8000 -f rtp rtp://192.168.0.10:1234 

hoặc

$ ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec libx264 -preset ultrafast -tune zerolatency -crf 18 -f mpegts udp://192.168.0.10:1234 

Adjust for độ phân giải màn hình (-s <your resolution>), tốc độ làm tươi (-r <fps>), băng thông (-b:v <bits/s>), chất lượng (-crf 18 hoặc -qp 18, càng thấp càng tốt) và nhắm mục tiêu ip: port.

Nếu đang chạy Windows, hãy sử dụng dshow thay cho x11grab.

Xem bằng cách sử dụng ffplay udp://192.168.0.10:1234 hoặc ffplay sdp://192.168.0.10:1234.

Hãy nhớ rằng không có tùy chọn nào trong số những tùy chọn đó phát trực tuyến. Tôi không thể nhận được độ trễ thấp như vậy khi phát trực tuyến âm thanh. Nó có thể là doable, tôi chỉ không tìm ra cách.

Ứng dụng khách nhạy nhất là ffplay, VLC giới thiệu độ trễ quá nhiều ngay cả khi bộ nhớ cache mạng được đặt thành 0 - với bộ nhớ cache thực sự trở nên tệ hơn vì nó cố gắng 'đồng bộ hóa' luồng quá thường xuyên.

Nếu bạn cần thêm chi tiết, tôi đã thực hiện một số post về các phát hiện của tôi. Hy vọng nó giúp. Tôi đánh giá cao bất kỳ phản hồi nào.^_^

+0

FFmpeg cũng có một số cài đặt mã hóa x264 như "zerolatency -tune" có thể hữu ích ở đây: http://trac.ffmpeg.org/wiki/StreamingGuide#Latency – rogerdpack

+0

Tôi đã truy cập trang web của bạn trước khi chạy qua bài báo. Đối với ý kiến ​​của tôi vlc và ffplay có độ trễ gần như tương tự. – user1767754

+0

Tôi đã cố gắng chuyển tham số độ phân giải như dưới URL nhưng dường như nó không hoạt động, ý tôi là video mp4 đã ghi lại rtsp vẫn ở độ phân giải cao ngay cả khi tôi đã vượt qua 320x240 :( "-t 30 -i \" rtsp : //xxx.xxxxxx.com/2 \ "-s 320x240 -acodec copy -vcodec copy -to" –

Các vấn đề liên quan