Как я могу восстановить метки времени файла видеозаписей с помощью встроенных метаданных?

Если я понимаю правильно, Вы хотите туннель OpenVPN и туннель PPTP, каждый, который направит туннелированный трафик eth0, но каждый со своим собственным IP.

Если я неправ в этом, попытайтесь разъясниться, и я сделаю то, чему я могу для помощи. Но, я полагаю, что этот сценарий сделает то, что Вы просите.

#!/bin/bash

# This enables forwarding in the kernel.
echo 1 > /proc/sys/net/ipv4/ip_forward

# This will allow all return traffic to pass back to the originating socket
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# This permits forwarding traffic that came in either tunnel and bound out eth0.
# Note: This does not explicitly permit forwarding between tunnels.
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT

# This blocks all forwarding that is not explicitly permitted.
# Removing this line would be unsafe.
iptables -A FORWARD -j DROP

# These lines will SNAT the traffic coming from each tunnel to the
# appropriate IP address.
iptables -t nat -A POSTROUTING -i tun0 -o eth0 -j SNAT --to-source 1.1.1.1
iptables -t nat -A POSTROUTING -i ppp+ -o eth0 -j SNAT --to-source 1.1.1.2

Запущение этого скрипта многократно вызовет правила расти. Следующий сценарий сбросит Ваши правила брандмауэра и отключит передачу. Я обычно включаю это в начале своих сценариев брандмауэра, но я не знаю, безопасно ли для Вас сделать так, таким образом, я включал его отдельно.

#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t filter -F
iptables -t nat -F
6
24.02.2014, 05:59
4 ответа
[114849]Спасибо Уоррену за то, что он проинформировал меня о команде

$ wget https://github.com/b4winckler/macvim/tarball/v7.3-53 
$ tar xzf  v7.3-53
$ cd b4winckler-macvim-730064c/
$ ./configure --enable-rubyinterp  
$ make
$ make install (or copy things manually to where you want...)
mediainfo

в своем частичном ответе.

Мне удалось создать команду, которая добилась восстановления временных меток. Она перебирает соответствующие файлы, и для каждого файла [115298]mediainfo[115299] считывает метаданные, [115300]grep[115301] и [115302]sed[115303] выбирает и форматирует метку времени, и [115304]touch[115305] применяет ее.

Часть 'выбирать и форматировать', без сомнения, может быть намного короче/убедительнее; она выглядит громоздкой для меня, но я не очень хорошо разбираюсь в регексах. Тем не менее, команда сработала отлично. Я думаю, что процитировал все правильно, так что она должна работать с любым именем файла. Она может не сработать, если [115306]mediainfo[115307] выводит другой формат, но его легко адаптировать.

Например, вот регекс, который корректно соответствует обоим форматам вывода из моего [115308]*. mp4[115309] таких файлов, как [115310]UTC 2013-11-15 11:36:06[115311], и дополнительно формат примера Уоррена [115312]2014-2-23T09:00:00Z[115313] из [115314]my. mov[115315]:

И кроме [115316]mediainfo[115317], которую мне фактически пришлось установить вручную из-за того, что она не находилась в репозиториях моего дистрибутива (хотя сейчас она выглядит как новая версия), она должна быть достаточно портативной и полезной для других, если они столкнутся с подобной проблемой.

Примечание: Не забудьте проверить часовые пояса. Согласно страницам GNU [115318]info[115319], [115320] touch[115321], [115322] date[115323] и другим утилитам GNU используется переменная окружения [115324]TZ[115325], если она установлена, и 'правила по умолчанию системы', если они установлены иначе. Чтобы увидеть смещение часового пояса, которое будет использоваться, задайте:

Чтобы изменить его, установите переменную окружения [115326]TZ[115327]:

Если временные метки видео корректны и правильно представлены (т.е. значение времени w.r.t.). часовой пояс представляет собой правильную точку времени), то вы должны убедиться, что дата +%:::z[115329] выводит смещение совпадения для часового пояса метки времени, прежде чем запустить [115330] касание -t[115331] над этими файлами (как описано выше). Используйте [115332]stat[115333] для проверки файлов, так как он показывает смещение по времени (как [115334] дата +%:::z[115335]).[114864].

8
27.01.2020, 20:24
[113867] для этого можно использовать [114468]MediaInfo[114469]:[12198]Переход от формата даты к команде [114470]touch[114471] должен быть небольшим вопросом программирования. Лично я бы использовал для этого модуль Perl's [12199]Date::Manip[12200]. Он может [114474]почти [114475] справиться с вышеуказанным форматом; для понимания этого конкретного формата даты требуется 2-х значный месяц с нулевой подкладкой. Исправление, которое требует только тривиального регэкспо, что, конечно же, просто в Perl.[12201]Тот факт, что он печатает, показывает, что он разбирает. Если опустить [114476]0[114477], вы увидите, что он ничего не печатает, потому что [114478]ParseDate()[114479] возвращает [114480]undef[114481].[113872].
2
27.01.2020, 20:24

Следуйте приведенному выше совету Джеймса для MP4 и большинства файлов QuickTime. Для файлов AVI mediainfo будет выводить Mastered date , но этот формат в основном не поддается синтаксическому анализу. Установите ffmpeg , чтобы получить ffprobe (также известный как avprobe ), затем используйте:

для файла в * .avi; do touch -t "$ (ffprobe" $ file "2> & 1 | grep -m 1 'creation_time' | sed -r 's /.* ([0-9] {4}) - ([0-9] { 2}) - ([0-9] {2}) ([0-9] {2}): ([0-9] {2}): ([0-9] {2}). * / \ 1 \ 2 \ 3 \ 4 \ 5. \ 6 / ') "" $ file "; done

Обратите внимание на мод перед подключением к grep . Это потому, что ffprobe использует stderr, а не stdout.

0
27.01.2020, 20:24

exiftool:

exiftool "-CreateDate>FileModifyDate" FILES or FOLDERS

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

exiftool -time:all -s FILE
0
27.01.2020, 20:24

Теги

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