2010-07-31 26 views
5

Tôi có một vài tệp chứa video chứa âm thanh và video trong các codec khác nhau. Bây giờ tôi muốn kiểm tra container từ một kịch bản Python để biết codec nào được sử dụng cho audio + video. Đây là trên một hộp linux vì vậy tôi có tất cả các công cụ có sẵn nếu cần thiết.Python: Phát hiện các codec được sử dụng trong vùng chứa video

Tôi nghĩ rằng có thể gstreamer có thể giúp tôi ở đây nhưng tôi không thể tìm thấy API có thể giúp tôi ở đây.

Bất kỳ ý tưởng nào? Tôi cũng mở cho bất kỳ đề xuất, không cần phải là gstreamer miễn là nó là phần mềm miễn phí :-) fs

Trả lời

3

Hãy thử tải xuống nguồn ffmpeg và xem mã nguồn cho các chương trình dòng lệnh của họ. Tôi đã tấn công các tiện ích tương tự trong quá khứ. Tôi không đăng giải pháp của mình vì ffmpeg thích thay đổi API của họ, vì vậy mã cũ của tôi không thể biên dịch được với phiên bản hiện tại. Bạn sẽ muốn làm đủ công việc để tạo ngữ cảnh codec, mà bạn có thể kiểm tra để có được những gì bạn cần.

Một số lựa chọn thay thế khác:


EDIT:

http://code.google.com/p/pyffmpeg/ có thể có những gì bạn muốn (tôi chưa tự sử dụng).

+0

vì vậy điều này có nghĩa là không có thư viện nào có thể trả lại thông tin đó? –

+0

Tôi nhìn pyffmpeg nhưng tôi không thể tìm ra cách lấy thông tin tôi muốn. Ngoài ra nó sẽ không biên dịch trên mac của tôi mà không cần vá rộng rãi từ danh sách gửi thư, và thậm chí sau đó nó chỉ mang lại cho tôi một Bus Error 10 khi tôi cố gắng để mở một tập tin với nó. –

1

Bạn có thể sử dụng decodebin2 trong Gstreamer. Hãy xem TAE để biết các ví dụ về mã.

+0

cảm ơn cho con trỏ, có vẻ như điều này thực hiện khá nhiều những gì tôi cần ... –

6
ffprobe -show_format -show_streams -loglevel quiet -print_format json YOUR_FILE 

Chỉ cần gọi điều này bằng subprocess.check_output và bạn sẽ nhận được mô tả JSON tuyệt đẹp về tệp phương tiện của bạn. Nếu bạn cần nó để lấy dữ liệu từ stdin, hãy thay thế YOUR_FILE bằng đường ống: 0.

ffprobe đi kèm với ffmpeg.

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