У меня на медиасервере есть несколько несжатых файлов MKV, которые я хотел бы сжать в HEVC. Будучи ленивым человеком, я решил написать скрипт для этого, вместо того, чтобы вручную конвертировать сотни файлов. Я загрузил Handbrake для Linux из официального пакета в соответствии с инструкциями на веб-сайте Handbrake и заставил свою команду работать с тестовым файлом. Однако, когда я помещаю свою команду в Python, ручной тормоз не работает.
Я работаю в Ubuntu
Код Python:
import os
import subprocess
PATH = "/path/to/my/videos"
my_env = os.environ.copy()
my_env["PATH"] = f"/usr/sbin:/sbin:{my_env['PATH']}"
def make_new_name(filename):
(name, extension) = filename.split(sep=".")
return f"{name} (Compressed).{extension}"
def compress_directory(path):
dirlist = os.listdir(path)
for file in dirlist:
# print(file)
if (".mkv" in file) and ("Compressed" not in file):
subprocess.run([
"flatpak",
"run",
"--command=HandBrakeCLI",
"fr.handbrake.ghb",
"-O",
"--keep-metadata",
"-e x265",
"--multi-pass",
"--turbo",
"-vfr",
"--all-audio",
"--all-subtitles",
f"-i {path}/{file}",
f"-o {path}/{make_new_name(file)}"
], env=my_env)
print(make_new_name(file))
if os.path.isdir(f"{path}/{file}"):
print(f"{path}/{file} is a dir")
compress_directory(f"{path}/{file}")
compress_directory(PATH)
Когда я запускаю это, я получаю следующий журнал:
[23:12:50] Compile-time hardening features are enabled
Cannot load libnvidia-encode.so.1
[23:12:50] vcn: not available on this system
[23:12:50] qsv: not available on this system
[23:12:50] hb_init: starting libhb thread
[23:12:50] thread 7b1b1ae146c0 started ("libhb")
HandBrake 1.10.2 (2025090600) - Linux x86_64 - https://handbrake.fr
8 CPUs detected
Opening /path/to/my/videos/S00E00.mkv...
[23:12:50] CPU: Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
[23:12:50] - logical processor count: 8
[23:12:50] Intel Quick Sync Video support: no
[23:12:50] hb_scan: path= /path/to/my/videos/S00E00.mkv, title_index=1
[23:12:50] hb_stream_open: open /path/to/my/videos/S00E00.mkv failed
[23:12:50] scan: unrecognized file type
[23:12:50] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
Для справки, команда, которая работает (вручную):
flatpak run --command=HandBrakeCLI fr.handbrake.ghb -O --keep-metadata -e x265 --multi-pass --turbo -vfr --all-audio --all-subtitles -i /path/to/my/videos/S00E00.mkv -o output.mkv
Подробнее здесь: https://stackoverflow.com/questions/798 ... rom-python
HandbrakeCLI не может найти файлы при запуске из Python ⇐ Python
Программы на Python
-
Anonymous
1771740302
Anonymous
У меня на медиасервере есть несколько несжатых файлов MKV, которые я хотел бы сжать в HEVC. Будучи ленивым человеком, я решил написать скрипт для этого, вместо того, чтобы вручную конвертировать сотни файлов. Я загрузил Handbrake для Linux из официального пакета в соответствии с инструкциями на веб-сайте Handbrake и заставил свою команду работать с тестовым файлом. Однако, когда я помещаю свою команду в Python, ручной тормоз не работает.
Я работаю в Ubuntu
Код Python:
import os
import subprocess
PATH = "/path/to/my/videos"
my_env = os.environ.copy()
my_env["PATH"] = f"/usr/sbin:/sbin:{my_env['PATH']}"
def make_new_name(filename):
(name, extension) = filename.split(sep=".")
return f"{name} (Compressed).{extension}"
def compress_directory(path):
dirlist = os.listdir(path)
for file in dirlist:
# print(file)
if (".mkv" in file) and ("Compressed" not in file):
subprocess.run([
"flatpak",
"run",
"--command=HandBrakeCLI",
"fr.handbrake.ghb",
"-O",
"--keep-metadata",
"-e x265",
"--multi-pass",
"--turbo",
"-vfr",
"--all-audio",
"--all-subtitles",
f"-i {path}/{file}",
f"-o {path}/{make_new_name(file)}"
], env=my_env)
print(make_new_name(file))
if os.path.isdir(f"{path}/{file}"):
print(f"{path}/{file} is a dir")
compress_directory(f"{path}/{file}")
compress_directory(PATH)
Когда я запускаю это, я получаю следующий журнал:
[23:12:50] Compile-time hardening features are enabled
Cannot load libnvidia-encode.so.1
[23:12:50] vcn: not available on this system
[23:12:50] qsv: not available on this system
[23:12:50] hb_init: starting libhb thread
[23:12:50] thread 7b1b1ae146c0 started ("libhb")
HandBrake 1.10.2 (2025090600) - Linux x86_64 - https://handbrake.fr
8 CPUs detected
Opening /path/to/my/videos/S00E00.mkv...
[23:12:50] CPU: Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz
[23:12:50] - logical processor count: 8
[23:12:50] Intel Quick Sync Video support: no
[23:12:50] hb_scan: path= /path/to/my/videos/S00E00.mkv, title_index=1
[23:12:50] hb_stream_open: open /path/to/my/videos/S00E00.mkv failed
[23:12:50] scan: unrecognized file type
[23:12:50] libhb: scan thread found 0 valid title(s)
No title found.
HandBrake has exited.
Для справки, команда, которая работает (вручную):
flatpak run --command=HandBrakeCLI fr.handbrake.ghb -O --keep-metadata -e x265 --multi-pass --turbo -vfr --all-audio --all-subtitles -i /path/to/my/videos/S00E00.mkv -o output.mkv
Подробнее здесь: [url]https://stackoverflow.com/questions/79893829/handbrakecli-cant-find-files-when-run-from-python[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия