В предисловии, я не уверен, что ваш метод определил бы "артефакты" сжатия звука
Ваша команда не выполняет никакого сравнения звука, она инвертирует только один канал.Кроме того, аудио и видео сжимаются дважды, и кодеки, которые получает последняя команда ffmpeg, являются кодеками AVI по умолчанию mpeg4
и mp3
.
Использование
ffmpeg -i input.avi -f matroska -c:v libxvid -qscale:v 30 -c:a wmav1 - |\
ffmpeg -i input.avi -i - -filter_complex "[0][1]blend=all_mode=difference;[1]aselect=gt(n\,0),asetpts=PTS-STARTPTS[1a];[0][1a]amerge,aeval=val(0)-val(1):c=mono" -c:v rawvideo -c:a pcm_s16le -f matroska - |\
ffplay -
Я полагаю, вашаудио моно.Если ваше аудио имеет N каналов, вашему Aeval понадобится N выражений, где Mth выражение будет val(M-1)-val(N+M-1)
. Я также обрежу первый кодированный аудиофрейм, чтобы уменьшить задержку кодировщика, о которой упоминал Пол, и кажется, чторабота здесь.