Ответы пользователя по тегу mp4
  • Как поменять разрешение видео mp4, через ffmpeg 600 на 600 Python?

    ae_ph
    @ae_ph
    I'm a owl )
    Вы можете использовать модуль os в Python для выполнения команды ffmpeg для изменения разрешения видеофайла mp4. Вот пример того, как вы можете использовать функцию os.system() для изменения разрешения видеофайла из командной строки:
    import os
    
    input_file = "input.mp4"
    output_file = "result.mp4"
    
    os.system(f"ffmpeg -i {input_file} -s 600x600 {output_file}")


    Этот код изменит разрешение видеофайла "input.mp4" на 600x600 и сохранит его как "result.mp4".
    Параметр -i используется для указания входного файла, а параметр -s используется для указания нового разрешения.
    f"ffmpeg -i {входной_файл} -s 600x600 {выходной_файл}" — это f-строка, которая заменит переменные внутри фигурных скобок значениями переменных входной_файл и выходной_файл.

    Важно отметить, что изменение разрешения видеофайла может повлиять на его качество, особенно если вы уменьшаете его разрешение. Также выполнение этой команды может занять некоторое время в зависимости от размера видео.

    Если вам нужен больший контроль над процессом и вы хотите получить информацию о видео, вы можете использовать библиотеку ffmpeg-python, которая является оболочкой инструмента командной строки FFmpeg. Эту библиотеку можно установить через pip:

    pip install ffmpeg-python

    Эта библиотека предоставляет простой и удобный интерфейс для выполнения команд FFmpeg в Python.
    Если вы хотите изменить разрешение видеофайла и сохранить то же соотношение сторон, вы можете использовать масштабный фильтр, вы можете использовать эту команду

    os.system(f"ffmpeg -i {input_file} -vf scale=600:-1 {output_file}")


    Здесь -1 в фильтре масштабирования заставит ffmpeg поддерживать соотношение сторон видео.
    Ответ написан
    5 комментариев
  • Почему не воспроизводится видео mp4 через QuickLook на macOS?

    ae_ph
    @ae_ph
    I'm a owl )
    Я использую Windows os у меня нет возможности протестировать на Mac os
    Попробуй воспользоваться моим файлом MKV – MP4.bat
    Вот ссылка на мой репозиторий FFMPEG_BAT
    Если это не сработает тогда хз.. А если сработает тогда я гляжу у тебя там определённый фильтр, просто допиши его к себе в .bat файл тот и всё
    Ответ написан
  • Как убрать задержку при передачи видео mp4?

    ae_ph
    @ae_ph
    I'm a owl )
    Попробуйте сделать так..
    Рядом с app.js положите bat файл с этим кодом и стартоните его, у меня мгновенно взлетает.
    Я изменил кодек на mpeg4 это основное.
    @echo off
    color a
    start node app.js
    set c=ffmpeg
    set f=-f gdigrab -framerate 30 -rtbufsize 999999k -thread_queue_size 9999999 -indexmem 9999999 -i desktop -c:v mpeg4 -qscale:v 3 -movflags frag_keyframe+empty_moov -f mp4 tcp://127.0.0.1:4444
    %c% %f%
    exit


    -rtbufsize 1G – Размер буфера 1 гигабайт. По умолчанию FFmpeg захватывает кадры из ввода, а затем выполняет все, что вы ему сказали. Например перекодирует их и сохраняет в выходной файл. По умолчанию, если он получает видеокадр "слишком рано" (в то время как предыдущий кадр еще не закончен), он отбрасывает этот кадр, чтобы он мог поддерживать ввод в реальном времени. Вы можете отрегулировать это, установив параметр rtbufsize, хотя обратите внимание, что если ваш процесс кодирования не успевает, в конечном итоге вы все равно начнете терять кадры (и его использование вообще может вызвать небольшую задержку). Однако может быть полезно указать некоторый размер буфера, в противном случае кадры могут быть потеряны без необходимости.

    -thread_queue_size – Устанавливает максимальное количество пакетов в очереди при чтении из файла или устройства. Установка этого значения может заставить ffmpeg использовать отдельный входной поток и читать пакеты, как только они приходят. Может применяется для каждого входа, указанного после него.

    -indexmem – максимальная память, используемая для индекса отметки времени (на поток).

    Он хоть и староват но достаточно быстрый -c:v mpeg4 -qscale:v 3
    Ответ написан