Tôi đã phát triển một ứng dụng Windows có thể quay video từ thiết bị bên ngoài bằng DirectShow. Độ phân giải hình ảnh là 640x480 và các video được lưu mà không nén có kích thước rất lớn (khoảng 27MB mỗi giây).Mã hóa video theo thời gian thực trong DirectShow
Mục tiêu của tôi là giảm kích thước này càng nhiều càng tốt, vì vậy tôi đang tìm một bộ mã hóa cho phép tôi nén video theo thời gian thực. Nó có thể là H.264, MPEG-2 hoặc bất cứ thứ gì khác. Nó phải cho phép tôi lưu video vào đĩa và nó sẽ là tốt nhất nếu tôi cũng có thể truyền nó trong thời gian thực qua mạng (Wi-Fi, vì vậy kích thước nên được khoảng 1MB mỗi giây, hoặc ít hơn). Việc giảm chất lượng đáng kể sẽ là không thể chấp nhận được.
Tôi đã phát hiện ra rằng việc nhận được bộ lọc DirectShow phù hợp cho nhiệm vụ này là rất khó khăn. Có thể giả định rằng máy khách là hợp lý hiện đại (CPU 2 nhân nhanh) và có thể sử dụng CUDA/OpenCL. Có một vài ứng dụng cho phép mã hóa video bằng CUDA và cung cấp hiệu suất tốt, tuy nhiên tôi chưa tìm thấy bộ lọc DirectShow thích hợp hoặc API có thể được sử dụng để phát triển một. NVIDIA nvcuvenc.dll dường như có API riêng nên tôi không thể sử dụng trực tiếp. Bất kỳ bộ mã hóa dựa trên CPU nào mà tôi đã tìm thấy đều quá chậm đối với các yêu cầu của tôi, nhưng có thể tôi đã bỏ lỡ một số.
Ai có thể giới thiệu cho tôi giải pháp, tức là bộ mã hóa (trả tiền hoặc miễn phí, có thể được sử dụng trong ứng dụng nguồn đóng) có thể đạt hiệu suất tốt, bất kể nó đang sử dụng CPU/CUDA/OpenCL hoặc DirectCompute? Hoặc có lẽ tôi nên sử dụng một số bộ mã hóa video phần cứng bên ngoài?
Trân trọng,
madbadger
Không biết nếu bạn tìm thấy giải pháp cho điều này, nhưng trong khi đó tôi đã phát triển mã hóa Transport Stream cho sản phẩm của mình - có thể giải pháp như vậy bạn kể từ khi bạn đang nói về streaming qua WiFi –