Cách buộc ffmpeg chèn keyframe ở khung đầu tiên khi downsampling một khung hình của video với x264 vcodec


7

Tôi có một video mpeg4 ở 25fps. Video này chỉ chứa một khung hình tĩnh. Tôi đang cố gắng giảm tốc độ khung hình xuống 1 khung hình / giây và chuyển đổi video thành x246 (mp4).

Tôi đã chạy lệnh ffmpeg sau:

ffmpeg -i vid.avi -acodec aac -ar 32000 -ab 64k -ac 2 \
-vcodec libx264 -strict -2 -y -r 1 -force_key_frames 0 vid.mp4

FFmpeg sau đó giảm rất nhiều khung cho đến khi nó chèn khung hình chính đầu tiên. Đôi khi hình ảnh chỉ xuất hiện sau 16 hoặc 20 giây.

Tôi tập hợp ffmpeg không chèn keyframe ngay từ đầu.

Có ai biết làm thế nào tôi có thể lấy khung đầu tiên của vid.avi và sử dụng nó làm khung chính cho vid.mp4 không?


bạn đã thử nó mà không -force_key_frames 0? Cũng có thể muốn thử thay đổi 0 thành 1 để thay vào đó bắt đầu ở khung đầu tiên-force_key_frames 1
Travis Crum

vâng, tôi đã thử mà không có -force_key_frames 0 và với -force_key_frames 1, nhưng điều đó không có ích. Tôi khá bế tắc.
Bodacydo

Là làm chính xác theo cách này yêu cầu? Tôi sẽ đoán một cách hoang dã và giả sử như sau: âm thanh là trọng tâm của video. Hình ảnh không phải là một mối quan tâm lớn. Bạn không thể trích xuất mp3 từ video (dĩ nhiên là không mất chất lượng) và sau đó, có được hình ảnh, thậm chí có thể là ảnh chụp màn hình nếu bạn tuyệt vọng, sau đó tạo video mới trong ffmpeg bằng cách sử dụng mp3 và hình ảnh được trích xuất bằng khung hình / giây được đặt thành 1?
Travis Crum

1
Các force_key_frames cú pháp cho việc sử dụng số khung-force_key_frames "expr:eq(n,0)"
robd

Tôi khá chắc chắn rằng vấn đề gốc ở đây là một cái gì đó khác. Bộ mã hóa luôn bắt đầu với một khung hình chính.
Gyan

Câu trả lời:


6

Để buộc một khung hình chính ở mã thời gian 00: 00: 00.000, bạn nên thử sử dụng cờ sau:

-force_key_frames 00:00:00.000

Điều này làm gì chính xác?
Chiến binh Bob

nó sẽ buộc định vị khung hình chính ở mã thời gian 00: 00: 00.000, được yêu cầu với yêu cầu ban đầu.
Tối đa

Bạn có thể giải thích rõ hơn: Điều này chỉ áp dụng cho x264 hay bất kỳ codec nào không? Thời gian đề cập đến - thời gian tập tin đầu ra là gì? Tức là cho các lớp phủ, làm cách nào tôi có thể đặt một khung hình chính để bắt đầu bất kỳ video được phủ nào? Cảm ơn
Ondra ižka 23/03/19
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.