2013-08-06 28 views
5

Tôi làm cách nào để kiểm tra khoảng thời gian khung hình chính của tệp video?Kiểm tra khoảng khung chính?

tất cả tôi có thể xem trong kết quả ffmpeg là:

Metadata: 
    metadatacreator : Yet Another Metadata Injector for FLV - Version 1.8 
    hasKeyframes : true 
    hasVideo  : true 
    hasAudio  : true 
    hasMetadata  : true 
    canSeekToEnd : true 
    datasize  : 256600272 
    videosize  : 210054362 
    audiosize  : 45214634 
    lasttimestamp : 5347 
    lastkeyframetimestamp: 5347 
    lastkeyframelocation: 256649267 
    Duration: 01:29:07.24, start: 0.040000, bitrate: 383 kb/s 
    Stream #0:0: Video: h264 (High), yuv420p, 720x304 [SAR 1:1 DAR 45:19], 312 kb/s, 25 tbr, 1k tbn, 50 tbc 
    Stream #0:1: Audio: mp3, 44100 Hz, mono, s16p, 64 kb/s 
+0

http://superuser.com/questions/885452/extracting-the-index-of-key-frames-from-a-video-using-ffmpeg –

+0

Cách bạn nhận được 'ffmpeg' để xuất thông tin này vào nơi đầu tiên? Chỉ tò mò thôi. – user3155368

Trả lời

7

Bạn có thể hiển thị các dấu thời gian cho mỗi keyframe với ffprobeawk:

ffprobe -loglevel error -select_streams v:0 -show_entries frame=key_frame,pkt_pts_time -of csv=print_section=0 input.foo | awk -F',' '/^1,/{print $2}' 

Kết quả trong:

0.000000 
2.502000 
3.795000 
6.131000 
10.344000 
12.554000 
16.266000 
17.559000 
... 

Xem ffprobe documentation để biết thêm thông tin.

+0

theo hiểu của tôi, hãy chọn lệnh luồng video đầu tiên phải là -select_streams v: 0, nhưng không phải 0: v: 0. Liệu tôi có sai? – lucky1928

+0

@ lucky1928 Bạn đúng. Tôi đã sửa lỗi đánh máy ('0: v: 0' sẽ là cú pháp trong' ffmpeg'). – LordNeckbeard

+0

Khoảng thời gian khung chính có được bao gồm trong đầu ra này không? Tôi không thể nhìn thấy nó. – user3155368

1

Lệnh sau sẽ cung cấp cho bạn các hiệu số của tất cả các khung hình chủ chốt trong video

ffprobe -show_frames -select_streams v:0 -print_format csv Video.mov 2> /dev/null |stdbuf -oL cut -d ',' -f4 | grep -n 1 | stdbuf -oL cut -d ':' -f1 

Lưu ý rằng lệnh có thể phản ứng một chút muộn. Có sự kiên nhẫn :-)

Lệnh ffprobe cung cấp cho bạn chi tiết cấp khung ở định dạng CSV. Phần còn lại là sự kết hợp thông minh của các lệnh cutgrep.

cut -d ',' -f4 

lọc cột thứ tư - điều này đề cập đến cờ 'key_frame'.

grep -n 1 

chỉ lọc khung hình và hiển thị số dòng của chúng trong nguồn cấp dữ liệu CSV.

Các

stdbuf -oL 

với lệnh cut thao túng các bộ đệm của lệnh cắt.

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