Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

Открыть новую тему     Написать ответ в эту тему

Adm10



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здесь обсуждается всё, что связано с использованием Python: программирование, библиотеки, ресурсы и другие вопросы

Python


Python - высокоуровневый язык программирования общего назначения с динамической типизацией и автоматическим управлением памятью, ориентированный на повышение производительности разработчика, читаемости кода и его качества, а также на обеспечение переносимости написанных на нём программ

С чего начать?
Простой, понятный и вместе с тем грамотный ресурс на русском языке: pythonworld.ru + самоучитель
Библия PEP8

Всего записей: 35 | Зарегистр. 13-10-2006 | Отправлено: 15:48 16-06-2007 | Исправлено: Lin1980, 22:13 27-01-2025
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA на офф. сайте https://trac.ffmpeg.org/wiki/Capture/Desktop

Всего записей: 990 | Зарегистр. 14-12-2005 | Отправлено: 16:31 04-02-2025
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

     С этим я тоже попробую разобраться. Спасибо за информацию.
     Но сценарий Phyton тоже надо 'до ума довести'. Надо с 'cv2.VIDEOWRITER_PROP_QUALITY' разобраться.

Всего записей: 2426 | Зарегистр. 09-01-2010 | Отправлено: 17:18 04-02-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA

Цитата:
 Надо с 'cv2.VIDEOWRITER_PROP_QUALITY' разобраться.

я же написал.
 
 
self.sct = mss()
self.vid = cv2.VideoWriter('output.mkv', cv2.VideoWriter_fourcc(*'XVID'), ...)
self.vid.set(cv2.VIDEOWRITER_PROP_QUALITY, 95)

Всего записей: 15906 | Зарегистр. 20-09-2014 | Отправлено: 19:31 04-02-2025
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

      Большое спасибо за помощь!  
 

Код:
self.sct = mss()
self.vid = cv2.VideoWriter(
    'output.mkv',
    cv2.VideoWriter_fourcc(*'XVID'),
    fps=fps,
    frameSize=(
        self.monitor['width'],
        self.monitor['height']
    )
)
self.vid.set(cv2.VIDEOWRITER_PROP_QUALITY, 95)

 
     Это работает. С количеством процентов я ещё поэкспериментирую.  
     Например, 'FFmpeg' применяет 'crf'('Constant Rate Factor') таким образом:
     ,,The range of the quantizer scale is 0-51: where 0 is lossless (for 8 bit only, for 10 bit use -qp 0), 23 is default, and 51 is worst possible.
        Consider 17 or 18 to be visually lossless".
 
    crf=17-23=33-45% от 51
    Я не знаю какая логика у шкалы качества '0..100%' VIDEOWRITER, но это можно установить опытным путём и сопоставить размер сохранённого 'output' с тем, что выдаёт FFmpeg по-умолчанию.
    Про 'мытарства'.
    Я случайно удалил в коде одну букву
 
    cv2.VideoWriter_fourc(*'XVID'),
 
   и поэтому попытки дописать в код 'cv2.VIDEOWRITER_PROP_QUALITY, 95' не давали желаемого результата.

Всего записей: 2426 | Зарегистр. 09-01-2010 | Отправлено: 22:30 04-02-2025
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

       К сожалению, 'VIDEOWRITER_PROP_QUALITY' не помагает. Проверял на разных процентах - разница в 'bit rat' между 1% и 100% ничтожная. Ну да ладно.
       Ещё я попробовал кодек поменять. Но тут - тоже не всё гладко.
       С 'DX50' сценарий работает.
       С 'AVC1' пишет:
 

Код:
[ WARN:0@0.110] global cap.cpp:781 cv::VideoWriter::open VIDEOIO(CV_IMAGES): raised OpenCV exception:
 
OpenCV(4.11.0) D:\x\opencv-python\opencv-python\opencv\modules\videoio\src\cap_images.cpp:415: error: (-215:Assertion failed) !filename_pattern.empty() in function 'cv::CvVideoWriter_Images::CvVideoWriter_Images'

 
       С 'X264' пишет:
 

Код:
Failed to load OpenH264 library: openh264-1.8.0-win64.dll
        Please check environment and/or download library: https://github.com/cisco/openh264/releases
 
[libopenh264 @ 00000136556e8f00] Incorrect library version loaded
[ERROR:0@0.003] global cap_ffmpeg_impl.hpp:3264 open Could not open codec libopenh264, error: Unspecified error (-22)
[ERROR:0@0.003] global cap_ffmpeg_impl.hpp:3281 open VIDEOIO/FFMPEG: Failed to initialize VideoWriter
[ WARN:0@0.117] global cap.cpp:781 cv::VideoWriter::open VIDEOIO(CV_IMAGES): raised OpenCV exception:
 
OpenCV(4.11.0) D:\x\opencv-python\opencv-python\opencv\modules\videoio\src\cap_images.cpp:415: error: (-215:Assertion failed) !filename_pattern.empty() in function 'cv::CvVideoWriter_Images::CvVideoWriter_Images'

 
    Чем это можно объяснить? Сам сценарий так написан или нужно что-то установить?
     Например
     
Цитата:
Incorrect library version loaded

Всего записей: 2426 | Зарегистр. 09-01-2010 | Отправлено: 00:52 06-02-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LZAA

Цитата:
С 'AVC1' пишет:

чего то не хватает в сборке библиотеки.
 

Цитата:
Чем это можно объяснить? Сам сценарий так написан или нужно что-то установить?

скорее всего нужен путь к полной ffmpeg
https://github.com/opencv/opencv/issues/25831

Всего записей: 15906 | Зарегистр. 20-09-2014 | Отправлено: 01:21 06-02-2025
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

       Немного разобрался.
 
    1. Код:
 
 
Код:
           'output.mkv',
            cv2.VideoWriter_fourcc(*'AVC1')

 
     Причиной ошибки вида - 'filename_pattern.empty' является именно расширение файла 'output'. Кодек 'AVC1' (https://fourcc.org/avc1/) является очень 'узконаправленным' - он работает только с 'output.mp4v'. А в контейнер он просто так не 'запихивает'.
 
    2. Код:
 
 
Код:
           'output.mkv',
            cv2.VideoWriter_fourcc(*'X264')

 
        Здесь всё ещё интереснее. Если с 'GitHub' скачать 'openh264-1.8.0-win64.dll', то библиотека 'подхватывается' и ошибки нет. Для удобства путь можно в 'Path' записать.
        Но почему 'Incorrect library version loaded ? Почему так?
        А вот почему. Если написать 'output.mp4v', то ошибки нет и без 'openh264-1.8.0-win64.dll'. То есть 'openh264' есть, но он 'делает' только 'mp4v'. А для 'создания' контейнера нужен 'openh264-1.8.0-win64.dll'. Причём работает только с '1.8.0'. Чудеса программирования!

Всего записей: 2426 | Зарегистр. 09-01-2010 | Отправлено: 01:01 07-02-2025
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

     Ещё с таким затруднением столкнулся.
     Код:

Код:
            self.vid = cv2.VideoWriter(
                'v.mp4',
                cv2.VideoWriter_fourcc(*'avc1')

 
    При исполнении сценария файл 'v.mp4' сохраняется в директорию сценария. Но если сделать пакетный файл для запуска сценария и запускать его с повышенными правами, то файл 'v.mp4' на диск не сохраняется. Происходит это потому, что в таком режиме система не видит файлы и нужно в команде указывать путь к файлу или директорию файла в Path' записывать. Я пробовал в сценарии писать ' Path to v.mp4' но это не помагает. Скажите, пожалуйста, как в этом сценарии прямо указать директорию сохранения файла 'v.mp4'?

Всего записей: 2426 | Зарегистр. 09-01-2010 | Отправлено: 14:15 08-02-2025
zzz528

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
пробовал в сценарии писать ' Path to v.mp4'  

косые двойные соблюдал?
типа  'С:\\bebebe\\v.mp4' работает, а 'С:\bebebe\v.mp4'  не работает.

Всего записей: 2007 | Зарегистр. 20-06-2005 | Отправлено: 15:25 08-02-2025
LZAA

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

      Отлично! С 'С:\\bebebe\\v.mp4' работает!

Всего записей: 2426 | Зарегистр. 09-01-2010 | Отправлено: 16:17 08-02-2025
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Python


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru