Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Обрезать 10 секунд видео с конца?  (Прочитано 4404 раз)

0 Пользователей и 1 Гость просматривают эту тему.

bghno

  • Автор темы
  • Гость
Обрезать 10 секунд видео с конца?
« : 04 Октября 2017, 21:27:55 »
Приветствую. Как на сервере в терминале обрезать последние 10 секунд видео без перекодирования? Формат файла mkv

Оффлайн xradio

  • Любитель
  • *
  • Сообщений: 56
    • Просмотр профиля
Re: Обрезать 10 секунд видео с конца?
« Ответ #1 : 05 Октября 2017, 01:41:59 »
На каком ещё сервере!? FFmpeg - проще некуда!

Оффлайн gamayun

  • Активист
  • *
  • Сообщений: 823
  • Кто ищет, тот найдёт, может быть...
    • Просмотр профиля
Re: Обрезать 10 секунд видео с конца?
« Ответ #2 : 05 Октября 2017, 06:03:19 »
Например:
ffmpeg -i 1.avi -vcodec copy -acodec copy -ss 00:00:36 -t 00:1:02 output.aviвырезка фрагмента с 36 секунды по 62.На матрешке не доводилось правда резать.
Да,t-это продолжительность фрагмента,а не по какую секунду.Забывается  :-\
« Последнее редактирование: 05 Октября 2017, 07:46:28 от gamayun »
Не бери в голову

bghno

  • Автор темы
  • Гость
Re: Обрезать 10 секунд видео с конца?
« Ответ #3 : 05 Октября 2017, 14:25:50 »
На каком ещё сервере!? FFmpeg - проще некуда!
Ubuntu сервер 16.04.3 hwe ядро без gui. FFmpeg - проще некуда! Согласен! Вопрос как!

Пользователь добавил сообщение 05 Октября 2017, 14:32:14:
Например:
ffmpeg -i 1.avi -vcodec copy -acodec copy -ss 00:00:36 -t 00:1:02 output.aviвырезка фрагмента с 36 секунды по 62.На матрешке не доводилось правда резать.
Да,t-это продолжительность фрагмента,а не по какую секунду.Забывается  :-\
По моему на русском написал. Мне не надо с 36 секунды по 62, и то что вы написали есть в man и help, которые я, естествено, прочитал прежде чем задать этот вопрос, а также погуглил.Повторю: надо обрезать видео ~10 секунд С КОНЦА ВИДЕОФАЙЛА БЕЗ ПЕРЕКОДИРОВАНИЯ, ТО ЕСТЬ УДАЛИТЬ ПОСЛЕДНИЕ 10 СЕКУНД ВИДЕОФАЙЛА БЕЗ ПЕРЕКОДИРОВАНИЯ. ЗАДАЧА ОСЛОЖНЯЕТСЯ ТЕМ, ЧТО ДЛИТЕЛЬНОСТЬ ВИДЕОФАЙЛА ПРОИЗВОЛЬНА И ОПЕРАЦИЮ нужно ПРОИЗВЕСТИ В КОНСОЛИ ИЛИ ТЕРМИНАЛЕ БЕЗ GUI!
« Последнее редактирование: 05 Октября 2017, 14:33:39 от bghno »

Оффлайн gamayun

  • Активист
  • *
  • Сообщений: 823
  • Кто ищет, тот найдёт, может быть...
    • Просмотр профиля
Re: Обрезать 10 секунд видео с конца?
« Ответ #4 : 05 Октября 2017, 15:05:35 »
bghno, из начала вашей темы совсем не ясно что вы читали.И что значит длительность файла произвольна.Если вы читали man, то знаете как через ffmpeg посмотреть все свойства видеофайла, в том числе и его продолжительность.Пример я вам дал команды для терминала,вместо 36 сами знаете что можно поставить.Если для вас операция осложняется тем,ЧТО ДЛИТЕЛЬНОСТЬ ВИДЕОФАЙЛА ПРОИЗВОЛЬНА И ОПЕРАЦИЮ нужно ПРОИЗВЕСТИ В КОНСОЛИ ИЛИ ТЕРМИНАЛЕ БЕЗ GUI,то я не знаю что тут сказать.Давайте посмотрим,кто еще чего подскажет.
Не бери в голову

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7438
  • Luck Tales
    • Просмотр профиля
Re: Обрезать 10 секунд видео с конца?
« Ответ #5 : 05 Октября 2017, 15:22:58 »
проще некуда - пишем скрипт: читаем длину видео, вычитаем 10 секунд, кидаем в переменную, а переменную в ffmpeg
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

bghno

  • Автор темы
  • Гость
Re: Обрезать 10 секунд видео с конца?
« Ответ #6 : 05 Октября 2017, 19:06:40 »
вместо 36 сами знаете что можно поставить
не знаю, файл произвольный по длине, в конце файла информационный шум, надо просто без перекодирования отрезать 10 секунд, файлов много, буду писать скрипт, но для начала надо понять как проделать одну операцию

Пользователь добавил сообщение 05 Октября 2017, 19:10:55:
проще некуда - пишем скрипт: читаем длину видео, вычитаем 10 секунд, кидаем в переменную, а переменную в ffmpeg
ну начать бы с того как прочитать длину видео  :idiot2:
« Последнее редактирование: 05 Октября 2017, 19:10:55 от bghno »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7438
  • Luck Tales
    • Просмотр профиля
Re: Обрезать 10 секунд видео с конца?
« Ответ #7 : 05 Октября 2017, 19:20:28 »
apt install mediainfo
mediainfo --Inform="General;%Duration/String3%" file
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

bghno

  • Автор темы
  • Гость
Re: Обрезать 10 секунд видео с конца?
« Ответ #8 : 05 Октября 2017, 19:35:31 »
apt install mediainfo
mediainfo --Inform="General;%Duration/String3%" file
Спасибо! Это уже что-то
$ mediainfo --Inform="General;%Duration/String3%" SPCH0YcTtTg.mkv
00:01:13.901
То есть у меня клип 73 секунды, отнимаем 10 секунд получаем клип 63 сек, вот его то и надо сохранить с произвольным именем, а старый естественно удалить ( в баше я не силён если что)

Пользователь добавил сообщение 05 Октября 2017, 19:52:23:
Например:
ffmpeg -i 1.avi -vcodec copy -acodec copy -ss 00:00:36 -t 00:1:02 output.aviвырезка фрагмента с 36 секунды по 62.На матрешке не доводилось правда резать.
Да,t-это продолжительность фрагмента,а не по какую секунду.Забывается  :-\
Собственно два вопроса: будет ли это работать с mkv? Перекодирование не вариант, - сервер загружен под завязку.
И будет ли это работать с переменными? И как присвоить вывод mediainfo переменной?
« Последнее редактирование: 05 Октября 2017, 19:54:38 от bghno »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7438
  • Luck Tales
    • Просмотр профиля
Re: Обрезать 10 секунд видео с конца?
« Ответ #9 : 05 Октября 2017, 19:54:26 »
как-то так, особо не тестировал
Код: (bash) [Выделить]
#!/bin/bash
file="$1"
len=$(mediainfo --Inform="General;%Duration/String3%" "$file")
H=$(date -d $len +%-H)
M=$(date -d $len +%-M)
S=$(date -d $len +%-S)
s=${len: -3}
res=$[ $H * 3600 + $M * 60 + $S - 10 ].$s

ffmpeg -i "$file" -acodec copy -vcodec copy -ss 0 -t $res "cropped_$file"
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

bghno

  • Автор темы
  • Гость
Re: Обрезать 10 секунд видео с конца?
« Ответ #10 : 05 Октября 2017, 20:00:10 »
как-то так, особо не тестировал
Код: (bash) [Выделить]
#!/bin/bash
file="$1"
len=$(mediainfo --Inform="General;%Duration/String3%" "$file")
H=$(date -d $len +%-H)
M=$(date -d $len +%-M)
S=$(date -d $len +%-S)
s=${len: -3}
res=$[ $H * 3600 + $M * 60 + $S - 10 ].$s

ffmpeg -i "$file" -acodec copy -vcodec copy -ss 0 -t $res "cropped_$file"
Положил скрипт в папку с файлом, запустил, вот что выдало
(Нажмите, чтобы показать/скрыть)

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7438
  • Luck Tales
    • Просмотр профиля
Re: Обрезать 10 секунд видео с конца?
« Ответ #11 : 05 Октября 2017, 20:03:54 »
имя файла надо
./res "file" (кавычки нужны!)
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

bghno

  • Автор темы
  • Гость
Re: Обрезать 10 секунд видео с конца?
« Ответ #12 : 05 Октября 2017, 20:08:11 »
имя файла надо
./res "file" (кавычки нужны!)
работает чётко! Вот только кто ж ему (серверу) будет имя файла вводить?  :idiot2:

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7438
  • Luck Tales
    • Просмотр профиля
Re: Обрезать 10 секунд видео с конца?
« Ответ #13 : 05 Октября 2017, 20:10:14 »
ну можно в цикл
for f in *mp4 ; do ./res "$f"; done
ой, mkv конечно же
for f in *mkv ; do ./res "$f"; doneи лучше уже обрезанные файлы в другую папку кидать..
« Последнее редактирование: 05 Октября 2017, 20:16:09 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

bghno

  • Автор темы
  • Гость
Re: Обрезать 10 секунд видео с конца?
« Ответ #14 : 05 Октября 2017, 20:18:16 »
ну можно в цикл
for f in *mp4 ; do ./res "$f"; done
Ух, здорово, спасибо! Всё работает как надо! Можно пару вопросов? Что посоветуете почитать, чтобы так разбираться в баш, хотя бы на этом уровне? И второе, если у вас есть самописные скрипты и не жалко поделиться, можете скинуть в личку?

 

Страница сгенерирована за 0.031 секунд. Запросов: 25.