Удаление информации о кодировке MP4

Можно ли удалить определенную информацию из файла MP4? В частности, такие вещи, как даты тегирования и кодирования, библиотека и приложение для написания, настройки кодирования ... Клиенту не нужно знать, когда я что-то кодировал или какое программное обеспечение и настройки я использовал.

Мое единственное предположение состояло в том, чтобы повторно преобразовать файл с помощью ffmpeg, но это только избавляет от дат и заменяет информацию о приложении для записи на более общий Lavf.

Кстати, я на Windows, но MacOS и Linux (Ubuntu) тоже подойдут.

Ответы (2)

Обычный ffmpeg этого не сделает. Для этого вам понадобится комбинация двух инструментов.

#1 Используйте ffmpeg от direct264, модифицированную версию старой сборки ffmpeg с настраиваемым фильтром для изменения битовых потоков H264. Эта сборка повреждена в большинстве других случаев, поэтому переименуйте ее или не ставьте ее на своем пути.

ffmpeg -i in.mp4 -vcodec copy -acodec copy -vbsf h264_changesps=removesei -map_metadata -1 out.mp4

# 2 Используйте mp4box из пакета GPAC , чтобы удалить метаданные записывающего приложения

mp4box -add out.mp4 -new stripped.mp4

Используйте фильтр битового потока filter_unitsс ffmpeg 4.0 или новее.

ffmpeg -i INPUT -c copy -bsf:v 'filter_units=remove_types=6' OUTPUT

PS

/* NAL unit types */
enum {
    H264_NAL_SLICE           = 1,
    H264_NAL_DPA             = 2,
    H264_NAL_DPB             = 3,
    H264_NAL_DPC             = 4,
    H264_NAL_IDR_SLICE       = 5,
    H264_NAL_SEI             = 6,
    H264_NAL_SPS             = 7,
    H264_NAL_PPS             = 8,
    H264_NAL_AUD             = 9,
    H264_NAL_END_SEQUENCE    = 10,
    H264_NAL_END_STREAM      = 11,
    H264_NAL_FILLER_DATA     = 12,
    H264_NAL_SPS_EXT         = 13,
    H264_NAL_AUXILIARY_SLICE = 19,
};
Да, это теперь прямо возможно.