Có cách nào để phân phối công việc mã hóa x264 trên nhiều máy tính (để tăng tốc độ mã hóa) không?


29

Có ai biết một giải pháp hiện tại, đang hoạt động để mã hóa video x264 trên nhiều máy tính (qua mạng) để tăng FPS mã hóa không?

Brownie điểm cho đa nền tảng và nguồn mở, nhưng để tất cả các bạn đều biết, tôi thường sử dụng Windows.


Các chương trình mà tôi đã nghe nói và tại sao tôi không tin rằng chúng phù hợp:

  • x264farm : Không tích cực phát triển. Giao diện tốt, nhưng không hỗ trợ mã hóa hai lần và không thành công với các bản dựng x264 mới hơn.
  • Thứ tự : Một lần nữa, không được phát triển tích cực, nhưng vấn đề của tôi là nó không hoạt động với các bản dựng x264 mới và rất khó để định cấu hình (đọc: ngẫu nhiên ngừng hoạt động).

Mặc dù tôi hoàn toàn không cần một chương trình đang được tích cực phát triển, tôi muốn một chương trình hỗ trợ mã hóa hai lần và hoạt động với các bản dựng (er) x264 mới .


Thông tin bổ sung : Cho đến nay, tôi đã cung cấp (và trao giải!) Hai tiền thưởng riêng cho câu hỏi này kể từ lần đầu tiên tôi đăng nó cách đây hơn hai năm và tôi vẫn chưa tìm ra giải pháp cho vấn đề này. Những gì tôi đang tìm kiếm về cơ bản là một chương trình đơn giản để cho phép tôi mã hóa video x264 bằng cách sử dụng sức mạnh xử lý của nhiều máy tính được kết nối qua mạng LAN. Hơn nữa, sẽ rất tuyệt nếu nó hoạt động với các bản dựng (er) x264 mới và được hỗ trợ mã hóa hai lần.

Nếu bất cứ lúc nào ai đó có câu trả lời cập nhật, hoặc một giải pháp mới cho vấn đề này, xin vui lòng gửi nó và nó sẽ được xem xét.


Cập nhật năm 2016 :

Sau nhiều kinh nghiệm làm việc với thị giác máy tính / máy móc, tôi nhận ra rằng chi phí liên quan đến lượng dữ liệu / bộ nhớ được chia sẻ lớn và nút cổ chai tiềm năng mà nó thể hiện có thể vượt xa lợi ích tiềm năng.

Mặc dù tôi vẫn thích tìm thứ gì đó cho phép tôi khai thác sức mạnh tính toán nhàn rỗi của một số thiết bị, nhưng bây giờ, bộ mã hóa dựa trên GPGPU hiện đại là cách tiếp cận tốt hơn nhiều nếu bạn cần mã hóa theo thời gian thực / cải tiến. Đây là những gì hầu hết các nền tảng mã hóa video dựa trên đám mây cung cấp (một lựa chọn khác nếu bạn tham gia SaaS hoặc điện toán đám mây), mặc dù ở quy mô lớn hơn.


Vẫn đang làm việc này. x264farm chỉ là trình quản lý kết xuất, có vẻ như bạn sẽ có thể đặt bất kỳ phiên bản nào của x264 mà bạn thích trên máy tính nô lệ. Bạn đã thử điều này, và những lỗi nào bật lên nếu bạn đã làm?
Keck


1
Tôi nhận ra đây là một chủ đề cũ, nhưng tôi nghĩ tôi nên chia sẻ kinh nghiệm cá nhân của mình. Không phân phối một công việc cho nhiều máy, thật lãng phí thời gian, phân phối cho nhiều lõi đã làm giảm hiệu suất và có nhiều bộ xử lý vật lý, sau đó nhiều máy, mỗi máy có vấn đề và độ trễ IO. Điều đó đang được nói, sử dụng nó khi chỉ thực sự cần thiết, nếu có nhiều tệp (công việc), phân phối theo tệp, tôi tin rằng Squeeze có thể phân phối tải trên nhiều máy, nhưng điều đó khá tốn kém.
Shane Hsu

@ShaneHsu cảm ơn bạn đã chia sẻ. Lần đầu tiên tôi viết câu hỏi này hơn bốn năm trước, và vào thời điểm đó, cỗ máy tôi đang sử dụng để thực hiện công việc này gần như không mạnh mẽ như cái tôi có bây giờ, vì vậy nó trở nên có ý nghĩa hơn khi đi theo con đường này. Hôm nay, tôi phải đồng ý với bạn - nếu tốc độ kết xuất trở thành một vấn đề, tốt nhất là giảm toàn bộ công việc cho một máy khác, thay vì chia một công việc thành nhiều phần (và để một ví dụ bộ mã hóa h.264 xử lý bất kỳ mã hóa đa luồng / đa lõi nếu cần thiết).
Đột phá

Tôi đang tìm cách làm điều tương tự, nhưng thật không may, có vẻ như chủ đề này chủ yếu chứa đầy các giải pháp hoặc dự án nửa nướng không còn tồn tại nữa. Mặc dù có vẻ như nhu cầu của bạn để làm điều này đã phai mờ, nhưng nếu bạn có thêm thông tin về các giải pháp có thể kể từ lần cuối bạn cập nhật điều này, xin vui lòng cho tôi biết.
Lockleyu

Câu trả lời:


6

Bạn có thể kết xuất các đoạn riêng biệt của video và sử dụng VirtualDub để ghép tất cả lại với nhau bằng chế độ Sao chép của video (nơi không mã hóa). Nó không phải là mã hóa phân tán thực hay bất cứ thứ gì, nhưng các giải pháp đơn giản nhất đôi khi hoạt động tốt nhất.


5
Một lần nữa, vấn đề duy nhất với điều này là sẽ có sự giảm chất lượng, do vị trí của khung I / B khi kết xuất video. Một thuật toán phát hiện cảnh sẽ cần được sử dụng để xác định vị trí phân tách nó và bằng cách nào đó, bạn sẽ cần phải phân tách video ở chính xác khung hình đó ...
Đột phá

VirtualDub có các biểu tượng "xanh và đỏ" sẽ phục vụ trong phát hiện chuyển đổi cảnh. Nếu bộ nhớ của tôi từ một vài năm trước phục vụ cho tôi một cách chính xác, nó đã hoạt động khá tốt. Nhưng một lần nữa, tôi là một kẻ nghiệp dư khi nói về mã hóa video và video.
Ivan Vučica

AFAIK VirtualDub có lệnh "đi tới khung tiếp theo". Tôi chỉ cần tách nó bằng tay.
Camilo Martin

@BreakENC Vì vậy, tất cả những gì bạn cần là một bộ lọc chia đầu vào video thành các đoạn tại các ranh giới thay đổi cảnh (để sau đó chúng có thể được mã hóa riêng)? Điều đó đủ đơn giản. Có một số vấn đề khác?
GroovyDotCom

Ngoài ra, @GroovyDotCom cũng vậy, tất cả các phần mềm hỗ trợ (ví dụ: máy chủ để khởi tạo bộ lọc tách, phân phối nó cho tất cả các nút máy khách đang chạy bộ mã hóa, xếp hàng công việc, chuyển các tệp trở lại máy chủ chính và hợp nhất lại kết quả) vẫn cần phải được xử lý và điều này vẫn không giải quyết được bất kỳ vấn đề hiệu quả / chất lượng tiềm năng nào với phương pháp mã hóa một video lớn trong các phân đoạn riêng lẻ. Cũng lưu ý rằng câu hỏi này đã gần sáu tuổi vào thời điểm này, vì vậy tôi chắc chắn rất nhiều điều đã thay đổi kể từ đó đối với mã hóa phân tán.
Đột phá

4

Đó là phiên bản beta, nhưng đầy đủ chức năng. Nó không hoàn toàn đơn giản, nhưng nó hoạt động. Nó là cửa sổ dựa và miễn phí.

Thứ tự từ một số người Doom9


2
Tôi cũng thấy điều đó, nhưng hy vọng có thứ gì đó tương đương với x264farm - không có chất lượng nào đạt được với x264farm ... Ngoài ra, dự án đã bị bỏ hoang khá lâu.
Đột phá

1
Ban đầu tôi đã thưởng 50 điểm cho câu trả lời này, vì đó là giải pháp gần nhất tại thời điểm đó . Tuy nhiên, chương trình này đã có một số mất chất lượng so với một bộ mã hóa máy tính đơn. Tôi hy vọng sẽ tránh được các hit về chất lượng.
Đột phá

@BreakENC Điều gì sẽ xảy ra nếu bạn nhắm mục tiêu cao hơn một chút, như nếu nó làm cho nó tệ hơn 10%, làm cho các cài đặt (chi tiết / khung hình / vv) cao hơn 10%?
tobylane

@tobylane, vấn đề là ở vị trí của khung I / B khi kết xuất video. Một thuật toán phát hiện cảnh sẽ cần được sử dụng để xác định vị trí phân tách nó và bằng cách nào đó, bạn sẽ cần phải phân tách video ở chính xác khung hình đó. Tùy thuộc vào tài liệu nguồn, điều này thường không thể thực hiện một cách hoàn hảo và do đó mã hóa toàn bộ video cùng một lúc thường sẽ mang lại chất lượng tốt hơn sau đó hiển thị nó thành từng đoạn.
Đột phá

2
@BreakENC x264 theo mặc định có GOP tối đa 250 khung hình, với chất liệu HD thậm chí còn ít hơn. Nó sẽ đóng GOP đôi khi (trừ khi bạn không chỉnh nó), và sau đó sẽ không giảm chất lượng nếu bạn rạch ngay nơi GOP sẽ kết thúc, thật không may, điều đó không thể đoán trước được. Trong mọi trường hợp, trong một bộ phim dài 1,5 giờ, chia nó thành 6 15 phút. khối ngay tại thay đổi cảnh sẽ không ảnh hưởng đến khả năng nén. Và nó có ích!
Camilo Martin

3

Bạn cũng có thể thử sử dụng phần mềm này, một phần mềm mã hóa song song / phân tán cho các cửa sổ và hoạt động tốt và cũng có quy mô độc đáo.

Hãy thử googling cho bộ mã hóa song song xcode.

Các liên kết này sẽ cung cấp thêm thông tin.

http://superscalar.pbworks.com/


Không liên quan: Việc đặt tên trông có vẻ xé ngay tài liệu Xcode của Apple về cách biên dịch song song hoạt động với Xgrid. (Một IDE so với một bộ mã hóa video)
Chealion

ic, tôi không phải là người dùng mac nhưng bạn nên thử cái này, chỉ hoạt động trên windows. Tôi có một thiết lập với khoảng 10 Ghz công suất xử lý kết hợp và một video dài 90 phút mất trung bình 30-32 phút để chuyển đổi (x.264 / AAC / 1800 kbs vbr / 256 kbs âm thanh).
dxblitzx

Cảm ơn bạn đã phản hồi của bạn. Tôi đã thay đổi điều này thành câu trả lời đúng hiện tại, vì giải pháp này là gần nhất với những gì tôi đang tìm kiếm! :)
Đột phá

2

Đối với người dùng Final Cut Studio (chỉ dành cho máy Mac), thành phần x264 QuickTime hoạt động rất tốt khi được sử dụng với cụm được tạo bằng QMaster. Tải phim của bạn vào Compressor và biến nó đi. Trong các thử nghiệm tôi thấy tốc độ tăng khá, đặc biệt là khi làm việc trên một điểm lưu trữ được chia sẻ.


3
Chết tiệt ... Tôi là người dùng Windows. Điều đó trông khá tuyệt, và tương tự như những gì tôi đang tìm kiếm - tôi chỉ ước nó là đa nền tảng!
Đột phá

2

Đối với Mac OS X 10.5 (tôi không chắc về khả năng tương thích cho 10.6) đã từng có VisualHub , cho phép bạn thiết lập trang trại lưới trên mạng cục bộ của mình. Bây giờ nó đã ngừng và ReduxEncoder xuất hiện dưới dạng thay thế, nhưng dường như tôi không thể tìm thấy các tùy chọn cho điều đó.


2

Tôi là một fan hâm mộ LỚN của Sony Vegas cho chỉnh sửa video Windows ... và có một tính năng gọi là Network Render. :) Yums.

Quy trình làm việc của Sony Vegas

EDIT: Không quá chắc chắn liệu đây có phải là một giải pháp khả thi hay không, nhưng thay vì cố gắng tìm một ứng dụng mã hóa video hỗ trợ kết xuất mạng, tôi đã cố gắng tìm một phần mềm cho phép bất kỳ ứng dụng nào tận dụng tính toán phân tán. Và tôi đã tìm thấy cái này - IAIDataShareServer .

Nó trông khá mạnh mẽ, và các kết quả được đăng mẫu thực sự tuyệt vời. Nếu bạn định dùng thử, hãy cho chúng tôi biết nó hoạt động như thế nào?

EDIT2: IAIDataShareServer dường như chỉ hướng dẫn các máy chạy các tác vụ riêng lẻ. Ở mức độ đó, tôi đã cố gắng tìm nguồn cho các giải pháp điện toán phân tán khác và liệt kê một vài giải pháp đầy triển vọng.

  1. JPPF
  2. XOREAX
  3. DCEZ (Cái này có vẻ tốt)

3
Bạn có chắc chắn về điều đó? forum.creativecow.net/thread/24/895788
Đột phá

1
@BreakENC: hey mate, giải pháp mới có thể tìm thấy. Không được kiểm tra bởi chính tôi mặc dù. Xem câu trả lời chỉnh sửa. Chúc may mắn!
caliban

2
@scopedreams: Tôi đã thấy điều đó và ngay lập tức nghĩ rằng nó hoàn hảo ... Thật không may, chia sẻ dữ liệu phân tán đó chỉ chạy các phiên bản chương trình trên mỗi máy tính được kết nối với nó - hữu ích để chạy nhiều công việc, với mỗi khách hàng giải quyết một công việc tại một thời điểm ... Nhưng trong trường hợp của tôi, tôi muốn chỉ một công việc được tính song song giữa nhiều máy tính.
Đột phá

1
@BreakENC: argh darn, quay lại để truy tìm trang web tôi đoán.
caliban

1
@BreakENC: Cập nhật câu trả lời của tôi để cung cấp danh sách các máy khách phân tán. Một lần nữa, chưa được kiểm tra. Đừng lo lắng về việc chấp nhận câu trả lời của tôi, tôi cũng đang làm điều đó để học một cái gì đó mới cho bản thân mình. :)
caliban

1

thực tế đơn giản là NON của Nhà phát triển thế giới ngày nay phải bận tâm viết và gửi các bản vá máy khách / máy chủ mã hóa chung TCP: IP / UDP cho x264 hiện tại, cho đến ngày 1745, hãy xem x264.nl/

mô hình máy khách / máy chủ chung được hiểu rõ, cũng như cơ sở mã x264 sạch và yêu cầu làm rõ bất kỳ mã x264 nào là một vấn đề đơn giản khi tham gia kênh IRC x264 dev và hỏi, trong vài phút, bạn sẽ thường có khóa x264 Dev hoặc hai câu trả lời truy vấn của bạn về cách phần mã đó hoạt động và thậm chí có ý tưởng thực tế về cách bạn có thể viết lại mã đang phát triển của mình để phù hợp hơn với x264 (và x262 một bộ mã hóa Mpeg2 mới dựa trên khung lớp thế giới x264 đang hoạt động đúng bây giờ) mô hình.

Vì vậy, nếu Nhà phát triển của bạn thì điều tốt nhất bạn có thể làm cho tương lai về chất lượng và nghề nghiệp Mã hóa video phân tán 32/64 bit x264 thực sựviết các bản vá máy khách / máy chủ cơ bản bắt buộc này để tạo một phiên bản của x264 hoặc web / GUI riêng biệt giao diện ứng dụng với mã API máy khách / máy chủ x264 mới này mà bạn viết, để chủ động tìm kiếm và gán và chuyển các phần mã hóa riêng biệt của một video cho bất kỳ mã máy khách x264 được quản lý phù hợp mới mà bạn cũng viết.

máy khách / máy chủ mới của bạn thực sự phân phối các bản vá cơ sở mã hóa thậm chí không cần phải là mã C lớn nhất, cơ bản nhưng hoạt động và đầy đủ chức năng được kiểm tra và sử dụng doom10.org/index.php?action=unread

, vì có một điều mà các nhà phát triển x264 dường như rất thích làm, và đó là lấy mã C chậm hiện có và viết các phiên bản tối ưu hóa của nó, từng phần, nhưng trước tiên bạn cần phải gửi mã beta thực tế (bản vá chào mừng) chi nhánh mới nhất OC

thật đáng để xem xét và thực sự nỗ lực để mã hóa máy chủ x264 này cho nhiều máy khách x264 ngày hôm nay vì x264 chỉ có khả năng mã hóa độ sâu 10 bit (có nghĩa là chất lượng cao Cao, Cao 10, Cao 4: 2: 2 H. 264 hồ sơ chuyên sâu tính toán hiện có sẵn cho mọi người miễn phí với x264) được thêm vào.

để được tối ưu hóa cho tốc độ cao hơn với việc lắp ráp rất sớm http://mailman.videolan.org/pipermail/x264-devel/2010-Oc/10/007858.html

nhưng ngay cả một máy 8 lõi đơn cũng sẽ phải vật lộn để cung cấp đầu ra chất lượng cao nhất trong thời gian hợp lý với 1080P, và ngay sau đó, siêu cao 2K và 4K, v.v. Một hoặc hai bản vá Vì vậy.

Nếu một nhà phát triển của bạn, xin vui lòng không chờ đợi, làm điều đó ngày hôm nay.


Trên thực tế, tôi nghĩ về việc làm này. Vấn đề chính không thực sự là khiến hai máy tính thực hiện các phép tính, mà là chuyển dữ liệu được thiết lập giữa các máy. Việc di chuyển dữ liệu vào và ra RAM trên một máy đơn giản hơn rất nhiều (tuy nhiên nhiều gigabyte mỗi giây), nhưng chậm hơn nhiều trên mạng LAN (tối đa 100 megabyte mỗi giây).
Đột phá

1

Bạn có thể xem qua Cụm mã hóa phương tiện :

Cụm mã hóa phương tiện là giải pháp mã hóa cụm mã nguồn mở đầu tiên được viết bằng C / C ++ cho mã hóa phương tiện phân tán (video và âm thanh).

Media Encoding Cluster là một bộ mã hóa video có thể mở rộng, sử dụng lưới ngang hàng nhẹ để tận dụng sức mạnh xử lý của các PC thông thường cho mục đích phân phối mã hóa video được nén cao, ví dụ MPEG4 và H.264

Nó phân phối Video Chunks qua mạng cho các nút máy khách và song song hóa tác vụ mã hóa cho một tệp trên nhiều hơn một máy tính để giảm thời gian mã hóa trên mỗi tệp.

Một cách tiếp cận khác được cung cấp cho Nvidia bởi Badaboom (39,99 đô la với bản dùng thử), cũng được xem xét tại đây :

Badaboom của Elemental sử dụng giao diện CUDA của Nvidia để thực hiện nhiều công việc khó khăn khi trích xuất DVD bằng cách sử dụng GPU thay vì CPU cũ kỹ của bạn.

Theo cách tương tự, cũng có Avivo Video Converter cho ATI Radeon, được mô tả trong wikipedia , mặc dù có thể phải thực hiện một số thao tác để làm cho nó hoạt động.


@BreakENC: Bạn đã xem những sản phẩm này chưa?
harrymc

1

Mặc dù có thể là một chút gợi ý quá mức, Rhozet Carbon Server có thể kết hợp nhiều phiên bản Bộ mã hóa Carbon cho công việc bạn đã mô tả.

Trang web cho Máy chủ Carbon Rhozet

Nhiều nút Mã hóa Carbon có thể được cấu hình như một trang trại chuyển mã, được điều khiển bởi một hoặc nhiều Máy chủ Carbon. Carbon Server cho phép xử lý tự động các tác vụ chuyển mã khối lượng lớn, chuyển đổi dự phòng do các nút Carbon Coder kiểm soát, cũng như quản lý phân phối công việc, ưu tiên công việc, cân bằng tải, chuyển FTP, giám sát trạng thái và thông báo công việc.

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.