Привет, я пытаюсь сделать видео конвертер для django с python, я разветвил модуль django-ffmpeg , который делает почти все, что я хочу, за исключением того, что не ловит ошибку, если преобразование не удалось.
Обычно модуль передает интерфейсу командной строки команду ffmpeg, чтобы выполнить преобразование следующим образом:
/ usr / bin / ffmpeg -hide_banner -nostats -i% (input_file) s -target
film-dvd% (output_file)
Модуль использует этот метод для передачи команды ffmpeg в cli и получения вывода:
def _cli(self, cmd, without_output=False):
print 'cli'
if os.name == 'posix':
import commands
return commands.getoutput(cmd)
else:
import subprocess
if without_output:
DEVNULL = open(os.devnull, 'wb')
subprocess.Popen(cmd, stdout=DEVNULL, stderr=DEVNULL)
else:
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
return p.stdout.read()
Но, например, если вы загружаете поврежденный видеофайл, он возвращает только сообщение ffmpeg, напечатанное на cli, но ничего не вызывается, чтобы узнать, что что-то не удалось
Это пример вывода ffmpeg, когда преобразование не удалось:
[mov, mp4, m4a, 3gp, 3g2, mj2 @ 0x237d500] Формат MOV, MP4, m4a, 3gp, 3g2, mj2
обнаруживается только при низком значении 1, возможно неправильное обнаружение!
[mov, mp4, m4a, 3gp, 3g2, mj2 @ 0x237d500] атом moov не найден
/home/user/PycharmProjects/videotest/media/videos/orig/270f412927f3405aba041265725cdf6b.mp4:
Найдены неверные данные при обработке ввода
Мне было интересно, есть ли способ сделать это исключение и каким образом, чтобы я мог справиться с этим легко.
Единственная опция, которая пришла мне в голову, - это поиск: «Обнаружены недопустимые данные при обработке ввода» в строке сообщения о выводе cli, но я не уверен, что это лучший подход. Любой может помочь мне и направить меня в этом, пожалуйста.