9

Tôi đang cố gắng lấy khung đại diện cho video, để xóa các khung dư thừa có thể xuất hiện trong video. Đây là những gì tôi sử dụng để có được các khung hình.Thay đổi cảnh/phát hiện bắn/trích xuất hình ảnh bằng cách sử dụng ffmpeg từ video

./ffmpeg -i video.mp4 -vf select="eq(pict_type\,PICT_TYPE_I)" -vsync 2 -s 320x240 thumb-%02d.png

Tôi cũng đã cố gắng

./ffmpeg -i video.mp4 -f image2 -vf "select=gt(scene\,.4)" -vsync vfr thumb%04d.png

Vấn đề chính ở đây là mờ. Nếu tôi chỉ lấy mẫu mỗi 5 giây một lần, tôi sẽ không thấy bất kỳ hiệu ứng nhòe nào, tuy nhiên khi sử dụng hai lệnh trên, tôi nhận được rất nhiều mờ.

Các video có thể được tìm thấy ở đây, http://www.cs.umd.edu/~bharat/video.mp4

Để lấy mẫu video mỗi 10 giây, tôi sử dụng như sau:

./ffmpeg -i video.mp4 -r 1/10 filename%03d.jpg

Output sử dụng lấy mẫu bình thường: sampling output

Đầu ra sử dụng lựa chọn: select output

Tuy nhiên, lấy mẫu bình thường có thể không tốt đối với một số video và có thể tạo khung dự phòng. Có cách nào tôi có thể sử dụng một số tùy chọn trong ffmpeg và nhận được khung hình mà không làm mờ này? Nếu lấy mẫu bình thường có thể có được khung hình tốt, nên có khung trong vùng lân cận mà không bị mờ. Tôi đã xem xét các tùy chọn như scenecut trong ffmpeg tuy nhiên tôi không quen với việc sử dụng chúng cho ứng dụng này.

+0

Kết quả này được mong đợi với lấy mẫu khung thông thường. Liệu nó nhất thiết phải là 'ffmpeg'? Có rất nhiều triển khai phát hiện bắn có sẵn miễn phí. – bjou

+0

không nhất thiết, bất cứ điều gì sẽ làm, tôi chỉ cần loại bỏ các khung mờ – Bharat

Trả lời

2

Tôi cũng khuyên bạn nên xem xét các triển khai phát hiện bắn có sẵn miễn phí khác. Ví dụ, một ngưỡng tùy chỉnh của 47 với Johan Mathe của Shotdetect mang lại kết quả như sau (frame đầu tiên mỗi shot): Shot Detection with jmathe's Shotdetect

Tuy nhiên, câu hỏi của bạn dường như để đối phó nhiều hơn với các vấn đề ổn định Video hơn là cảnh thay đổi hoặc phát hiện bắn. Nhòe mà bạn nhìn thấy ở trên cũng như trong OP là "hiện vật" vốn có của video và không phải do thuật toán được sử dụng để cắt hoặc lấy mẫu video. Nếu bạn muốn giảm số lượng chuyển động, bạn nên xem xét this post cũng như xem mô-đun OpenCV's Video Stabilization. Ngoài ra còn có rất nhiều nghiên cứu giải quyết thách thức này bao gồm thisthis.

+0

nhờ có liên kết, tôi hiểu rằng có sự mờ nhạt vốn có trong video, điều đáng ngạc nhiên là ffmpeg chỉ chọn khung mờ khi bạn sử dụng tùy chọn chọn, kết quả của bạn dường như tốt hơn, có lẽ có sự thay đổi tối đa trong các khung được chọn bởi ffmpeg. – Bharat

+0

Tôi không chắc chắn ý của bạn là "biến thể tối đa", nhưng bạn cũng có thể muốn thử nghiệm với khung bạn chọn. Lệnh mà bạn đã chọn chọn I-Frame, nhưng bạn cũng có thể chọn bất kỳ điều nào sau đây: 'I, P, B, S, SI, SP, BI'. – bjou

+0

Tôi có nghĩa là các khung hình quá mờ sẽ khác với khung bình thường và ffmpeg có thể phát hiện nó như là một thay đổi trong ảnh, sẽ rất thú vị khi xem P, khung B cho, cảm ơn lần nữa, tôi không biết chúng tôi cũng có thể chọn các khung khác .Nếu tôi nhớ chính xác thì sẽ có nhiều khung P, B, làm thế nào nó biết được khung P/B nào để chọn – Bharat

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