Как объединить и обрезать записи GoPro, используя Bash? - PullRequest
0 голосов
/ 03 мая 2019

У меня есть куча видеозаписей, сделанных на камеру GoPro Hero3. Камера GoPro разделяет записи на куски около 20 минут. Я написал скрипт для перебора всех записей:

#!/bin/bash

STARTFOLDER="/media/users"
PATTERN="GOPR"
MARKER="converted"

FILELIST=$(find "$STARTFOLDER" -type f -name "*$PATTERN*.MP4" ! -name "*$MARKER*")

while read FILEPATH; do
  # New file name
  BN=$(basename "$FILEPATH" '.MP4')
  BP=$(dirname "$FILEPATH")
  NEWFILEPATH="$BP/$BN-$MARKER.MP4"

  # Skip result files
  ISRESULT=$(echo "$BN" | grep -e "$MARKER\\.MP4\$")
  if test -n "$ISRESULT"; then
    echo "..  skipping (is a result file)"
    continue
  fi

  # Skip processed files
  if test -f "$NEWFILEPATH"; then
    echo "..  skipping (result file exists)"
    continue
  fi

  # Process file here
done < <(echo -e "$FILELIST")

Структура папки / media / users выглядит следующим образом:

/media/users
   user1
     data
       GoPro
         GOPR0281-conv.MP4
         GP010281-conv.MP4
         GP020281-conv.MP4
         GP030281-conv.MP4
   user2
     data
       GoPro
         GOPR0282-conv.MP4
         GP010282-conv.MP4
         GP020282-conv.MP4
         GP030282-conv.MP4
         GP040282-conv.MP4

Приведенные выше сценарии повторяются для каждого отдельного файла MP4. Теперь я хотел бы объединить все файлы MP4 в каждом каталоге GoPro в один файл. Это означает, что для user1 должен быть один файл /media/users/user1/data/gopro_merged.mp4, а для user2 должен быть один файл /media/users/user2/data/gopro_merged.mp4 и так далее. Объединение должно быть таким, чтобы никакая информация не терялась, то есть чтобы была непрерывная запись. Как это можно сделать?

Во-вторых, после объединения файлов я хотел бы отрезать определенное количество секунд от начала и конца каждого файла gopro_merged.mp4. Количество, которое нужно вырезать в начале и в конце каждого файла, которое я хотел бы указать в отдельном файле (например, CSV-файл с двумя числами). Как это можно сделать?

...