2009-07-18 31 views
7

Vâng, tình huống đơn giản. Tôi đã tạo khoảng 5000 khung hình dưới dạng tệp PNG mà tôi muốn hiển thị dưới dạng hoạt ảnh trong ứng dụng .NET. Mỗi hình ảnh có kích thước 1920x1080 và tệp PNG sử dụng các kênh alpha để minh bạch (một phần). Và điều đó sẽ phức tạp một chút, bởi vì tôi muốn giữ nó trong suốt. (Nhưng nếu điều đó là không thể, tôi sẽ chỉ thêm một hình nền cho mọi PNG.)Cách tạo phim từ 5000 tệp PNG?

Do số lượng lớn hình ảnh, tôi cần nhiều bộ nhớ. Vâng, một đĩa cứng 1 TB và một hệ thống Intel Xeon 12 GB lõi tứ chạy Vista 64 bit là giải quyết những yêu cầu bộ nhớ đó. Nhưng trừ khi một công cụ được tạo ra để hỗ trợ 64-bit, nó có thể sẽ bị nghẹt thở sau khi tải có lẽ 800 của 5000 hình ảnh. Vì vậy, tôi cần một công cụ có thể làm điều này.

Định dạng phim không quan trọng. Không nén, miễn là chất lượng hình ảnh vẫn ở mức cao. (Và có một lý do tại sao tôi đã sử dụng một độ phân giải khổng lồ như thế!) Mặc dù vậy, việc nén lossless sẽ được ưu tiên hơn. Hệ thống của tôi đủ nhanh để phát lại phim sau đó một lần nữa vì vậy tôi không lo lắng về tốc độ của nó. Tuy nhiên, chất lượng hình ảnh là yếu tố quan trọng nhất ở đây.

Cho đến nay, tôi đã đưa ra hai tùy chọn: 1) Tôi tìm thấy một số công cụ miễn phí có thể xử lý nhiều dữ liệu này. (Miễn phí, hoặc rất rẻ.) 2) Tôi tự viết một công cụ như vậy ...

Tùy chọn 1 là một chút ngoài vị trí ở đây. Bên cạnh đó, là một kỹ sư phần mềm, tay tôi chỉ co giật để tự viết nó! Trong C#, tốt nhất là không có thư viện của bên thứ ba. Vì vậy, câu hỏi của tôi: - Nơi để bắt đầu viết này bản thân mình?


(Trong trường hợp bạn đang tự hỏi, bộ phim này là một hoạt hình mà một người phụ nữ trẻ đang đi bộ trên các đường phố của một số thành phố, đi qua một số dấu hiệu đề cập đến các tính năng của một sản phẩm. dấu hiệu lớn hơn cho thấy tên của sản phẩm. Và đó là một cảnh dài, liên tục, không bị gián đoạn. Và thực sự thú vị để tạo ra quá! Và khoảng 10 GB hình ảnh ...)

Trả lời

9

nếu bạn đang ở trên cửa sổ, bạn cũng có thể xem trong virtualdub. http://www.virtualdub.org/

nó có thể làm AVI từ BMP, PNG, vv

+1

Vâng, nó hỗ trợ 64-bit. :-) Tải xuống? Kiểm tra! Cài đặt, dựng lên? Kiểm tra! Đang chạy? Kiểm tra! Convertion đã thành công? VÂNG! Và với sourcecode có sẵn, do đó, giải pháp hoàn hảo. :-) –

+0

Tôi thứ hai này; công cụ này là tuyệt vời để làm cho bất kỳ tập hợp các hình ảnh vào một video. Cài đặt ffdshow và sau đó bạn có quyền truy cập bộ mã hóa H.264 và các bộ lọc khác sẽ hoạt động với chất lượng tốt cho tốc độ bit cao. –

+0

Tôi không thể sử dụng chương trình này để đọc thư mục 5000 hình ảnh và tạo video !! – arod

9

FFMPEG có khả năng tạo phim nộp từ một loạt các tập tin hình ảnh, liên kết này để thủ của họ cho thấy một ví dụ:

http://ffmpeg.org/ffmpeg-doc.html#SEC5

đối với việc tạo ra các tập tin phim programaticcaly với không có thư viện của bên thứ ba ... điều đó sẽ khó hơn một chút. Nhiều định dạng phim cực kỳ phức tạp và tạo một định dạng phim không có thư viện hiện có sẽ khá đau (trừ khi tôi hiểu sai câu hỏi của bạn và bạn không thực sự hỏi về cách tạo bộ mã hóa thực)

Nếu tôi không hiểu sai câu hỏi của bạn, thực hiện đơn giản codec codec dựa trên YUV có thể thực hiện được. HuffYUV là một trong những tôi biết rằng có thể không quá khó khăn.

+0

Tôi không quá thích MPEG vì đây là định dạng nén mất dữ liệu. Tôi muốn có một định dạng phim lossless đầu tiên mà sau đó tôi có thể sử dụng để chuyển đổi sang bất kỳ định dạng nào khác mà tôi muốn. Nên có một định dạng lossless ở đâu đó, đúng không? Không quan trọng nếu bộ phim cuối cùng trở thành 40 GB kích thước hoặc bất cứ điều gì. Tôi chỉ cần có tất cả 5000 hình ảnh trong một định dạng phim không mất dữ liệu. Tuy nhiên, FFmpeg trông đầy hứa hẹn. Bạn không chắc chắn nếu nó có thể xử lý nhiều dữ liệu này, mặc dù. (Không phải nếu nó có thể được biên dịch thành một ứng dụng 64 bit.) –

+0

FFMPEG sẽ không có vấn đề gì với việc xử lý nhiều dữ liệu, nếu bạn đi xuống con đường đó. Ví dụ tôi đã sử dụng nó để mã hóa Giấc mơ của con voi (http://www.elephantsdream.org/) trước đây, có sẵn khoảng 12 GB png mất mát. – Falaina

+2

Ồ, tôi vừa mới nhận thấy bạn muốn có một bộ codec phim không mất mát tốt nhất. FFMPEG hỗ trợ chế độ lossless của x264 (một bộ mã hóa h.264) cũng như một số định dạng YUV (như HuffYUV), cũng không bị mất dữ liệu – Falaina

6

Hai điều:

  • Bạn không sẽ viết một bộ mã hóa video thích hợp của chính mình. Không phải bằng một cú sút xa. Vì vậy, các tùy chọn của bạn là sử dụng lại bộ mã hóa hiện tại hoặc hoàn toàn không sử dụng bộ mã hóa.
  • Không định dạng video nào sẽ giải quyết được sự minh bạch. Hoặc bạn cung cấp cho tất cả các hình ảnh một nền, hoặc bạn sẽ không thể sử dụng một định dạng video hiện có.

Có một vài giải pháp mà mùa xuân đến tâm trí:

Bạn không quan tâm đến kích thước, nhưng bạn làm chăm sóc về chất lượng. Điều đầu tiên tôi sẽ tự hỏi là: bạn có thực sự thực sự không quan tâm đến kích thước? Hầu hết các định dạng video (đặc biệt là H.264) sẽ cung cấp cho bạn chất lượng tuyệt vời ở kích thước tệp tin thấp hơn đáng kể (nghĩ 10x). Bạn sẽ hầu như không thể nói sự khác biệt. Có, nội dung của bạn là HD, nhưng nội dung HD trên TV hoặc Blu-ray cũng được nén (sử dụng H.264 hoặc VC-1) và nó đủ tốt cho mọi người khác. Vì vậy, tôi nghiêm túc xem đây là một lựa chọn, vì nó làm cho phần còn lại dễ dàng hơn rất nhiều.

Nếu muốn, bạn luôn có thể sử dụng định dạng video không bị mất, chẳng hạn như HuffYUV. Điều này ít nhất sẽ cung cấp cho bạn một số nén, đồng thời cắt kích thước của dữ liệu video của bạn xuống một nửa (hoặc nhiều hơn).

Như tôi đã nói, bằng cách sử dụng định dạng video được mã hóa, bạn mất tính minh bạch. Nếu bạn muốn giữ độ trong suốt và bạn vẫn không quan tâm đến kích thước tệp, tại sao không giữ PNG và hiển thị chúng dưới dạng trình chiếu nhanh trong ứng dụng của bạn? Nếu vấn đề duy nhất của bạn với điều này là yêu cầu bộ nhớ của tải tất cả PNG vào bộ nhớ cùng một lúc ... không làm điều đó. Đọc một vài khung hình phía trước (một số lượng cố định hoặc theo như bộ nhớ cho phép), và một khi bạn đã hiển thị một khung, hãy xóa nó khỏi bộ nhớ và đọc một khung mới phía trước. Bằng cách đó bạn nhận được để giữ chất lượng hoàn hảo và yêu cầu bộ nhớ liên tục. Vấn đề duy nhất là đĩa và bộ xử lý của bạn sẽ cần phải có khả năng theo kịp tốc độ đọc 30 PNG mỗi giây (hoặc bất kỳ tốc độ khung hình nào của bạn).

Ngoài ra, nếu 5000 tệp hình ảnh riêng biệt trở nên quá khó sử dụng, bạn có thể gói tất cả chúng ở một số định dạng tệp tùy chỉnh. Một tệp ZIP lưu ý đến một định dạng di động đơn giản hoặc bạn có thể cuộn định dạng của riêng mình.

+0

Vâng, tôi muốn một tập tin tổng thể mà tôi có thể chuyển đổi sang các định dạng phim khác. Vì vậy, tệp chính này cần phải có chất lượng cao nhất có thể. Vì vậy, HuffYUV âm thanh tốt. Nhưng nó cần phải ở lại 1920x1080 và HuffYUV dường như không hỗ trợ điều này. Về tính minh bạch, tôi đã mong đợi rằng điều này sẽ không thể, vì vậy không có vấn đề ở đó. Kích thước sẽ không thành vấn đề vì tệp chính được lưu trữ trên hệ thống của tôi có dung lượng đĩa trống 1 TB. –

2

Bạn có thể làm những gì bạn muốn với bộ mã hóa:

Dưới đây là một liên kết từ tài liệu: Encoding from multiple input image files (JPEG, PNG, TGA, etc.)

Về tính minh bạch: Tôi không nghĩ rằng có một codec video hỗ trợ transparenct, vì vậy bạn không may mắn ở đây ...

+0

Rất hài lòng với VirtualHub. :-) MEncoder có vẻ tốt, nhưng sự cần thiết cho CygWin mà không làm cho tôi hạnh phúc. Và cuối cùng, MEncoder KHÔNG hỗ trợ Windows 64 bit. VirtualHub, vì vậy VirtualHub sử dụng tốt hơn các tài nguyên của tôi. Tuy nhiên, nó trông giống như một lựa chọn tốt. –

+0

Mencoder có thể được biên dịch cho các cửa sổ bản địa với mingw, không có Cygwin là cần thiết. Bạn có thể tìm thấy các cửa sổ mplayer/mencoder ở đây http://oss.netfarm.it/mplayer-win32.php. – Serafeim

1

Hoặc - nếu bạn đang sử dụng Windows - ju st sử dụng Movie Maker.

Nó đòi hỏi khá nhiều RAM và sức mạnh xử lý nhưng trực quan hơn sau đó VirtualDub và cho phép bạn thêm một số hiệu ứng và tiêu đề đơn giản.

+0

Câu trả lời của bạn là quá muộn ... –

+0

Vâng tôi biết nó sẽ không giúp ích cho trường hợp của bạn ;-). Nó có thể có ích trong futre mặc dù :-). – Nux

Các vấn đề liên quan