2011-09-11 42 views
22

tôi cần phải tối đa hóa tốc độ trong khi chuyển đổi video sử dụng FFmpeg để H264Tùy chọn đếm luồng trong FFmpeg cho chuyển đổi FASTEST thành h264?

  • Bất kỳ định dạng đầu vào video nguồn
  • máy
  • của người sử dụng có thể có bất kỳ số lượng lõi
  • Power và bộ nhớ tiêu thụ không phải là vấn đề

Tất nhiên, có một loạt tùy chọn s có thể được tinh chỉnh nhưng câu hỏi này đặc biệt về việc chọn tùy chọn -thread <count> tốt nhất. Tôi đang cố gắng tìm số chuỗi chủ đề lý tưởng làm chức năng của

  • không. của các lõi
  • định dạng video đầu vào
  • giá trị thân thiện với h264 có thể?
  • bất kỳ điều gì khác bị bỏ lỡ ở trên?

Tôi biết mặc định -thread 0 tuân theo phương pháp một luồng mỗi lõi được cho là tối ưu. Nhưng tôi không chắc liệu đây là thời gian hay không gian được tối ưu hóa. Ngoài ra, trên testcases nhất định, tôi đã nhìn thấy nhiều chủ đề hơn (nói 4 chủ đề trên máy kiểm tra lõi kép của tôi) kết thúc nhanh hơn mặc định.

Bất kỳ hướng nào khác, hãy nói tùy chọn cấu hình w.r.t. chủ đề, giá trị theo đuổi?

+4

Đó là số lần đọc x không-đọc x. – Gp2mv3

Trả lời

1

Nếu 'lõi kép' của bạn có siêu phân luồng, thì 2 lõi có thể chính xác. Không có khả năng đạt được vượt quá số lượng lõi ảo (inc. Hyperthreading), nhưng có lẽ do các vấn đề nội bộ trong FFmpeg nó có thể đúng.

13

Tôi nhận thấy rằng threads không thực hiện tốt công việc sử dụng tất cả các lõi, siêu chủ đề không được sử dụng chút nào. Một giải pháp mà tôi có thể đưa ra là chạy 3 đến 4 quy trình ffmpeg song song, xem: https://superuser.com/questions/538164/how-many-instances-of-ffmpeg-commands-can-i-run-in-parallel/547340#547340 Cách tiếp cận này kết thúc bằng cách sử dụng tất cả các lõi hoàn toàn và nhanh hơn đầu vào đơn, nhiều đầu ra trong một tùy chọn lệnh đơn.

+0

Bạn có khóa một cách rõ ràng 'chủ đề' thành 1 hay bạn để nó ở 0 (tự động hoặc 'tối ưu' như một số gọi nó)? – emkman

0

Tôi đã thử nghiệm kỹ lưỡng với các chủ đề 0, 6, 12, 24 và nó không tạo sự khác biệt về tỷ lệ khung hình, thời gian xử lý tổng thể hoặc sử dụng CPU. Lưu ý hệ thống của tôi cũng có 12 lõi vật lý. Nói chung nó dường như làm một công việc tốt của việc sử dụng sức mạnh xử lý của bạn mà không chỉ định các chủ đề mà 12 lõi của tôi về cơ bản 98-99% được sử dụng trong suốt thời gian trong khi xem trên/màn hình hệ thống.

Tôi ước có một viên đạn ma thuật nhưng hiện tại không có cách nào khác để tăng tốc độ vì ffmpeg hiện được tối ưu hóa rất tốt theo ý kiến ​​của tôi. Cách thay thế duy nhất chỉ đơn giản là để có được sức mạnh tính toán nhiều hơn hoặc để xử lý phân tán.

* Lưu ý rằng tất cả các thử nghiệm của tôi đã sử dụng phiên bản ffmpeg 3.3.1