Làm cách nào để buộc Adobe Media Encoder sử dụng 100% CPU và bộ nhớ?


8

Trên máy của tôi, Adobe Media Encoder rất chậm. Phải mất 12 giờ để hiển thị 4 phút video 1080p cho YouTube (video dựa trên dự án Adobe After Effects với tệp MOV gốc và bốn hiệu ứng: đường cong, loại bỏ hạt, mặt nạ unsharp và màu sắc / độ bão hòa.

nhập mô tả hình ảnh ở đây

Tôi nhận thấy rằng nó không sử dụng tất cả bộ nhớ có sẵn, cũng như không cố gắng sử dụng càng nhiều CPU càng tốt. Đây là cách sử dụng thực tế trong quá trình mã hóa:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Có cách nào để tăng tốc quá trình mã hóa bằng cách thuyết phục ứng dụng sử dụng tất cả CPU và tất cả bộ nhớ có sẵn không?

Là một mặt lưu ý, là nó dự kiến sẽ được chậm? Tôi không thể tưởng tượng các công ty làm phim sử dụng nó để mã hóa một bộ phim thường dài hơn 4 phút một chút và có nhiều hơn bốn hiệu ứng cơ bản, thậm chí với cả một trung tâm dữ liệu. Loại bỏ hiệu ứng "loại bỏ hạt" tăng tốc độ mã hóa từ 12 giờ đến 3:30.


1
Hoàn toàn không có lý do gì nó cần tất cả bộ nhớ có sẵn. Mã hóa video là một quá trình tuyến tính để mở bất kỳ khung đầu vào, áp dụng xử lý và sau đó lưu khung đầu ra. Không có lý do gì điều này sẽ chiếm nhiều bộ nhớ vì nó hoạt động như một luồng. Một số bộ nhớ được sử dụng để khớp mẫu, nhưng thậm chí còn khá hạn chế.
AJ Henderson

thử ffmpeg. Phần thưởng cho việc phải học cách sử dụng là nó nhanh hơn bất kỳ bộ mã hóa phương tiện (phần mềm) độc quyền nào tôi từng sử dụng.
stib

thêm bất kỳ loại hiệu ứng nào cần được hiển thị sẽ thêm thời gian vào xuất, một số hiệu ứng sẽ hiển thị theo thời gian thực, nhưng các hiệu ứng khác như "loại bỏ hạt" sẽ phải tham chiếu mọi khung hình trước đó để phù hợp với chúng, điều này sẽ mất thời gian để hoàn thành. Tôi thấy rằng khi tôi đang sử dụng PP, chỉ cần thêm LUT hoặc hiệu ứng đơn giản ngay cả trên máy 8 lõi của tôi với ram 16gb sẽ mất thời gian để kết xuất. Đôi khi bạn chỉ cần mải mê với kết xuất và để nó thực hiện công việc của mình, tôi đã nói rằng phải mất hơn 12 giờ để xuất khẩu nhưng sau khi hoàn thành một phần, nó sẽ giảm xuống một cách ồ ạt khi hiệu ứng kết thúc
Adam Mann Pro

FYI nếu bạn đang xuất một máy tính AE từ AME, bạn không thực sự "mã hóa" tệp để nói, trước tiên bạn sẽ hiển thị nó THÌ mã hóa nó. Sự khác biệt rất quan trọng vì AME có lẽ đang chạy một quy trình con của AE để lấy các khung đó ra, sau đó mã hóa chúng. Vì vậy, cổ chai thực sự là trình kết xuất bên trong của AE hoạt động kém hiệu quả như tôi nghĩ chúng ta đều biết, và chắc chắn không đạt 100% CPU. Đó là lý do tại sao sự xuống cấp làm cho một sự khác biệt lớn như vậy! Và FYI tôi tin rằng Adobe đã chuyển nó sang GPU trong phiên bản trước ...
Spencer

Câu trả lời:


5

Có thể không có cách nào. Dựa trên mô tả của bạn về vấn đề, có vẻ như việc xử lý là phần chậm. Mặc dù bộ mã hóa video có thể thực hiện xử lý đa luồng, nhưng quá trình xử lý hình ảnh bạn đang thực hiện có thể không thực hiện được. Theo mặc định, Premiere luôn thực hiện xử lý song song nhiều nhất có thể đối với tôi và tôi thường thấy nó đạt mức sử dụng CPU 99% trên máy tính để bàn lõi tứ siêu phân luồng của tôi.

Vấn đề rất có thể là một số hiệu ứng của bạn yêu cầu kết quả của khung trước đó để bắt đầu xử lý trên khung tiếp theo. Nếu đây là trường hợp, không có cách nào dễ dàng để phân tích nó qua nhiều luồng và điều đó sẽ không thể đạt được mức sử dụng CPU 100% trên máy tính đa lõi.

Tương tự, RAM sẽ không được dự kiến ​​sẽ mã hóa vì đây là hoạt động truyền phát. Có một số điều có thể cần phải được theo dõi theo thời gian, nhưng đối với hầu hết các phần, đó là một hoạt động truyền phát với dữ liệu đi ra nhanh như vậy, vì vậy không có nhiều tích lũy dữ liệu.

Có hai điều chính có thể cải thiện hiệu suất. Đầu tiên là xử lý GPU. CPU mục đích chung không thực sự lý tưởng cho nhiều tác vụ xử lý âm thanh / video. Chúng được thiết kế để thực hiện nhiều hoạt động có mục đích chung, nhưng không siêu hiệu quả ở các hoạt động cơ bản. GPU, mặt khác, được thiết kế để thực hiện các hoạt động đơn giản rất nhanh. Họ thường có thể giảm các tác vụ xử lý video khá nhiều.

Một cải tiến hơn nữa có thể được tìm thấy trong phần cứng được xây dựng có mục đích. Có thẻ chuyên nghiệp được thiết kế đặc biệt để xử lý video và cung cấp xử lý và mã hóa video theo thời gian thực. Chúng thường được bao gồm trong các máy trạm chỉnh sửa video chuyên nghiệp cao cấp, nhưng giá có thể khá cao. Không có gì lạ khi một máy trạm chỉnh sửa video chuyên nghiệp có thể có được trong phạm vi từ 15.000 đến 20.000 đô la hoặc thậm chí cao hơn, chỉ dành cho phần cứng. Chúng có thể giảm đi rất nhiều nếu bạn không phải chờ đợi kết xuất (tôi làm việc trên hệ thống $ 2,350 cho công việc video của tôi) nhưng chúng cũng có thể rất cao.


4

Tôi không vui khi tôi kết xuất trừ khi tôi thực sự có thể ngửi thấy mùi nhựa cháy, không có gì khó chịu hơn AE nói với bạn rằng kết xuất của bạn sẽ không hoàn thành cho đến khi cái chết nóng của vũ trụ, đồng thời CPU của bạn chỉ vừa đủ toát mồ hôi. Tuy nhiên có một cái gì đó bạn có thể làm về nó.

Sau khi các hiệu ứng đi kèm với trình kết xuất dòng lệnh được gọi là aerender.exe plain ol ' aerender trên mac). Nó nằm trong thư mục chương trình AE. Sử dụng nó là một chút thách thức đối với những người không sử dụng đến - = awesome - = sức mạnh của dòng lệnh, nhưng chắc chắn sẽ rất đáng làm nếu bạn thực hiện một số công việc nặng nề trong After Effects và bạn muốn có thể khai thác tất cả sức mạnh của máy tính của bạn.

Vẻ đẹp của nó là bạn có thể chạy bao nhiêu trường hợp tùy thích. Những gì tôi thường làm là tiếp tục thêm các thể hiện cho đến khi tôi bắt đầu sử dụng ít bộ nhớ. Tôi có một máy lõi vật lý 40 và cần rất nhiều để tối đa hóa CPU nhưng đây là một ảnh chụp màn hình nơi cuối cùng tôi đã quản lý nó. Mỗi một trong những cửa sổ đó là một phiên bản mới của công cụ kết xuất AE:

nhập mô tả hình ảnh ở đây

Trong ví dụ đó, tốc độ trên mỗi khung hình của mỗi trình kết xuất hầu như không giảm so với một trường hợp duy nhất, vì vậy tôi đã đạt được tốc độ tăng khoảng 4000%. YMMV, tùy thuộc vào số lượng lõi và số lượng ram máy của bạn. Tôi đã nỗ lực vì tôi có một dự án liên quan đến các comps rất dài và khá phức tạp. Dự án đơn giản là không được thực hiện nếu không có kỹ thuật này, hoặc tôi sẽ phải đưa nó ra một trang trại kết xuất thương mại.

Tất nhiên, việc tăng tốc đi kèm với một mức giá, đó là một sự gia tăng nhẹ về độ phức tạp của quy trình làm việc của bạn. Bạn cần đặt comps của mình để hiển thị dưới dạng chuỗi hình ảnh và sử dụng cài đặt nhiều máy để mỗi trình kết xuất sẽ tìm kiếm khung không được gửi tiếp theo. Cuối cùng, nếu bạn cần một tệp phim, bạn sẽ phải thực hiện nén, nhưng trong trường hợp của tôi, tôi thường làm chủ chuỗi png hoặc tiff, và sau đó chạy các bản sao được mã hóa h.264 cho máy khách từ máy chủ.

Và bạn cần biết một chút về dòng lệnh. Ngừng tìm kiếm glum đó là một điều TỐT, đó là một điều TỐT.


các cửa sổ

Dòng lệnh powershell mà tôi đã sử dụng trong kịch bản đó là:

for ($i = 0 ; $i -lt 40; $i++ ){
  Start-Process 'C:\Program Files\Adobe\Adobe After Effects <<version>>\Support Files\aerender.exe'-ArgumentList '-project', '"c:\path\to\project.aep"'
  sleep 5;
}

Điều này được thực thi trong một cửa sổ powershell (nhập vào WindowsRvà sau đó gõ powershell.exe ). Đây là ngôn ngữ kịch bản lệnh shell được tích hợp vào các phiên bản Windows hiện đại có thể được sử dụng cho tất cả các loại nội dung.

Mac Sử dụng phiên bản Bash> 3 (shell mặc định trong các phiên bản OSX hiện tại) hoặc thực sự với các shell mát hơn như zsh, bạn có thể sử dụng tập lệnh này:

for i in {1..40}; do
  /Applications/Adobe\ After\ Effects\ CC\ 2017/aerender -project ~/Path/to/myproject.aep &
  sleep 5
done

Kịch bản hoạt động như vậy:

  • bắt đầu một vòng lặp trong 40 lần lặp lại, bạn có thể thay đổi 40 thành bất cứ điều gì bạn nghĩ là số tiền lành mạnh.
  • Sau đó, nó bắt đầu hoạt động như một quy trình mới bằng start-processlệnh trong PS hoặc với &bash, Rõ ràng thay đổi đường dẫn đến aerender.exe / aerender và dự án của bạn thành bất cứ điều gì trên máy của bạn. Một cách nhanh chóng và chính xác để điền vào các đường dẫn với dòng lệnh là kéo các tệp và thư mục vào đó. Ngoài ra, sử dụng các tabđường dẫn để tự động điền giúp tiết kiệm rất nhiều lỗi đánh máy và lỗi chính tả.
  • Cuối cùng, nó ngủ được 5 giây. Tôi thấy rằng việc mở quá nhiều trường hợp quá nhanh là một cách đáng tin cậy để làm mờ màn hình / kernel làm máy tính của tôi hoảng loạn.


Nếu bạn có nhiều comps, bạn có thể kết xuất chúng dưới dạng phim nhưng bắt đầu trình kết xuất mới cho mỗi cái. Nếu bạn gọi aerender.exe như thế này

aerender.exe -project "c:\path\to\proj.aep" -rqindex 3

nó sẽ kết xuất comp thứ ba trên hàng đợi render. Đưa nó vào một kịch bản bạn có thể làm:

các cửa sổ

$numcomps = 12
$projpath= "C:\path\to\project.aep"
for($i=1; $i -lt ($numcomps+1); $i++){
  Start-Process 'C:\Program Files\Adobe\Adobe After Effects <<version>>\Support Files\aerender.exe' -ArgumentList '-project', '$projpath', '-rqindex', '$i'
  sleep 5;
}

Mac

for i in {1..12}; do
  /Applications/Adobe\ After\ Effects\ CC\ 2017/aerender -project ~/Path/to/myproject.aep -rqindex $i &
  sleep 5
done

Điều đó sẽ bắt đầu một cá thể aerender mới cho mỗi comp comp một lần nữa, thay đổi 12 thành tuy nhiên nhiều comps có trong hàng đợi. Lưu ý rằng kỹ thuật này có thể gặp sự cố nếu bạn có nhiều comps trong hàng đợi của bạn nếu bạn sử dụng tất cả bộ nhớ vật lý của mình, mọi thứ sẽ dừng lại khá nhanh. Để giảm số lượng phiên bản, bạn phải kiểm tra xem có bao nhiêu tiến trình đang chạy và chỉ bắt đầu một quá trình mới khi một quá trình chạy kết thúc. Một cách giải quyết đơn giản hơn là tạo ra nhiều bản sao dự án của bạn như bạn muốn có các phiên bản, với hàng đợi kết xuất được phân chia giữa chúng, và sau đó kết xuất chúng đồng thời. Vì vậy, kết xuất luồng một sẽ là kết xuất comps 1,2,3, kết xuất luồng hai sẽ thực hiện 3,4,5, v.v.

Thêm chi tiết ở đây (blog của tôi).


1
bạn là một huyền thoại!
Tony Sepia

đó là những gì tôi tiếp tục nói với mọi người
stib

0

Trong khi câu hỏi này đã được trả lời; đề nghị của tôi:

Sử dụng AfterEffects cho kết xuất của bạn nếu bạn có một hệ thống có số lượng lõi lớn và nhiều RAM.

Máy trạm chính của tôi là Dual E5-2697 v2 (24 Logical / 48 Hyper Threaded Cores); với RAM 128 GB.

Nếu bạn phải làm đơn giản là chuyển mã của một tập tin; hoặc có thể sử dụng Bridge để nhập Dự án PPro của bạn vào AE (việc chặn các chỉnh sửa của bạn sẽ vẫn còn nguyên); tính năng trong Bộ nhớ (Chỉnh sửa -> Tùy chọn) cho phép bạn sử dụng Đa luồng.

Điều đó đang được nói:

Nếu tôi đang làm chỉ là một kết xuất thẳng; hoặc một cái gì đó đơn giản; Tôi có thể sử dụng AE để phân bổ 32 trong số 48 lõi HT của mình; Ngoài ra; Tôi có thể phân bổ 3 GB ram cho mỗi Chủ đề; tùy thuộc vào loại mã hóa tôi đang làm, ở bất kỳ đâu nhanh hơn từ 2 đến 100 lần về mặt hiển thị ngay cả với GPU Dual Titan Black của tôi.

Điều này tất nhiên; chỉ áp dụng nếu bạn có RẤT NHIỀU lõi; và rất nhiều ram ...

Ra mắt; kết xuất qua AME; sẽ bị giới hạn chỉ sử dụng 1 Chủ đề không may; và sẽ dựa vào GPU của bạn trừ khi bạn bị vô hiệu hóa để sử dụng kết xuất phần mềm trong Cài đặt dự án.

Hi vọng điêu nay co ich!


0

Làm cách nào để tăng tốc Media Encoder để sử dụng 100% cpu của bạn? Dưới đây là một ví dụ: Tạo một tệp: settings.ini đặt bên trong nó

[Cài đặt] mode = developer mthread = enable mthreadcount = 3 (đối với máy có 4 lõi 8 luồng, 7) sli = false slimode = all ưu tiên = tỷ lệ cao = low cloud = false loadwhenneeded = true loa = 2

Đặt trong các thư mục thực thi Adobe Premiere, After Effects và Media Encoder.

Đối với một máy bốn lõi / 4 máy như của tôi, điều này khiến Media Encoder chuyển từ 1 lõi sang sử dụng 96% của cả bốn. Bạn phải xem video youtube "Render 300X FASTER | Premiere / After Effects / Media Encoder" Tôi đang sử dụng thành công điều này với các sản phẩm CC 2018.


Wow, bây giờ thật thú vị!
Spencer

0

Đóng After Effects trong khi kết xuất với Media Encoder. Bằng cách đó, việc sử dụng CPU của tôi đã tăng từ 30% đến 60%. Tôi đoán bởi vì Adobe không tiết kiệm năng lượng CPU để hoạt động mô phỏng trong AE.


Tôi tin rằng điều này là do cách năng động mà Adobe phân bổ RAM trong nền. Nó sẽ giới hạn dung lượng RAM trên mỗi tiến trình adobe, để ngăn chặn tràn và không có gì. Vì vậy, bằng cách đóng một ứng dụng Adobe, về mặt lý thuyết bạn sẽ giải phóng thêm RAM cho một ứng dụng khác.
Spencer

0

Tôi có thể đề nghị đây vẫn là một vấn đề 5 năm không! Bạn cần đóng tất cả các ứng dụng Adobe và sau đó mở Media Encoder (nếu đó là nơi bạn kết xuất từ) FIRST, sau đó nó sẽ chỉ định toàn bộ tài nguyên có sẵn cho ứng dụng đó, tôi chưa thấy nó chia sẻ tài nguyên một cách linh hoạt, nó chỉ phân bổ Thời gian CPU theo số lượng ứng dụng mở khi bạn khởi động ứng dụng Adobe (điều này có thể lặp lại, hãy thử mở LR chẳng hạn trước khi kết xuất, nó sẽ chỉ sử dụng 10% CPU - sau đó mở AME trước rồi đến lightroom và bạn sẽ nhận 100%)

Tôi đã tăng gấp 4 lần thời gian kết xuất vì điều này. Hy vọng nó giúp. "Quản lý tài nguyên" của Adobe thật tệ.

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.