Изменить метаданные "Media Duration" в файле MP4
У меня есть несколько видео файлов, которые были преобразованы в MP4, но не совсем правильно. Когда я проверяю один с exiftool, я вижу эти значения метаданных:
Duration : 0:11:23
Track Duration : 0:11:23
Media Duration : 0:04:13
Последний неверен. В VLC media player видео воспроизводятся нормально, но инструмент, который я использую для их воспроизведения в веб-приложении (Flowplayer), серьезно относится к значению "Media Duration" и усекает видео.
Чтобы исправить метаданные я пытался
exiftool -"Media Duration"="0:11:23" video_1.mp4
Но я получил
Warning: Sorry, Media is not writable
Nothing to do.
Судо не помогло. Согласно его справочной странице и веб-сайту, exiftool может читать и записывать метаданные в файлах MP4, но "ExifTool не будет перезаписывать файл, если обнаружит значительную проблему с форматом файла".
Как я могу исправить эти файлы?
РЕДАКТИРОВАТЬ: мне не повезло с ffmpeg или mediainfo.
2 ответа
Я нашел решение. Вместо того, чтобы редактировать метаданные, я перекодировал файлы с использованием ffmpeg таким образом, чтобы видео и аудио контент просто копировался и помещался в новый безошибочный контейнер MP4. Вот команда:
ffmpeg -i video_1.mp4 -vcodec copy -acodec copy video_1_fixed.mp4
Есть две причины, по которым указанная команда exiftool не работала.
Во-первых, «Продолжительность мультимедиа» — это не название тега, а его описание. Из часто задаваемых вопросов по ExifTool № 2.
…по умолчанию он печатает описания, а не имена тегов, для извлекаемой информации. … Обратите внимание, что описания часто содержат пробелы между словами, а имена тегов — никогда. Кроме того, имена тегов всегда английские, независимо от
-lang
параметр . Чтобы напечатать имена тегов вместо описаний, используйте команду-s
вариант при извлечении информации
Вторая проблема заключается в том, чтоMediaDuration
тег не является доступным для записи тегом (см. теги QuickTime MediaHeader ).