У меня довольно простые потребности в редактировании - мне нужно разрезать несколько видео, возможно вставить несколько PNG между ними и присоединиться к этим видео (не нужны переходы, эффекты и т. Д.). По сути, pitivi
делаю то, что хочу - за исключением того, что я использую 640x480 30 кадров в секунду AVI с камеры, и как только я добавляю более пары минут такого материала, он pitivi
начинает зависать при предварительном просмотре и, таким образом, становится непригодным для использования.
Итак, я начал искать инструмент командной строки для Linux; Я предполагаю, что только ffmpeg
( командная строка - Использование ffmpeg для вырезания видео - Super User ) и mplayer
( Sam - Редактирование видеофайла с mencoder под linux ) пока что кандидаты, но я не могу найти примеры использования, которое я имею в виду.
По сути, я бы предположил, что есть инструменты кодирования и проигрывателя (такие как ffmpeg
vs ffplay
или mencoder
vs mplayer
) - такие, что, для начала, последовательность редактирования может быть указана непосредственно в командной строке, предпочтительно с разрешением кадра - псевдокод будет выглядеть так:
videnctool -compose --file=vid1.avi --start=00:00:30:12 --end=00:01:45:00 --file=vid2.avi --start=00:05:00:00 --end=00:07:12:25 --file=mypicture.png --duration=00:00:02:00 --file=vid3.avi --start=00:02:00:00 --end=00:02:45:10 --output=editedvid.avi
... или может иметь текстовый файл "playlist", например:
vid1.avi 00:00:30:12 00:01:45:00
vid2.avi 00:05:00:00 00:07:12:25
mypicture.png - 00:00:02:00
vid3.avi 00:02:00:00 00:02:45:10
... так что это может быть вызвано с
videnctool -compose --playlist=playlist.txt --output=editedvid.avi
Идея здесь будет то , что все видео в том же формате - позволяет инструмент , чтобы избежать перекодирования, а просто делать «сырую копию» вместо (как в mencoder
«s скопировать кодек:" -oac copy -ovc copy
«) - или в отсутствии того, Несжатое аудио / видео будет в порядке (хотя это займет немного места). В случае неподвижного изображения инструмент будет использовать кодировку, установленную видеофайлами.
Дело в том, что я до сих пор вижу это mencoder
и ffmpeg
могу работать с отдельными файлами; например, вырезать один раздел из одного файла или объединить файлы ( mencoder
также имеется Редактировать списки решений (EDL) , которые можно использовать для резки с точностью до кадра - так что вы можете определить несколько областей вырезания, но он снова приписывается одному файлу ). Это подразумевает, что я должен сначала порезать куски из отдельных файлов (каждый из которых потребует собственный временный файл на диске), а затем объединить их в окончательный видеофайл.
Тогда я бы вообразил, что существует соответствующий инструмент проигрывателя, который может читать тот же формат формата командной строки / файл списка воспроизведения, что и инструмент кодирования - за исключением того, что он не будет генерировать выходной файл, а вместо этого воспроизводит видео; например, в псевдокоде:
vidplaytool --playlist=playlist.txt --start=00:01:14 --end=00:03:13
... и, при наличии достаточного количества памяти, он будет генерировать предварительный просмотр видео с низким разрешением в ОЗУ и воспроизводить его в окне, предлагая при этом некоторое ограниченное взаимодействие (например mplayer
, сочетания клавиш для воспроизведения, паузы, перемотки назад, пошагового кадра). ). Конечно, я представляю время начала и окончания для ссылки на весь список воспроизведения и включаю любой файл, который может оказаться в этом регионе в списке воспроизведения.
Таким образом, конечным результатом всего этого будет: операция командной строки; нет временных файлов во время редактирования - и также нет временных файлов (или транскодирования) при рендеринге окончательного вывода ... что я сам думаю было бы неплохо.
Итак, хотя я думаю, что все вышеперечисленное может быть немного натянутым - существует ли что-нибудь, что приближало бы рабочий процесс, описанный выше?
mkvmerge
, обязательно позабочусь об этом .. Ура!Ответы:
Да, есть. Попробуйте использовать приложение под названием «Melt». Смотрите документацию здесь:
https://www.mltframework.org/docs/melt/
Если вы используете дистрибутив Debian:
источник
brew install mlt
Хорошо, так как я не могу найти много информации об
melt
использовании командной строки, вот некоторые примечания .. (и после этого посмотрите этот ответ. Использование подстановки процессов для обмана программ, ожидающих файлы, с конкретными расширениями в качестве аргумента? - Unix & Linux Stack Exchange для скрипта пример черезbash
)Для начала - есть пакет Ubuntu / Debian для
melt
(у меня Ubuntu 11.04 с MLT melt 0.6.2); ссылка, предоставленная @Ielton, предназначена для «Media Lovin 'Toolkit» (MLT), которыйmelt
является частью (но такжеopenshot
иkdenlive
). Вот ссылка на текстовые файлы документации из их git: mltframework.org/mlt.git/tree - docs / ; обратите внимание, что в вики есть страница о BuildScripts .На данный момент самая большая (единственная) проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти способ экспортировать несжатую композицию видео (либо в виде
png
кадров, либо в некоторый несжатый видеоформат).Во-первых, в командной строке
melt
вы можете управлять воспроизведением через кадры; например, чтобы «создать» белую заготовку длиной 15 кадров и просмотреть ее с помощью встроенногоmelt
проигрывателя, используйтеКогда вы просматриваете с помощью
melt
, вы также получите информацию о командной строкеstderr
для встроенного проигрывателя:Как только
melt
воспроизведение закончится, оно не выйдет, поэтому вы должны набратьq
для выхода.Следует отметить, что в России есть так называемые «производители» и «потребители»
melt
. Если ничего не указано, то «потребителем» по умолчанию является окно SDL (Simple DirectMedia Layer), воспроизводящее видео; поэтому приведенная выше команда такая же как:Таким образом, если мы хотим сохранить то
melt
, что отображается, мы должны изменить потребителя на то, что будет поддерживать формат файла. Чтобы получить список потребителей:libdv
Выход DV потребителя отформатированных данных непосредственноstdout
, так , чтобы сохранить видео на.dv
файл , который вы хотите сделать:Обратите внимание, что из перечисленных потребителей единственным форматом, который я пробовал, также можно открыть в другом приложении
libdv
(я использовал вvlc
качестве другого приложения); однако, это может не сработать для другого типа транскодирования ( например, если вместо пустого я пытаюсь преобразовать фрагмент из.flv
файла, результирующий файл .dv открывается и воспроизводитсяvlc
, но поврежден ).Теперь для редактирования части; по существу, вы можете указать ряд разделов file-name / in / out непосредственно в командной строке; скажем, у вас есть файл,
video.avi
- тогда вы могли бы сделать:или чуть лучше отформатирован:
Это означает, что
video.avi
от его кадра 30 до его кадра 79 будут воспроизведены; затем 15-кадровый бланк; и затемvideo.avi
последовательность от кадра 30 до кадра 79 снова.Чтобы использовать изображения (скажем,
.png
) в композиции для редактирования видео:Обратите внимание , что для
test.png
,in=
параметр не должен быть 0 - однако, изображение будет отображатьсяout
-in
время; в этом случае было бы проще простоin=0
полностью исключить параметр.Хорошо, что эта последовательность редактирования может быть сохранена - или, как
melt
она называется, сериализована - в файл; Обратите внимание, что существует два способа такой сериализации: «простой» или XML. Например, чтобы сохранить указанную выше команду как «простой» сериализованный файл, мы можем просто добавить-serialise [filename]
переключатель в команду:Теперь
file.melt
содержит:По-видимому, этот «простой» сериализованный формат файла не содержит символа «комментирования» - если я пытаюсь добавить
# comment
строку « », онmelt
жалуется: « Не удалось загрузить« # comment » » (но, кроме того, кажется, что такой строка игнорируется, и воспроизведение продолжается в любом случае). ".melt
" кажется расширением, котороеmelt
распознает как простой сериализованный файл.Теперь, чтобы воспроизвести этот сериализованный файл, мы в принципе могли бы просто вызвать
melt file.melt
- однако, более полная командная строка была бы:... что означало бы: использовать
melt_file
«производитель», чтобы открытьfile.melt
, и визуализировать его кадры в «потребителе»sdl
(окне).Обратите внимание, что у меня есть опыт, что (скажем)
.flv
видео воспроизводятся без проблем в командной строке - однако, вызывают ошибку сегментации, когда они указаны вfile.melt
сериализованном файле!.dv
видео, созданныеmelt
сами по себе, кажется, работают нормально вfile.melt
...Тип сериализации XML может быть достигнут с помощью
-consumer xml:
переключателя ( вместо-serialise
) - так что приведенный выше пример теперь будет:Чтобы «воспроизвести» недавно сгенерированный
file.mlt
XML-файл, теперь можно сделать напрямуюmelt file.mlt
- или, более полная командная строка будет:... что означало бы: использовать
xml
«продюсер» ( обратите внимание, ранее он был потребителем ), чтобы открытьfile.mlt
, и отобразить его фреймы в «потребителе»sdl
(окне).Обратите внимание, что в этом случае я наблюдал, что те же самые
.flv
видео, которые вызвали segfault с простым файлом сериализации - прекрасно работают с файлом XML сериализации!В этом случае полученный
file.mlt
XML-файл имеет намного больше настроек, таких как разрешение, частота кадров, информация о кодеках и т. Д., Но с ним также сложнее работать напрямую в текстовом редакторе:источник
Решение этой проблемы ffmpeg выглядит примерно так:
Он использует именованные каналы, поэтому нет необходимости создавать временные файлы на диске, он позволяет разрезать фрагменты видеоклипов и добавлять изображения.
В этом примере используется время 30-60 первого ввода, затем добавляется первая минута второго ввода, затем вставляется файл изображения, а затем все третье видео.
Код снят с:
Страница сцепления ffmpeg: https://trac.ffmpeg.org/wiki/Concatenate
Страница суперпользователя Использование ffmpeg для разрезания видео
страница суперпользователя https://video.stackexchange.com/questions/12105/add-an-image-in-front-of-video-using-ffmpeg
источник
npm
установить его), поэтому я решил упомянуть об этомЯ тоже искал такой инструмент, и кажется, что расплав - это инструмент для работы, однако документацию практически невозможно понять / пропустить. Вы можете сделать практически любую комбинацию редактирования. У меня были кадры с «экшн-камеры» ... хотя звук был непригодным. Я присоединился к видео (h264), добавил 60-кадровое замирание и заменил звук звуковой дорожкой, используя:
Вы можете прочитать больше об этом здесь . Основной сайт здесь .
источник