У меня есть куча видеозаписей, сделанных на камеру 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-файл с двумя числами). Как это можно сделать?