Как можно определить повторяющиеся значения при использовании команды ffprobe show_entries?

Как определить, являются ли два потока видео повторяющимися или они представляют собой два отдельных потока? Изначально я отбрасывал повторы в метаданных из-за того, что иногда потоки дублировались в разделе программ, но теперь у меня есть файл с более чем двумя потоками видео и возникает непонимание. Как выяснить, являются ли эти потоки повторами или это действительно два разных потока? Раньше я решал эту проблему прямым подходом, но теперь не могу понять, как быть в этой ситуации.
  • 24 сентября 2023 г. 20:57
Ответы на вопрос 2
Для определения повторяющихся значений при использовании команды ffprobe show_entries, можно использовать фильтры и сравнение значений. Например, вы можете использовать следующую команду для вывода всех повторяющихся значений в разделе потоков видео:

```
ffprobe -v error -show_entries stream=codec_name -of default=nokey=1:noprint_wrappers=1 input.mp4 | sort | uniq -d
```

Эта команда сначала выбирает только кодеки из раздела потоков видео, затем сортирует их и выводит только повторяющиеся значения с помощью команды uniq.

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

Например, вы можете использовать следующую команду для вывода разрешений и битрейтов всех потоков видео в формате JSON:

```
ffprobe -v error -show_entries stream=width,height,bit_rate -of json input.mp4
```

Затем вы можете проанализировать результат и сравнить значения разрешений и битрейтов для каждого потока видео. Если значения различаются, то это два отдельных потока. Если значения совпадают, то это повторяющиеся потоки.
Вроде как обходится через разницу между тегами: v -все все видео, V - видео уже без вложений. Очередность имеет значение, а потому копируется всё и только видео, как указанное исключение, кодируется: 

Где взять индекс $idx? Посмотреть что не является картинкой и выбрать, если там более 1 потока. Очень древние видосы этим грешат. Иначе - выбирать наивысшее разрешение или забить и обработать руками.

Вот только вылез косяк:


"attached_pic": 0 - просто портится метадата выходного файла при копировании потока. Причем mkvToolNix его прекрасно читает и проблем нет. И сам ffmpeg опирается на этот флаг. И сам же его портит. Т.е. повторно загнать файл в ту же обработку не выйдет. И винда в проводнике превью тоже теряет. Бред какой-то.

Как обходной маневр рекомендуют следующее:
Пока забил болт.
Похожие вопросы