LINUX.ORG.RU

Программа для обрезания видео(без перекодировки)

 , ,


0

2

Слепил видеопроигрыватель из pyqt с ffmpeg.

https://i.imgur.com/9hvcZzV.png

Позволяет нарезать видео без пережатия(и потери качества, а также очень быстро)

https://github.com/pawnhearts/qtrimvid

Там же скрипт для mpv-mpris, ещё более кривой. Смысл в том, чтобы обрезать видео до текущего момента по нажатию горячей клавиши. Нужно https://github.com/hoyon/mpv-mpris - для управления mpv через dbus

★★★★★

Последнее исправление: pawnhearts (всего исправлений: 1)

спасибо

anonymous
()

омг он покоцал мне оригинальный файл. Я скачал торрентом фильм и собирался его вечером глянуть, а теперь от него осталась 21 секунда )). Как бы то ни было надо сказать ffmpeg работает действительно быстро. Только надо добавить еще много опций и изменить подход к работе

anonymous
()
Ответ на: комментарий от anonymous

Покоцал, потому что нажал не туда? Потому что если ffmpeg завершится с ошибкой, оно не станет файл перезатирать.

Опций добавить можно, но идея в том чтобы не качать/разбираться полноценный видеоредактор для такой ерунды. А ffmpeg в консоли - не слишком наглядно.

Если будут идеи/пожелания - могу добавить.

Можно добавить остальные функции ffmpeg, там много всего.

Думаю ещё добавить например быстрое раскидывание видео по подкаталогам, с клавиатуры.

С фото аналогично когда-то сделал редактор, с полноценной навигацией с клавы по каталогам и всякие crop там делались тоже парой нажатий. Но инходник потерял, а переписывать лень. Использовал https://github.com/baedert/gtkimageview

pawnhearts ★★★★★
() автор топика

Ну нарезать – пол беды, нужно еще склеить. И тут появляется еще одна проблема – видео будет начинаться не с 0, а с 01 секунды. Ну и после перекодировки получившийся файл весит меньше. Я бы не отказался променять глючный шоткат на что-нибудь, но только без qt.

anonymous
()
Ответ на: комментарий от pawnhearts

по крайней мере надо было добавить опцию сохрания обрезанного участка в отдельный файл.

И потом в любом редакторе так: ставишь маркеры от и до и нажимаешь cut. Обычно же вырезают не с начала или до конца, а с определенного времени до определенного. Я теперь понимаю что для тебя была логичной такая 2 ступенчатая процедура нарезки от 0 до макера и от маркера до конца, но это немного тупо. Ю-юзабилити

anonymous
()
Ответ на: комментарий от anonymous

А чем qt не угодил? Обычный qt, без кедов и прочего. Навярнака всё равно есть в системе.

Я сам всегда на gtk писал, в основном, по краней мере на питоне и vala, мне как-то он лучше зашел. На си тоже можно, но там такой код что лучше его генерировать, короче vala.

Склеивать мне не надо, но, кстати, это тоже не проблема. Но это получится уже какой-то видеоредактор, на всяких gstreamer их и так полно.

pawnhearts ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Я сначала сделал с «маркером». Но просто он так быстро обрезает, что пофигу. Особенно удобно с клаиватуры нажать.

Вообще patches are welcome, тем более там совсем просто что-то сделать.

Сохранение - да, сделаю на досуге. Для маркеров я пока просто виджет подходящий не подобрал))

Спасибо за фидбэк

pawnhearts ★★★★★
() автор топика
Последнее исправление: pawnhearts (всего исправлений: 1)
Ответ на: комментарий от pawnhearts

А чем qt не угодил?

Потому что qt – редкостная инопланетная помойка. В свое время я все выпелил, что к qt имело хоть какое-то отношение.

На vala самые красивые интерфейсы пишут.

Склеивать мне не надо, но, кстати, это тоже не проблема.

Повезло тебе. Мне вот большие видосы с мото-покатушками нужно порезать на небольшие фрагменты и потом соединить, чтобы получить концентрать с лучшими моментами размером в 400-600 метров.

anonymous
()

Интересная тема. Лично я для «порезать-склеить без потерь» пользуюсь оригинальным ffmpeg. Единственное, чем он тут неудобен — начало и продолжительность вырезаемого фрагмента надо подбирать в отдельно запущенном окне плеера. Вот тут GUI может помочь, да.

И Qt радует. Я бы, конечно, сделал не на питоне, а сразу на C++, но поскольку сделал не я, а ты, сожалеть об этом смысла нет. Кстати, чем обусловлен выбор языка?

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Эта программка для того и нужна, чтобы найти нужную секунду, дальше она просто запускает ffmpeg. Там у меня на github также есть скрипт, который определяет на какой секунде сейчас mpv(через mpris) и вызывает ffmpeg для обрезки.

Какой смысл писать это на C++? Никаких вычислений эта программа не делает, вызывает внешнюю утилиту. Скрипт на питон легко изменять, его не надо компилировать, можно разрабатывать в интерактивном режиме через REPL вообще. На питоне много популярных GUI приложений - всякие deluge, gajim. Стали бы они лучше, если переписать их на %languagename%? Да вряд ли. Зато к ним сложнее было бы писать плагины, например.

Последний раз я писал на C++ rtsp сервер для iptv и всякую обработку mpeg2 потока для него. Там производительность была критична, к тому же была библиотека live555 под рукой(в которой много чего не хватало). К счастью, код был асинхронный + можно было запустить несколько процессов на разных портах, а не мучиться с тредами. Но тогда выбора особо не было. Если бы я писал это сейчас, я вряд ли бы взял Си++. Может быть какой-нибудь go, nim или rust.

pawnhearts ★★★★★
() автор топика
Ответ на: комментарий от hobbit

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

pawnhearts ★★★★★
() автор топика
./qtrimvid.py
Traceback (most recent call last):
  File "./qtrimvid.py", line 12, in <module>
    from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer, QMediaPlaylist
ModuleNotFoundError: No module named 'PyQt5.QtMultimedia'

что установить надо?

superuser ★★★★☆
()
Ответ на: комментарий от hobbit

Лично я для «порезать-склеить без потерь» пользуюсь оригинальным ffmpeg. Единственное, чем он тут неудобен — начало и продолжительность вырезаемого фрагмента надо подбирать в отдельно запущенном окне плеера.

Аналогично.

И Qt радует. Я бы, конечно, сделал не на питоне, а сразу на C++

Не, лучше сразу на GTK/C. К тому же, в GTK4 есть и прогресс: Gtk4 -> GtkVideo: видеоплеер в 2 строчки.

gag ★★★★★
()

Ещё бы доли секунды отображались.

gag ★★★★★
()

А и ещё список видео-аудио-дорожек и субтитров с галочками для выбора.

gag ★★★★★
()
Ответ на: комментарий от anonymous

Сравнительно тяжеловесно для сборки, но спасибо за ссылку. Смотрю, там есть доли секунды. Тогда осталось добавить ещё хотелку из поста выше.

gag ★★★★★
()
Ответ на: комментарий от gag

На gtk/C писать так себе удовольствие, лучше взять vala тогда уж. На выходе тоже самое, а писать намного приятнее.

pawnhearts ★★★★★
() автор топика
Ответ на: комментарий от pawnhearts

Да, vala - это хороший компромисс.

gag ★★★★★
()
Ответ на: комментарий от pawnhearts

установлен по-умолчанию практически голый питон без зависимостей и dev-пакетов

в теории можно опакетить тулзу, но тогда и предустановленность питона ни на что не влияет

Ford_Focus ★★★★★
()
Ответ на: комментарий от Ford_Focus

Ну, dev-зависимости тут не нужны. Нужен pyqt, но и для программы на плюсах qt будет нужен. И куча -dev зависимостей, потому что собирать под весь возможный зоопарк архитектур и дистрибутивов будет проблематично.

pawnhearts ★★★★★
() автор топика
Ответ на: комментарий от pawnhearts
# apt install python3-pyqt5.qtmultimedia
...
# apt install python3-fire
...

$ ./qtrimvid.py 
Traceback (most recent call last):
  File "./qtrimvid.py", line 28, in <module>
    from loguru import logger
ModuleNotFoundError: No module named 'loguru'

что за loguru?

superuser ★★★★☆
()
Последнее исправление: superuser (всего исправлений: 2)
Ответ на: комментарий от superuser

что за loguru?

$ pip install loguru

напридумывали всяких pip-ов

superuser ★★★★☆
()

Есть неплохая програмулина LosslessCut. На гитхабе исходники и бинари. Делает именно сабж. Вроде на электроне, правда, если никого не смущает.

Gonzo ★★★★★
()
Последнее исправление: Gonzo (всего исправлений: 1)

Не обращайте внимания - с соседней темой перепутал.

anonymous
()
Ответ на: комментарий от anonymous

он просто вызывает ffmpeg, который всё знает

anonymous
()
Ответ на: комментарий от anonymous

Юзеру надлежит вид иметь лихой и придурковатый, дабы разумением своим не смущать автора. Чё пристал – неведомо ему про I-frames

anonymous
()

режу avidemux по ключевым кадрам , проблем нет быстро и без перекодировки , это же популярная программа для этого .

Gennadevich
()

Полагаю, ваша программа режет только по GOP’ам. Продвинутые программы такого плана умеют перекодировать часть одного GOP’а, если пользователю необходимо нарезать его.

ValdikSS ★★★★★
()
Ответ на: комментарий от Gennadevich

режу avidemux по ключевым кадрам

+1

anonymous
()
Ответ на: комментарий от Gennadevich

Прикинь, бро, ТС спрашивает чем обрезать видео на лине и только 35-тый комментарий содержит слово avidemux. Интересно…

papin-aziat ★★★★★
()
Ответ на: комментарий от pawnhearts

довольно тяжелый.

В каком смысле? Вроде же просто морда над ffmpeg.

avidemux это всё-таки видеоредактор.

Я гимпом картинки уменьшаю, мне не понять.

papin-aziat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.