파일 이름이 yyyy-MM-dd:HH:mm:ss인 이미지에서 비디오를 만드는 방법

파일 이름이 yyyy-MM-dd:HH:mm:ss인 이미지에서 비디오를 만드는 방법

이미지가 많고(>11.000) avconv를 타임랩스로 사용하여 비디오를 만들고 싶습니다. ffmpeg를 사용하여 나는 다음과 같은 트릭을 수행했습니다.

ffmpeg -r 25 -i "/mnt/stora/dahopi/Pictures/Gartencam/%*.jpg" \
       -vf scale=800:600 -c:v mpeg4 -vtag xvid -qscale:v \
       10 gartencam.avi

그러나 avconv에서는 이것이 작동하지 않습니다. 문제는 파일 선택기인 것 같은데 %*.jpg파일명 수정 없이 영상을 만들 수 있는 기회가 있을지 궁금합니다.

그렇지 않다면 트릭을 수행하는 다른 도구를 알고 있습니까?

답변1

파일 선택기로 인해 발생한 오류에 대해 귀하의 의견이 맞는 것 같습니다. 매뉴얼 인용 :

      For creating a video from many images:

              avconv -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi

      The syntax "foo-%03d.jpeg" specifies to use a decimal number composed of
      three digits padded with zeroes to express the sequence number. It is the
      same syntax supported by the C printf function, but only formats accepting a
      normal integer are suitable.

원하는 경우 0보다 큰 정수에서 시작할 수 있습니다.

  -start_number start
  Specify the first number in the sequence

실제로 이름을 바꿀 필요는 없습니다. 명령을 사용하여 심볼릭 링크를 만들 수 있으며 ln이는 디스크 공간을 거의 차지하지 않습니다.

스크립트를 시도하기 전에 사진을 백업하는 것이 좋습니다

다음 bash 스크립트를 사용해 볼 수 있습니다.

#! /bin/bash
INPUTDIR="$1"
OUPUTDIR="$2"

SORTEDLIST="$(cd "$INPUTDIR" && ls -1 | sort -n)"

COUNT="$(echo -e "$SORTEDLIST"|wc -l)"
echo "Found $COUNT files"

ZEROES="$(echo -e "$COUNT"|wc -c)" # (will count \n)
echo "Using $ZEROES characters to display integers"

COUNTER="0"
for file in $SORTEDLIST; do
    ID="$(printf "%0${ZEROES}d" "$COUNTER")"

    echo "ln -s $INPUTDIR/$file $OUPUTDIR/$ID.jpg"
    ln -s "$INPUTDIR/$file" "$OUPUTDIR/$ID.jpg"

    COUNTER=$((COUNTER + 1))
done

이 스크립트는 모든 이미지가 비디오에 포함하려는 이미지만 포함된 디렉토리 내에 있다고 가정합니다. 그것을 사용하려면:

  • 링크를 포함할 출력 디렉터리를 만듭니다.mkdir output
  • 그것을 실행./script.sh nameofthefoldercontainingyourimages output

관련 정보