Разбить видео на изображения !?
Здравствуйте !!!
Подскажите пожалуйста можно ли с помощью js разбить видео на определенное количество изображений. |
В смысле получить с видео отдельные стоп-кадры?
Теоретически возможно. Захватываете изображение с элемента <video> в <canvas> с помощью функции ctx.drawImage https://developer.mozilla.org/ru/doc...xt2D/drawImage, потом преобразуете в jpg в <img> или сразу пересылаете на сервер или сохраняете в файл. (например, функцией toBlob https://developer.mozilla.org/ru/doc...Element/toBlob) Но практически все упрется в CORS. Такое будет возможно, если страница сайта и само видео передаются с одного сервера, или сервер, с которого передается видео дает в заголовках разрешение. https://developer.mozilla.org/ru/doc..._enabled_image |
Спасибо большое за ответ, !
Мои знание js пока на уровне copypaste.:( Мне нужно добиться следующего : Если в папке появляется видеофайл например avi,mov,... то js должен сделать из него 100 изображений (jpg или png) и сохранить их в определенную папку. |
Цитата:
Это пользователь должен как то указывать странице какой файл взять. Сам js не имеет никакого доступа к файловой системе. Будет ли это работать на странице с локального компьютера и если видео с него же - не знаю. Надо пробовать. Я подобными штуками занимался до того, как появились правила CORS, тогда работало везде, и с локального, и с серверов. Опять же сохранять скорее всего придется вручную. Говорить куда сохранить каждое изображение. Сам js без разрешения пользователя ничего делать не сможет. Думаю, возможно написать такое приложение на Electron (или чем то подобном). Это как бы сервер (Node.js), имеющий доступ к файловой системе и браузер, показывающий страницы, в одном флаконе. Но у меня такого опыта нет. |
Цитата:
Вот форматы, которые поддерживает Chrome (Edge, Opera, Яндекс). Firefox скорее всего те же самые. У Safari могут быть некоторые исключения дополнения. http://www.chromium.org/audio-video |
Цитата:
|
|
Цитата:
Единственное, в чем я уверен, что просто указать тайм-коды для видео и автоматом получать картинки по этим кадрам - не самый удачный вариант. Очень многие будут не лучшего качества. В видео есть keyframes - которые идут через определенные промежутки времени - это действительно нормальное изображение. Между ними идут кадры, которые представляют собой постепенное изменение этого кадра. Они не всегда бывают удачными. |
Цитата:
|
Цитата:
В интернете много конверторов которые из изображений делают видео файл, но мне нужно наоборот получить результат. |
Цитата:
И коли устраивает "ручками", то какого же черта вы в браузер с его обрубленными возможностями воткнулись, установите любой видеоредактор из бесплатных (в Win есть и штатный), открывайте видео, на временной дорожке отметили нужное, сохранили как изображения. Вы по своей воле обыденное превращаете в квест. |
Цитата:
|
Цитата:
Мы делали когда то такую штуку на С-Билдере. Одной конторе, которая оцифровывала свое видео нужны были стоп кадры для презентаций. Когда автоматом прогоняешь через равные промежутки, то далеко не все кадры получались хорошие. Но если взять кадр и сдвинуть тайм-код на 0.1-0.3 сек вперед-назад, то изображение получалось сильно лучше. |
Я не знаю что и чем вы делали, но это неверное представление о кодеках. Кстати, кодеков много, и у каждого свои особенности.
Допустим сцена, это стена, и эта статическая сцена длится 10 сек. Нет смысла сохранять 250 кадров этой сцены (для скорости 25 кадров в сек), можно сохранить один кадр указав его длительность 10 сек. Следующий кадр сохраненный будет отличаться от этого кадра, например, появляется мяч. При этом то, что этот кадр сохранен так как он отличается от кадра 250, не означает, что кадр 250 будет иметь качество 100, а 251 всего 50. Качество для всего задается компрессором и выбранным битрейтом, чем выше битрейт, ты выше качество и размер на выходе, и наоборот, чем ниже, тем хуже, но и размер меньше. Исходниками для видео конечного (для конечного формата) могут быть любые медиаданные, от картинок до видео, причем видео может быть любого формата, то есть, использовать любой кодек и компрессор. В бытность свою, когда занимался видео довольно много, то сначала исходниками зачастую были записи VHS, а их оцифровка, это MotionJPEG. Конечный продукт, это MPEG2 - видео диски. Естественно, что исходники и полученные их же кадры из MPEG2, это большая разница, так как они уже сжаты, то есть имеют потери. Причем получить кадры сложнее из MPEG2, вернее получить их не проблема, проблема была с наличием редакторов MPEG умеющих работать с таким видео покадрово. Но и такие нашлись. |
Оцифровка шла с кинопленок и S-VHS в mp4.
А эффекты получались такие - есть какое то движение. Человек машет рукой. На отдельных стоп-кадрах рука могла быть смазанная, какая то полупрозрачная. Но если сдвинуть тайм-код чуть вперед-назад - уже изображение четкое (причем само движение еще не закончилось). Попадаешь по тайм-коду на key-frame или совсем рядом с ним - все хорошо. Если дальше от него, то могли быть искажения. Самое интересное, что если брать сами кадры кинопленки в этом месте, то там все изображения достаточно четкие. |
Цитата:
|
Так стоп-кадры то брались не с S-VHS, а уже из mp4. Там то опорные кадры есть.
Как делали оцифровку с пленок - не знаю. Скорее всего сначала перегоняли на S-VHS |
Цитата:
В Adobe Premiere есть инструмент, который удаляет черезстрочность, складывая четные и нечетные поля кадра в один. Вы либо этого не сделали, либо вообще не подозревали, что это надо сделать. :) На ТВ, чтобы увеличить частоту развертки по вертикали, кадр передается двумя полями, через строку - четные и нечетные. Затем появились матричные экраны, сканирование которых, это совсем иное, поэтому в ТВ появилась "память на кадр", в которой формировался полный кадр, который уже потом отдавался на развертку экрана. Вот подобное если бы было вами сделано в редакторе, то никаких полупрозрачных рук вы бы не увидели. Ну а "смазанное", так такие огрехи встречаются и на фото, природа их иная, и в видео они никак не являются следствием применения опорных кадров. |
Цитата:
А те, кто цифровал... Ну не знаю - это их работа основная. Они только и занимаются, что перегоняют на SVHS и кинопленки хранящиеся у них материалы для ТВ, киностудий... |
Ну значит осталось как было, а вы принимаете это как огрехи кодека, в частности опорных кадров, хотя они к этому никакого отношения не имеют.
Был у меня товарищ, страстный любитель снимать на камеру. Объездил все наши "домашние курорты", от Таиланда до ... Австралии только не добрался. Сначала была у него VHS, затем появились mpeg на mini-CD, затем цифра на картах. Я столько видео его для него перелопатил. Если есть среди знакомых диски видеокамер с MPEG2, возьмите такой и положите его на видеодоржку в Premiere. Как профессиональное оно конечно не годится, но как домашнее, оно качества отменного будет, при этом каждый кадр. Если при этом свести поля кадров, то огрехи могут встречаться только как следствие когда быстро менялась позиция камеры и автофокус не успел отработать или подобное. А подобного описываемого вами никак не будет, да и какой кадр видеоряда опорный, а какой нет, вы и знать не можете, это можно высчитать только углубившись в параметры видео, как и с какими параметрами оно было упаковано. |
laimas,
Поделитесь опытом, вы использовали консольную обработку видео на сервере? Что использовали при этом? Насколько я понимаю для того же склеивания файлов, тот же ffmpeg должен работать с одинаковыми файлами по разрешению, кодеку Сейчас время меняется и тянут за уши обработку видео в веб пример https://www.kapwing.com |
Нет, чего-то кардинального с видео на сервере не приходилось делать, не стояло передо мной таких задач. Что-то проще, как то принять видео и конвертировать его в формат, приготовить изображение кадра, такое было. Большие задачи с видео, это на видеохостингах, а у меня основное с чем часто связан, это торговля, услуги или нечто специфическое.
|
Спасибо! Не могу +
|
Цитата:
|
не все там просто
есть гора либ(посредников, фреймсерверов ...) работающих с ним, да и ffmpeg сам может скомпилирован по разному (CUDA, VAAPI ...) я спросил если работал, понятно это время и чтение докуменации, а иногда и в исходный код смотреть, спасибо, что не отказал :) |
С видео монтажным столом когда либо работали? FFMPEG ничем не отличается от него по сути, разница только в том как, если первые, это графический интерфейс и шевелить мозгами, то второй, это командная строка и задаем желаемое параметрами. Кстати, если взять Adobe After Effects, то в нем помимо готовых фильтров и пресетов, можно ваять шедевры и посредством макросов, если знать язык, понимать среду с которой работаем, иметь вкус художественный и богатое воображение.
А на стол вы может поместить какие угодно видео данные, если в системе есть соответствующий кодек и редактор может декодировать поток, то это видео будет на дорожке. И как-то по барабану, под Win ли при этом ПО, или под Линукс, Мак, и т.д. Нет на данном этапе уже никаких иных кодеков, есть один формат. Какая проблема это же сделать и из под командной строки. Вы открывая простое JPEG изображение в канве JS, или в GD, ImageMagick, задумываетесь над тем, что при этом происходит? Вряд ли. Но ведь при этом всегда будет происходить одно и тоже - малое по объему изображение на диске, скушает приличную память, как будто оно не сжатое и девственное. И не важно чем открывалось. А если копируем из в, то будет создан еще ресурс, ну и т.п. действия. Так и любой редактор, не важно как выполняется, но обязательно будут последовательные операции, ибо все и сразу сделать нельзя. Так что не вижу никаких проблем. А если не может, то это компиляция какой-то урезанной по функциям приблуды, а не потому, что она в принципе такого не может делать. |
Цитата:
кроме как ffmpeg -ss 00:00:02 -i "file.mov" -f image2 -vframes 1 "file_out.jpg" -s 320x240 Вырезает первый кадр второй секунды из файла file.mov и сохранить её в файле file_out.jpg. Никогда больше не работал сним. А мне нужна конкактенация, фильтры ... Есть доки но там к единому формату надо сводить |
Если бы вместо Adobe Premiere и After Effects я занимался ffmpeg, то я бы слету дал ответ, но ... Я и редакторы то подзабываю уже, если не пользуемся, то из памяти стирается.
Но в сети море примеров и о соединении, вырезках, фильтрах, можно поискать. |
да примеров много, но есть много но
эти проекты старые забытые, ну не буду я ставить 12 Ubuntu и докер не буду https://github.com/avxsynth/avxsynth/wiki/System-Setup или делают свое дело, но очень долго 30 мин 3 -х минутный ролик конкатенируют https://github.com/mifi/editly поскидываю может кому и пригодятся ссылки, решения |
Часовой пояс GMT +3, время: 02:16. |