@dstob에서 언급했듯이 ffprobe
I- 프레임과 관련 정보를 얻는 데 사용할 수 있습니다 . 다운로드 페이지에ffprobe
일부 정적 빌드가 포함되어 있으며 소스에서도 빌드 할 수 있습니다.
이것은 Linux / Unix를 사용한다고 가정합니다.
프레임 및 프레임 유형 추출
ffprobe -select_streams v -show_frames \
-show_entries frame=pict_type \
-of csv bbb480.avi \
| grep -n I | cut -d ':' -f 1
이 grep
명령은 줄을 필터링 I
하고 -n
옵션을 사용하여 색인을 계산합니다 . 이 cut
명령은 출력의 첫 번째 열 (인덱스) 만 선택합니다. 이 인덱스는 0이 아닌 1을 기준으로합니다.
색인을 기반으로 출력 파일 이름 바꾸기
실제로이 색인을 목록으로 파이프 할 수 있습니다.
ffprobe -select_streams v -show_frames \
-show_entries frame=pict_type \
-of csv bbb480.avi \
| grep -n I | cut -d ':' -f 1 > frame_indices.txt
그런 다음 모든 썸네일 목록도 만드십시오.
ls -1 thumbnails*.jpeg > thumbnails.txt
그런 다음이 두 가지를 함께 붙여 넣습니다.
paste thumbnails.txt frame_indices.txt > combined.txt
이제 목록에 썸네일 이름과 색인이 포함됩니다. 이를 기반으로 이름을 변경하십시오.
while read -r thumbnail index; do
newIndex=$(echo $index - 1 | bc) # subtract 1 from the index
mv -- "$thumbnail" "thumbnail-$newIndex.jpeg" # rename file
done < combined.txt
이름을 바꿀 것입니다 위의 thumbnail-01.jpeg
에 thumbnail-0.jpeg
. 출력 인덱스에는 제로 패딩이 없습니다. 5 자리 숫자로 0을 채우려면 다음을 사용하십시오 printf
.
newIndex=$(printf '%05d' $(echo $index - 1 | bc))
Windows에서는 정확히 똑같이 ffprobe
하지만 출력을 다르게 구문 분석합니다. 그래도 이름 바꾸기를 수행하는 방법을 모르겠습니다.