У меня есть вложенные репозитории git, это вызовет проблемы?

Я извлекаю сцены из видео, используя vlc для Linux. Если у вас его нет, используйте

apt-get install vlc

для его установки. После установки вы можете использовать вариант следующей командной строки для извлечения кадра (ов) из вашего видео. Формат изображения по умолчанию - png , и он подходит для моих целей. Если вы настаиваете на gif изображениях, я предлагаю установить imagemagick для преобразования форматов изображений. Вот команда, которая извлекает кадры:

cvlc ${videofile} \
         --video-filter=scene \
         --vout=dummy \
         --start-time=${start-sec} --stop-time=${end-sec} \
         --scene-ratio=1 --scene-prefix=${prefix} \
         --scene-path=${MyStorePath} \
         vlc://quit

где

видеофайл - видео в формате mp4. Возможны и другие форматы, но не проверял

start-sec - это то место, где вы хотите, чтобы захват кадра начинался, в секундах от начала

end-sec - это где вы хотите, чтобы захват кадра закончился в секундах от начала. Должно быть больше start-sec

prefix - это префикс имен файлов для захваченных изображений.

MyStorePath - это путь, по которому вы хотите хранить захваченные изображения.

Эта команда поможет вам определить длину видео:

ffmpeg -i ${vidfile} 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//

вывод находится в формате HH: MM: SS.xx . чтобы преобразовать это в длину видео в секундах, я использую

l=$(ffmpeg -i ${vidfile} 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//)
h=$(echo $l|cut -d: -f1)
m=$(echo $l|cut -d: -f2)
s=$(echo $l|cut -d: -f3|cut -d"." -f1)
(( hh=$h*3600 ))
(( mm=$m*60 ))
(( LengthSeconds=$hh+$mm+$s ))

, на этом этапе вы можете манипулировать переменной LengthSeconds , чтобы автоматически определять время начала и окончания. К сожалению, чтобы моя команда vlc работала, вы должны указать временной интервал, из которого нужно извлекать кадры.

4
15.11.2016, 19:53
1 ответ

Мои первые тесты с вложенными git-репозиториями не вызвали ни одной из этих трех проблем. Вам не нужно добавлять .git в gitignore; содержимое всех каталогов .git игнорируется автоматически.

Остальные файлы (например, в том же каталоге, что и .git) могут быть зафиксированы во внешнем репозитории.

Поэтому я подумал, что etckeeper может отслеживать все файлы, в то время как история подкаталогов может записываться более тщательно в конкретных репозиториях. Эти две истории ничего не будут знать друг о друге.

Я заметил проблему только позже. Когда я фиксирую каталог, который является git-репозиторием и содержит коммиты, и я ещё не фиксировал файлы из этого каталога во внешнем репозитории, то он появляется как подпроект. Содержимое представлено только ID коммита. gitk, похоже, показывает его как Субмодуль.

Это звучит так, как будто git действительно хочет распознать их как git-submodule. Я не особенно понимаю git-submodule, я просто знаю, что у него репутация немного запутанного.

Я также заметил, что файл .etckeeper раздувается файлами из каталогов .git, даже если git использует подмодули.

7
27.01.2020, 20:55

Теги

Похожие вопросы