2013-11-22 15 views
8

Tôi tương đối mới đối với Python (tôi đã sử dụng MATLAB nhiều hơn). Về cơ bản, tôi muốn có thể tạo và lưu hoạt ảnh. Vì vậy, tôi đã đi và kiểm tra như thế nào nó được thực hiện và thấy điều này: http://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/Sử dụng FFmpeg và IPython

Tôi thẳng sao chép/dán mã trong một máy tính xách tay IPython.

Tôi hiểu rằng ffmpeg phải được cài đặt, mà tôi nghĩ rằng tôi đã làm (theo http://www.wikihow.com/Install-FFmpeg-on-Windows). Đường dẫn là C:/ffmpeg. Nó hoạt động khi tôi thử ffmpeg -version trong dấu nhắc lệnh. Nó cũng hoạt động trong dấu nhắc lệnh của WinPython. Tôi không biết nếu nó giúp, nhưng con đường cho Ipython là: C: \ Users \ Sal \ WinPython-32bit-3.3.2.3 \ python-3.3.2 \ Scripts/

Tuy nhiên, nó vẫn không ' t làm việc. Lỗi được đưa ra là: AttributeError: đối tượng 'str' không có thuộc tính 'saving' Lỗi này xảy ra tại lệnh .save của khóa học. Tôi thậm chí còn cố gắng thêm nội dung bên dưới. Không làm gì thêm. writer = 'ffmpeg'

Tôi đang sử dụng Windows 7, WinPython3.3.

Thank you very much

+2

Đăng phần có liên quan của mã nơi xảy ra lỗi của bạn – SpliFF

+0

Bạn đang sử dụng phiên bản mpl nào? Hỗ trợ nhà văn hoạt hình là (tương đối) mới. – tacaswell

+0

@ Kreger51 Bạn có thành công trong việc lưu hoạt ảnh của mình không? Tôi có một vấn đề tương tự!! Tôi không biết tại sao tôi không thể tạo ra một tập tin avi usinf lệnh 'anim.save ('mymovie.mp4', writer = mywriter)' và tôi nhận được một thông báo lỗi thay vào đó! cảm ơn bạn –

Trả lời

18

tôi đi qua cùng một lỗi chính xác khi tôi bắt đầu làm việc với các hình ảnh động bằng cách sử dụng cùng một ví dụ chính xác để bắt đầu. Trước hết,

Tôi đang sử dụng Windows 7, Python 2.7.6, 1.3.1 matplotlib

Câu trả lời ngắn: Cố gắng thiết lập FFMpegWriter mình bằng cách

mywriter = animation.FFMpegWriter() 
anim.save('mymovie.mp4',writer=mywriter) 

Long trả lời: Tôi là khá chắc chắn rằng có một lỗi trong matplotblib.animation.save có dòng sau

if is_string_like(writer): 

để bắt thứ e trường hợp người dùng xác định nhà văn thực sự không phải là một chức năng nhà văn mà chỉ là tên của nó. Sau đó nó instanciates một thể hiện của nhà văn rằng nếu nó có sẵn

if writer in writers.avail: 
    writer = writers[writer](fps, codec, bitrate, 
           extra_args=extra_args, 
           metadata=metadata 

Tuy nhiên, và đây là lỗi, nếu người dùng định nghĩa nhà văn không có trong writers.avail nó chỉ sử dụng

writer = writers.list()[0] 

mà tự nó trả về một chuỗi với tên của người viết sẽ được sử dụng. Tuy nhiên, chuỗi này là hư không được sử dụng để thực sự instanciate một đối tượng nhà văn!

+1

Câu trả lời ngắn của bạn đã hiệu quả với tôi. Một nhận xét nhỏ: nhất quán với [ví dụ được trích dẫn trong câu hỏi gốc] (http://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/), nó phải là 'hoạt ảnh. FFMpegWriter() 'thay vì' animator.FFMpegWriter() ' – jorgeh

+0

@Sascha Bạn có thể vui lòng chỉ định phương pháp nào là chính xác không? Tôi đã thử một đoạn ngắn (hai dòng ở trên) trong một chương trình để lưu một hoạt ảnh được tạo bằng Python nhưng tôi đã không thành công!Cảm ơn –

+0

@ Strömungsmechanik Nếu bạn đã cài đặt đúng ffmpeg, câu trả lời ngắn sẽ hoạt động. Tuy nhiên, đọc các bài viết khác của bạn về vấn đề hoạt hình của bạn, có vẻ như bạn không gặp vấn đề gì được thảo luận ở đây. Bạn đã thử ví dụ hướng dẫn ở trên chưa? – Sascha

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