Можно ли удалить определенную информацию из файла MP4? В частности, такие вещи, как даты тегирования и кодирования, библиотека и приложение для написания, настройки кодирования ... Клиенту не нужно знать, когда я что-то кодировал или какое программное обеспечение и настройки я использовал.
Мое единственное предположение состояло в том, чтобы повторно преобразовать файл с помощью ffmpeg, но это только избавляет от дат и заменяет информацию о приложении для записи на более общий Lavf.
Кстати, я на Windows, но MacOS и Linux (Ubuntu) тоже подойдут.
Обычный 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,
};
Гьян