Перечислите количество типов потоков

Перечислите количество типов потоков

Итак, у меня есть следующий видеопример

    Stream #0:0(jpn): Video: h264 (High 10), yuv420p10le(progressive), 1920x1036 [SAR 1:1 DAR 480:259], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.0(side), fltp, 640 kb/s (default)
    Stream #0:2(jpn): Audio: ac3, 48000 Hz, 5.0(side), fltp, 640 kb/s
    Stream #0:3(eng): Subtitle: ass (default)
    Metadata:
      title           : English Signs & Songs
    Stream #0:4(eng): Subtitle: ass
    Metadata:
      title           : English Subtitles
    Stream #0:5: Attachment: ttf
    Metadata:
      filename        : PutoInsanity.ttf
      mimetype        : application/x-truetype-font

Я хочу использоватьffprobeдля подсчета количества видеопотоков и аудиопотоков, что в данном случае должно мне дать1и2соответственно, как этого можно достичь?

решение1

Такой функции нет, но вы можете использовать ffprobeдополнительные инструменты, такие как uniqsortпри желании) для обработки выходных данных.

Перечислите количество типов потоков

ffprobe -v error -show_entries stream=codec_type -of default=nw=1:nk=1 input.mkv | uniq -c
      1 data
      1 video
      1 attachment
      8 subtitle
      6 audio

Просто выведите номер для определенного типа потока

Или пошаговый метод. Этот пример показывает, сколько аудиопотоков существует:

ffprobe -v error -select_streams a -show_entries stream=index -of csv=p=0 input.mkv | wc -w
2

Принятые значения для -select_streams:

  • vвидео
  • Vвидео (за исключением прикрепленных изображений, миниатюр видео или обложек).
  • aаудио
  • sсубтитры
  • dданные
  • tвложения

Связанный контент