Последние пару месяцев я пытался создать приложение, которое будет автоматически записывать ваш экран, однако заметил проблему, о которой сообщали мои пользователи, и просто не знаю, как с ней справиться. Мы используем FFmpeg в моем приложении, и FFmpeg работает нормально, но когда он записывает экран, он в конечном итоге зависает, поэтому я просто решил переключиться на OBS, но людям не нравится, что вам нужно использовать OBS для правильной записи.
Итак, вот мой код:
if helpers.os_is_windows():
command = [
helpers.get_path(helpers.get_app_folder(), helpers.get_config("PATH_FFMPEG_WINDOWS")), "-y",
"-f", "dshow",
"-i", "video=screen-capture-recorder:audio=virtual-audio-capturer",
"-vf", f"crop={width}:{height}:0:0,format=yuv420p",
"-c:v", "libx264", # Use H.264 codec for video
"-preset", "ultrafast", # Use ultrafast preset for faster encoding (lower CPU usage)
"-crf", "23", # Constant Rate Factor for good quality (lower is better, 23 is default)
"-pix_fmt", "yuv420p", # Ensure compatibility with most players
"-c:a", "aac", # Use AAC codec for audio
"-b:a", "128k", # Set audio bitrate to ensure good quality
"-ar", "44100", # Set audio sample rate to avoid bass boosting or distortion
output,
]
elif helpers.os_is_linux():
command = [
helpers.get_path(helpers.get_app_folder(), helpers.get_config("PATH_FFMPEG_LINUX")), "-y",
"-f", "x11grab",
"-s", f"{width}x{height}",
"-i", ":0.0",
"-f", "pulse",
"-i", "alsa_output.pci-0000_00_1b.0.analog-stereo.monitor",
"-ac", "2",
"-c:v", "libx264",
"-preset", "ultrafast",
"-crf", "23",
"-pix_fmt", "yuv420p",
"-c:a", "aac",
"-b:a", "128k",
"-ar", "44100",
output,
]
else:
logger.error("Unsupported OS")
return False
Я на самом деле сосредотачиваюсь только на части Windows — версии Linux, о которой я еще не получил никаких отчетов, поэтому я полагаю, что она не сломана, но я не уверен.
Команда для Windows приведет к следующей команде:
ffmpeg -y \
-f dshow \
-i "video=screen-capture-recorder:audio=virtual-audio-capturer" \
-vf "crop={VIDEO_WIDTH}:{VIDEO_HEIGHT}:0:0,format=yuv420p" \
-c:v libx264 \
-preset ultrafast \
-crf 23 \
-pix_fmt yuv420p \
-c:a aac \
-b:a 128k \
-ar 44100 \
"{OUTPUT_FILE_PATH}"
Я использую драйвер Directshow, упомянутый в вики FFmpeg.
Я предполагаю, что FFmpeg не хватает памяти, он прекращает захват кадров, потому что не может хранить их все, и я выпустил обновление для приложения, в котором пользователь может запускать запись со скоростью 60 кадров в секунду, раньше она была примерно 24 кадра в секунду, поэтому я пришел к такому выводу, потому что после этого обновлении, люди стали сталкиваться с этой ошибкой чаще.
Сможет ли кто-нибудь дать мне какие-либо рекомендации? Я здесь заблудился, и мне бы хотелось, чтобы вам помогли. Спасибо всем, кто нашел время, чтобы помочь мне!
Изменить: Я просто хотел внести это изменение, но понимаю, что оно выдает эту ошибку:
real-time buffer [screen-capture-recorder] [video input] too full or near too full (545% of size: 3041280 [rtbufsize parameter])! frame dropped!
Подробнее здесь: https://stackoverflow.com/questions/798 ... is-missing
Запись FFmpeg зависает в середине записи, а остальная часть видео отсутствует ⇐ Python
Программы на Python
1761864257
Anonymous
Последние пару месяцев я пытался создать приложение, которое будет автоматически записывать ваш экран, однако заметил проблему, о которой сообщали мои пользователи, и просто не знаю, как с ней справиться. Мы используем FFmpeg в моем приложении, и FFmpeg работает нормально, но когда он записывает экран, он в конечном итоге зависает, поэтому я просто решил переключиться на OBS, но людям не нравится, что вам нужно использовать OBS для правильной записи.
Итак, вот мой код:
if helpers.os_is_windows():
command = [
helpers.get_path(helpers.get_app_folder(), helpers.get_config("PATH_FFMPEG_WINDOWS")), "-y",
"-f", "dshow",
"-i", "video=screen-capture-recorder:audio=virtual-audio-capturer",
"-vf", f"crop={width}:{height}:0:0,format=yuv420p",
"-c:v", "libx264", # Use H.264 codec for video
"-preset", "ultrafast", # Use ultrafast preset for faster encoding (lower CPU usage)
"-crf", "23", # Constant Rate Factor for good quality (lower is better, 23 is default)
"-pix_fmt", "yuv420p", # Ensure compatibility with most players
"-c:a", "aac", # Use AAC codec for audio
"-b:a", "128k", # Set audio bitrate to ensure good quality
"-ar", "44100", # Set audio sample rate to avoid bass boosting or distortion
output,
]
elif helpers.os_is_linux():
command = [
helpers.get_path(helpers.get_app_folder(), helpers.get_config("PATH_FFMPEG_LINUX")), "-y",
"-f", "x11grab",
"-s", f"{width}x{height}",
"-i", ":0.0",
"-f", "pulse",
"-i", "alsa_output.pci-0000_00_1b.0.analog-stereo.monitor",
"-ac", "2",
"-c:v", "libx264",
"-preset", "ultrafast",
"-crf", "23",
"-pix_fmt", "yuv420p",
"-c:a", "aac",
"-b:a", "128k",
"-ar", "44100",
output,
]
else:
logger.error("Unsupported OS")
return False
Я на самом деле сосредотачиваюсь только на части Windows — версии Linux, о которой я еще не получил никаких отчетов, поэтому я полагаю, что она не сломана, но я не уверен.
Команда для Windows приведет к следующей команде:
ffmpeg -y \
-f dshow \
-i "video=screen-capture-recorder:audio=virtual-audio-capturer" \
-vf "crop={VIDEO_WIDTH}:{VIDEO_HEIGHT}:0:0,format=yuv420p" \
-c:v libx264 \
-preset ultrafast \
-crf 23 \
-pix_fmt yuv420p \
-c:a aac \
-b:a 128k \
-ar 44100 \
"{OUTPUT_FILE_PATH}"
Я использую драйвер Directshow, упомянутый в вики FFmpeg.
Я предполагаю, что FFmpeg не хватает памяти, он прекращает захват кадров, потому что не может хранить их все, и я выпустил обновление для приложения, в котором пользователь может запускать запись со скоростью 60 кадров в секунду, раньше она была примерно 24 кадра в секунду, поэтому я пришел к такому выводу, потому что после этого обновлении, люди стали сталкиваться с этой ошибкой чаще.
Сможет ли кто-нибудь дать мне какие-либо рекомендации? Я здесь заблудился, и мне бы хотелось, чтобы вам помогли. Спасибо всем, кто нашел время, чтобы помочь мне!
[b]Изменить:[/b] Я просто хотел внести это изменение, но понимаю, что оно выдает эту ошибку:
real-time buffer [screen-capture-recorder] [video input] too full or near too full (545% of size: 3041280 [rtbufsize parameter])! frame dropped!
Подробнее здесь: [url]https://stackoverflow.com/questions/79805273/ffmpeg-recording-freezes-mid-recording-and-remainder-of-the-footage-is-missing[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия