Truyền trực tuyến H264 với Logitech C920


13

Tôi có một webcam logitech C920. Nó có khả năng mã hóa trực tiếp video trong H264.

Tôi muốn tái tạo những gì đã được thực hiện với Beaglebone, nhưng sử dụng Raspberry Pi: gửi luồng H264 vào mạng . Raspberry Pi sau đó chỉ ở đây để đóng gói luồng trong RTP, việc nén video được thực hiện bởi chính webcam. Chế độ H264 được thi hành bằng video4linux.

Cho đến nay, và nếu tôi sử dụng một máy tính phổ biến với phiên bản Ubuntu mới nhất, nó sẽ hoạt động bằng cách sử dụng VLC làm máy chủ hoặc GStreamer. Chẳng hạn, nếu tôi khởi chạy trên Raspberry Pi, máy chủ VLC sử dụng lệnh:

cvlc --sout=#rtp{sdp=rtsp://:8554/test} 'v4l2:///dev/video0:chroma=H264:width=800:height=600:fps=30'

... Và sau đó nếu tôi đọc luồng bằng VLC trên một máy tính khác, tất cả đều đúng.

Tuy nhiên, nếu tôi sử dụng Pi mâm xôi để gửi luồng video, kết quả khá kém. Rất nhiều rác trong hình ảnh ngay khi một cái gì đó di chuyển. Các phím hình ảnh được nhận tốt sau mỗi 10 giây, nhưng trong khi đó, nó không đủ tốt so với luồng từ một máy tính thông thường.

Tôi cũng đã thử phương pháp được mô tả cho xương beagle với tiện ích "chụp" được cung cấp : ok nếu tôi phát trực tiếp từ máy tính thật, cùng một vấn đề rác nếu tôi phát trực tuyến từ Raspberry Pi.

Đây không phải là vấn đề về mạng: Tôi đã thực hiện một số kiểm tra mạng với Wireshark và số liệu thống kê của VLC, tôi không bị mất gói. Tôi đã thử với Raspbian và Arch Linux cho Raspi (guxer 0.10 trong raspbian, guxer 1.0 trong Arch Linux).

Tôi không biết nó có liên quan hay không, nhưng tôi cũng đã thử nghiệm với phiên bản hỗ trợ phao mềm của Raspbian. Một bản cập nhật phải được thực hiện trước tiên để sử dụng kernel 3.2; Nhưng cùng một vấn đề, video có một số rác.

Bất kỳ ý tưởng về những gì tôi có thể làm để nâng cao chất lượng video?


Hãy thử giảm tốc độ khung hình. CPU của rPi rất kém, vì vậy tôi đoán việc truyền hình ảnh 800x600 ở 30FPS là quá nhiều. Chỉ có bảng camera rPI mới được kết nối qua đầu nối MIPI / CIS (thay vì USB) phát 1080p ở tốc độ 15-30 FPS.
Matthias

Nó không phải FPS. Pi có thể xử lý HD ở 60FPS mà không gặp vấn đề gì khi sử dụng mô-đun Pi Camera. Nếu máy ảnh Logitech gửi video H264, nó đã được mã hóa và Pi cần phát lại các gói tin .. điều này hoàn toàn có khả năng. Trong thực tế, nó có thể phát lại 6 luồng HD @ 25FPS trước khi phát tối đa. Nó phải là trình điều khiển V4L làm hỏng các gói
Piotr Kula

Tôi biết đó là một chủ đề cũ, nhưng cuối cùng bạn đã tìm thấy một cái gì đó hoạt động? Tôi đang cố gắng làm điều gì đó tương tự và bị mắc kẹt
Ajith

Tôi đã sử dụng một Beaglebone và nó hoạt động tốt hơn. Vấn đề là do trình điều khiển USB không tốt cho RaspberryPi trong Raspbian. Theo như tôi nhớ, sau đó tôi đã thử nghiệm cùng một hệ thống với phiên bản Raspbian sau đó và tôi có ít rác hơn. Tôi có thể thực hiện cập nhật rpi (như đã nói trong một trong những câu trả lời), nhưng tôi không nhớ rõ. Nhưng điều chắc chắn là hiệu suất sẽ tốt hơn sau khi sử dụng hệ thống phần mềm / thao tác được cập nhật.
Vincent Hiribarren

Vincent, tôi đang gặp lỗi 'không thể mở url v4l2'. Là lệnh này bây giờ đã lỗi thời?
dalanmiller

Câu trả lời:


5

Tôi đã có cùng một vấn đề, tìm thấy chủ đề này khi tìm kiếm một bộ mã hóa phần cứng, không phải cho các vấn đề c920.

Tuy nhiên, thực hiện cập nhật chương trình cơ sở cho pi mâm xôi và rác sẽ không còn nữa

$> sudo rpi-update

Bản thân tôi đã tìm thấy giải pháp ở đây: http://wiki.matthiasbock.net/index.php/Logitech_C920,_streaming_H.264#Raspberry_Pi


Để đóng câu hỏi này, tôi chấp nhận câu trả lời đó. Vấn đề là do trình điều khiển USB bị hỏng, có một số mất gói trong giao tiếp USB. Một hệ thống / phần sụn được cập nhật sẽ thực hiện thủ thuật.
Vincent Hiribarren

2

Bạn có thể thử và sử dụng FFMPEG. Nhưng vấn đề là không sử dụng phiên bản kho lưu trữ vì nó bị lỗi thời. Có một phiên bản fork hoạt động thực sự tốt.

Bạn sẽ phải biên dịch nó mất khoảng 5 giờ hoặc tải xuống tệp nhị phân được biên dịch sẵn.

Sau đó, bạn có thể chuyển dữ liệu từ trình điều khiển V4L sang FFMPEG với các cài đặt này. Trường hợp -i "fifo"cần phải là -icaputre luồng đường ống và -fbạn sẽ cần kiểm tra lại cách xuất H264. FLV đóng gói lại thành FLV có thể được phát bằng trình phát HTML.

ffmpeg -y \  
  -f h264 \  
  -i "$fifo" \  
  -c:v copy \  
  -map 0:0 \  
  -f flv "$urllocal"   

hoặc một bản đồ tôi thấy rằng nhắm mục tiêu trực tiếp vào V4L nhưng oyu phải có máy ảnh ở /dev/video* nơi * là 1hoặc nhiều hơn ...

ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 out.avi

các -fký hiệu định dạng đầu ra. Nó không có nghĩa là nó sẽ chuyển mã nó như H264 sang FLV chỉ được bọc trong các định dạng FLV. sau đó thay đổi địa chỉ để trình phát VLC của khách hàng của bạn. ví dụ-f mpegts udp:192.168.1.19:1234

VLC dường như không hoạt động quá tốt trên Pi. Tôi đã rất ít thành công khi đẩy mô-đun Pi cmaera sang PC bằng UDP. Nó đã làm việc nhưng nó không ổn định.

Bạn cũng có thể xem cài đặt nginx với mô-đun rtmp hoạt động điều trị. Nhìn vào hướng dẫn này nhưng bạn sẽ cần phải điều chỉnh các thiết lập một chút. Sau đó, bạn kết nối trình phát VLC của mình với luồng nginx-rtmp và nó sẽ hoạt động như một bùa mê.


1
Phiên bản ngã ba nào là hoạt động tốt?
Brian

1

Điều này dường như làm việc cho tôi @ ít nhất ... cvlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout="#transcode{vcodec=h264,vb=800,scale=1,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{sdp=rtsp://:8554/live.ts}" -I dummy


0

Hãy thử với bộ đệm lớn hơn trên máy khách hiển thị video. Đối với tôi có sự khác biệt lớn giữa bộ đệm 1000ms và bộ đệm 200ms. Bộ đệm 5000ms có vẻ tốt hơn bộ đệm 1000ms.

: bộ nhớ đệm mạng = 2000


Nó sẽ hoạt động với 0 bộ nhớ đệm với sự xáo trộn kỳ lạ trên mạng LAN. Tôi có mô-đun camera Pi hoạt động như thế mà không có vấn đề gì.
Piotr Kula

0

Tôi đã đăng một giải pháp khả thi trong diễn đàn mâm xôi bằng máy chủ RTSP nhẹ dựa trên live555 chụp H264 từ trình điều khiển V4L2. Nó có sẵn từ github h264_v4l2_rtspserver

Điều này đã được thực hiện cho raspicamera, nhưng nó sẽ hoạt động với bất kỳ thiết bị V4L2 nào cung cấp H264.


-1

Nếu tôi hiểu rõ tình huống của bạn, bạn muốn Raspberry chuyển mã video sang H264? Tôi nghĩ đó là lý do tại sao bạn có hiệu suất kém, vì VLC đang sử dụng mã hóa phần mềm và Raspberryis không mạnh cho nhiệm vụ đó.

Tôi sẽ đề nghị dùng thử với Guxer và gst-omxplugin . Có yếu tố mã hóa video phần cứng giúp máy chủ tốt từ Raspberry của bạn.


1
Như ông nói, máy ảnh Logitech đã cung cấp H.264. Vì vậy, rPi chỉ vận chuyển các khung chứ không thực hiện bất kỳ mã hóa nào.
Matthias

Anh ấy không chuyển mã. Chỉ cần phát lại dữ liệu. Như trong nó sử dụng luồng trực tiếp.
Piotr Kula
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.