Почему ffmpeg-python выдает здесь ошибку кодека? - PullRequest
1 голос
/ 11 октября 2019

Я впервые пробую ffmpeg-python и поражаюсь, что на удивление похоже на сложную ошибку, на раннем этапе.

Вот мой полный код в таком виде:

from tkinter import filedialog
import ffmpeg

sourceFile = filedialog.askopenfile()
targetFile = filedialog.asksaveasfilename()

stream = ffmpeg.input(sourceFile, ss=0, format='mov')
stream = ffmpeg.output(stream, targetFile, format='mp4')
ffmpeg.run(stream)

В моей голове это должно быть просто. Пользователь просматривает существующий файл MOV (стандартный файл h264, который «нормальный» FFmpeg.exe не может обработать без проблем в командной строке Windows), затем выбирает выходной файл для MP4, который будет сохранен, затем вызывается FFmpeg и MP4Файл конвертируется из MOV.

Однако, независимо от того, какой исходный файл я выбрал, я всегда получаю эту ошибку:

  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\ffmpeg\_ffmpeg.py", line 85, in output
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\ffmpeg\_run.py", line 285, in run_async
    args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\subprocess.py", line 1119, in _execute_child
    args = list2cmdline(args)
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\subprocess.py", line 530, in list2cmdline
    needquote = (" " in arg) or ("\t" in arg) or not arg
  File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 41: character maps to <undefined>

Номер позиции изменяется в зависимости от файла, но ошибкавсегда кодек 'charmap' не может декодировать байт 0x90 в позиции [x]: символ отображается на

Пожалуйста, кто-нибудь может указать мне, где я могу ошибаться в этомодин? Я чувствую, что ответ смотрит мне в лицо, но я его не вижу.

1 Ответ

0 голосов
/ 15 октября 2019

В интересах любого, кто найдет этот пост в будущем - я нашел свой ответ, он действительно смотрел мне в лицо.

Третья строка кода должна была быть sourceFile = filedialog.askopenfile().name - Iпропустил часть .name() и пытался передать FFmpeg объект, возвращаемый filedialog, а не конкретно имя файла. Как только я понял это, я смог продолжить.

(я сразу же столкнулся с другими проблемами с FFmpeg, не найдя своих собственных файлов библиотеки и тому подобного, но это история для другого поста.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...