Получение информации о медиафайле при помощи ffprobe
- #!/usr/bin/python
- import sys, subprocess, json
- def safe_print(dict, key, name):
- if key in dict:
- print (name + ': {}').format(dict[key])
- def main(argv):
- if len(argv) == 0:
- print 'Usage: ffprobe.py file'
- sys.exit(2)
- output = subprocess.check_output([
- "ffprobe",
- "-v", "error",
- "-print_format", "json",
- "-show_format",
- "-show_streams",
- argv[0]
- ])
- data = json.loads(output)
- format, streams = [data[k] for k in ('format','streams')]
- for s in streams:
- print 'Stream #{} {}'.format(s['index'], s['codec_type'])
- print 'Codec: {}'.format(s['codec_name'])
- if s['codec_type'] == 'video':
- print 'Resolution: {}x{}'.format(
- s.get('width', '?'), s.get('height', '?'))
- elif s['codec_type'] == 'audio':
- print 'Sample Rate: {}'.format(s.get('sample_rate', '?'))
- print ''
- safe_print(format, 'duration', 'Duration')
- if __name__ == "__main__":
- main(sys.argv[1:])
Выводит информацию о видео, аудио или изображении при помощи ffprobe.
Выводится номер потока, его тип и название. Затем разрешение для видеопотока или частота дискретизации для аудио. В конце выводится длительность в секундах.
Выводится номер потока, его тип и название. Затем разрешение для видеопотока или частота дискретизации для аудио. В конце выводится длительность в секундах.
- $ ./ffprobe.py video.mkv
- Stream #0 video
- Codec: mpeg4
- Resulution: 1280x720
- Stream #1: audio
- Codec: aac
- Sample Rate: 48000
- Duration: 26.330000
Видео про ffprobe: