2015-06-22 3 views
2

Я новичок в Python, и я пытаюсь получить продолжительность (в секундах) файлового видео с помощью ffprobe. Вызов следующей инструкцииPython - получение длительности видео с ffprobe

ffprobe -i video.mp4 -show_entries format=duration -v quiet -of csv="p=0" 

на ЦМДЕ, я получаю правильный результат в секундах, но если я называю ту же команду в питоне с помощью:

import subprocess 
duration = subprocess.call(['ffprobe', '-i', 'video.mp4', '-show_entries', 'format=duration', '-v', 'quiet', '-of', 'csv="p=0"']) 
print duration 

возвращает 1. Есть способ получить правильный результат также через Python? Спасибо заранее.

ответ

2

Проблема с двойной цитатой аргумент p=0, отформатируйте ее с помощью %, также я изменил subprocess.call к subprocess.check_output для хранения вывода команды в строке:

import subprocess 
duration = subprocess.check_output(['ffprobe', '-i', 'video.mp4', '-show_entries', 'format=duration', '-v', 'quiet', '-of', 'csv=%s' % ("p=0")]) 
print(duration) 

Выход:

8.824000 

или вы можете в противном случае сделать это:

import subprocess 
result = subprocess.Popen(["ffprobe", "video.mp4"],stdout = subprocess.PIPE, stderr = subprocess.STDOUT) 
for x in result.stdout.readlines(): 
     if "Duration" in x: 
      print(x[12:23]) 
      break