Получение информации о медиафайле при помощи ffprobe

  1. #!/usr/bin/python
  2. import sys, subprocess, json
  3.  
  4. def safe_print(dict, key, name):
  5.     if key in dict:
  6.         print (name + ': {}').format(dict[key])
  7.  
  8. def main(argv):
  9.     if len(argv) == 0:
  10.         print 'Usage: ffprobe.py file'
  11.         sys.exit(2)
  12.  
  13.     output = subprocess.check_output([
  14.         "ffprobe",
  15.         "-v", "error",
  16.         "-print_format", "json",
  17.         "-show_format",
  18.         "-show_streams",
  19.         argv[0]
  20.     ])
  21.     data = json.loads(output)
  22.     format, streams = [data[k] for k in ('format','streams')]
  23.  
  24.     for s in streams:
  25.         print 'Stream #{} {}'.format(s['index'], s['codec_type'])
  26.         print 'Codec: {}'.format(s['codec_name'])
  27.         if s['codec_type'] == 'video':
  28.             print 'Resolution: {}x{}'.format(
  29.                 s.get('width', '?'), s.get('height', '?'))
  30.         elif s['codec_type'] == 'audio':
  31.             print 'Sample Rate: {}'.format(s.get('sample_rate', '?'))
  32.         print ''
  33.  
  34.     safe_print(format, 'duration', 'Duration')
  35.  
  36. if __name__ == "__main__":
  37.     main(sys.argv[1:])
Выводит информацию о видео, аудио или изображении при помощи ffprobe.

Выводится номер потока, его тип и название. Затем разрешение для видеопотока или частота дискретизации для аудио. В конце выводится длительность в секундах.
  1. $ ./ffprobe.py video.mkv
  2.  
  3. Stream #0 video
  4. Codec: mpeg4
  5. Resulution: 1280x720
  6.  
  7. Stream #1: audio
  8. Codec: aac
  9. Sample Rate: 48000
  10.  
  11. Duration: 26.330000

Видео про ffprobe:

Реклама

Мы в соцсетях

tw tg yt gt