Handbrake - это потрясающий инструмент сжатия видео, но он не сохраняет первоначальное время захвата после сжатия видео. Есть идеи, как это исправить?
metadata
video-encoding
handbrake
pixelfreak
источник
источник
Ответы:
Вы можете скопировать существующие метаданные из одного файла в другой без необходимости перекодировать видео с помощью FFmpeg . Это в основном занимает одну секунду. Для этого предположим три файла:
in.mp4
- исходный файл до конвертацииout.mp4
- файл после преобразования Handbrakefixed.mp4
- файл с «исправленными» метаданнымиКоманда FFmpeg для копирования полной записи метаданных в новый файл будет:
Объяснение синтаксиса:
Чтобы сломать это, это делает следующее:
in.mp4
иout.mp4
), которым назначены идентификаторы 0 и 1 соответственно.-map 1
), поэтому мы возьмем уже преобразованные битовые потоки-map_metadata 0
)-c copy
) для копирования всех битовых потоков вместо перекодирования видео.После этого вы можете явно переименовать
fixed.mp4
вout.mp4
.Доказательство:
Например, вот часть записи метаданных моего исходного файла:
Вот файл после преобразования Ручного тормоза:
Вот последний файл после сопоставления метаданных:
Если вы хотите сделать все с FFmpeg:
На самом деле, вам не нужно использовать Handbrake, если вы можете использовать FFmpeg, на который Handbrake все равно полагается. В простейшем случае вы можете сделать ваше преобразование следующим образом:
Это преобразует вход с кодировщиком x264 и аудио AAC в выходной файл, копируя исходные метаданные. Чтобы изменить качество продукции, вы можете:
Подробнее читайте в руководстве по кодированию x264 на вики FFmpeg.
источник
Unknown encoder 'libfaac'
-c:a aac -strict experimental
вместо этого.К сожалению, кажется, что ручной тормоз не может сделать это сам по себе, но, как и в примере с ffmpeg, временные метки могут быть скопированы из оригинала после сжатия с помощью команды
touch
unix:это установит метку времени для сжатого файла так же, как и указанный эталонный файл.
источник
Я нашел более простой способ сделать это, используя другое программное обеспечение под названием
Adapter
: http://www.macroplant.com/adapter/Он не имеет всех расширенных настроек, таких как HandBrake, но он выполняет свою работу (также используя ffmpeg) и сохраняет нужные мне метаданные.
источник
Я использую macOS Yosemite и HandBrakeBatch - используйте его для конвертации файлов, но нажмите в поле «Сохранить даты создания и изменения файлов» в меню «Настройки».
Затем я импортирую видео в Lightroom 5, но они все еще не сохраняют даты создания. Но, самое главное, файлы отображаются в Finder с правильной датой создания. Поэтому я выбрал их все в библиотеке Lightroom → Метаданные (правая колонка диалога) → Время захвата → Изменить на дату создания файла → Изменить все.
У меня было 850 старых семейных видео - мне приходилось делать этот процесс партиями по 100 штук. Сбой ручного тормоза с большим количеством файлов.
источник
Я сделал bash-скрипт, который может пакетно передавать метаданные, используя
touch
как предложено выше. Чтобы это работало, ваши исходные и преобразованные файлы должны находиться в отдельных каталогах, каждый из которых имеет одинаковое количество файлов (в каталогах должны быть только видеофайлы, так как другие файлы / каталоги будут мешать), и в том же порядке. Затем он просто копирует метаданные, и все готово. Сценарий перечисляет все пары файлов, так что вы можете проверить ошибки в конце, если хотите.Код может быть не самым удачным, так как это был мой первый правильный bash-скрипт, но он был довольно быстрым и стабильным для меня, так что вот так:
Для запуска сделать:
sudo bash script.sh /sourcedir /converteddir
источник
Если вы имеете в виду время изменения уровня файла, то у меня возникла та же проблема, и я смог восстановить ее с помощью exiftool .
Это берет метаданные и
FileModifyDate
изinput.mp4
и копирует ихoutput.mp4
.Чтобы автоматизировать это, поскольку у меня было большое количество файлов для транскодирования, я создал инструмент под названием Shrinkwrap, который сначала транскодирует с помощью FFmpeg (я отошел от HandBrake из-за необходимости сохранять больше метаданных), а затем восстанавливает метку времени изменения с помощью exiftool.
источник
После долгих поисков я в основном отказался от использования старых видеофайлов с правильной датой создания / изменения, чтобы перезаписать дату создания / изменения моих новых видеофайлов, сжатых вручную. Так как большинство моих видео имеют дату / время в имени файла, я экспериментировал и получил два метода для работы. Первый и лучший способ - использовать метод отметки времени Advanced Renamer, который МОЖЕТ изменить дату изменения файла, создания и доступа к нему, а не только само имя файла. https://www.advancedrenamer.com/download .
Я также нашел скрипт powershell https://www.michaelmiklis.de/set-creation-and-modification-date-from-filename/, который может быть адаптирован программистом для других форматов имени файла / даты. В своем текущем состоянии он работает только в том случае, если имя файла структурировано точно так же, как в этом примере.
К счастью, мое количество видео без даты изменения в имени файла достаточно мало, я могу изменить их вручную, это не займет много времени
Я попытался использовать ffmpeg, но его команда map_metadata изменяет только данные внутри файла, а не дату изменения, созданную самим файлом. Такого рода внутренние метаданные Handbrake уже отлично работают в любом случае.
источник
Программа MyFFmpeg делает это очень хорошо. В его настройках есть выбор Сохранить исходную дату создания / изменения из исходного файла .
Я искал это, потому что у меня есть домашнее видео на сервере Plex, а файлы упорядочены по дате создания, что очень полезно, если вы хотите посмотреть материал определенного года.
К сожалению, это не бесплатный вариант, в настоящее время стоит 20 евро или около 21 США. У них есть пробная версия на 10 использований, прежде чем купить лицензию. Удивило, что некоторые бесплатные графические интерфейсы ffmpeg не имеют или не добавляют эту опцию.
источник
Я пытаюсь сохранить дату создания, в то время как я сжимаю свои невероятно большие видео GoPro MP4 в H.264.
Я нашел программу HandBrakeBatch . Это именно то, что мне нужно, чтобы сжать более 1000 файлов за один раз, сохранив дату создания (метаданные).
Не нашли никаких других программ, способных это сделать. Пробовал с FFmpeg, HandBrake и Wonderful Video Converter, но нет.
источник