Tôi muốn tạo một trình phân tích cú pháp cho đầu ra ffmpeg. Nhưng khi chạy ffmpeg chỉ chỉ quaC# Process.Start() chậm hơn bảng điều khiển
strCmdText = "-y -i \"" + path + "\"";
strCmdText += " -async 1 -vf yadif -c:v libx264 -b:v 1024k -r 30 -bf 1 -an nul.avi";
Process.Start(new ProcessStartInfo("lib\\ffmpeg.exe", strCmdText));
nó chậm hơn so với bắt đầu nó trong một lô 2/3:
set FFMPEG="ffmpeg\ffmpeg.exe"
%FFMPEG% -y -i %1 -async 1 -vf yadif -c:v libx264 -b:v 1024k -r 30 -bf 1 -an -pass 1 nul.avi
Chạy trong C# nó có một fps-tốc độ 130 (CPU: 100%) , nhưng chạy nó với hàng loạt nó có 400 khung hình/giây (CPU 75%).
Theo cả hai cách, RAM sử dụng và giống nhau, #Handels và #Threads. Đặt mức độ ưu tiên của quy trình thành Cao/Trực tiếp sẽ không khắc phục điều này cũng như không chạy quy trình trong một chuỗi riêng biệt.
Điều này có bình thường hay không?
Bạn (hoặc người khác) có xác định mối quan hệ của bộ xử lý cho quá trình bắt đầu của bạn (hoặc bất kỳ quy trình gốc nào của nó) không? Sử dụng Process Monitor để tìm hiểu xem đây có phải là trường hợp không. Chỉ chạy ở 75% có thể chỉ ra rằng quá trình này chỉ sử dụng 3/4 lõi có sẵn. –
Dường như bạn có các đối số khác nhau được chuyển đến thực thi ở các vị trí khác nhau. Bạn có thể kiểm tra lại các đối số chính xác không và bạn có sử dụng chính xác cùng một tệp thực thi không? – oleksii