ffmpeg для вычисления аудио / визуальной разницы между сжатым и несжатым видео - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь вычислить аудио + визуальную разницу между сильно сжатым видеофайлом и тем, который не был.Я использую каналы, потому что в конечном итоге я хочу, чтобы это взяло src из потока камеры.

Мне удалось получить результаты видео, которые я ищу, но я борюсь со звуком.Я добавил строку, чтобы инвертировать фазу сжатого звука, чтобы, когда они складываются в смеси, они почти исключали друг друга, но этого не происходит.

ffmpeg -i input.avi -f avi -c:v libxvid -qscale:v 30 -c:a wmav1 - | \
ffmpeg -i - -f avi -af "aeval='-val(0)':c=same" - | \
ffmpeg -i input.avi -i - -filter_complex "blend=all_mode=difference" -c:v libx264 -crf 18 -f avi - | \
ffplay -

Я могувсе еще слышу все аудио, когда то, что я должен слышать, это исключительно артефакты сжатия.ТНХ

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

В предисловии, я не уверен, что ваш метод определил бы "артефакты" сжатия звука

Ваша команда не выполняет никакого сравнения звука, она инвертирует только один канал.Кроме того, аудио и видео сжимаются дважды, и кодеки, которые получает последняя команда 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)

. Я также обрежу первый кодированный аудиофрейм, чтобы уменьшить задержку кодировщика, о которой упоминал Пол, и кажется, чторабота здесь.

0 голосов
/ 14 июня 2019

Может быть некоторая задержка, связанная с кодированными аудиосэмплами.Также ваша команда неверна.

...