Еще прошу подсказки. Не могу понять, почему из внешних приложений только из тотал командера могу файлы на тайм лайн перетащить? Из проводника или асдсее, например, перетаскивать совсем не желает. Мож что в настройках сбил?
навряд ли. Вообще, у Вегаса очень тяжелые отношения с проводником Windows (как бы то ни было, а explorer внутри вегаса -- это все тот же перелицованный проводник Windows). Как-то начиная то ли с 10й то ли с 11й версии, программеры тетки решили что-то там модифицировать, что-то надстраивать, чтобы получить какой-то эфемерный дополнительный функционал в палетке explorer Вегаса. Ну и с тех пор все не очень ладно с этим. У меня например (на только что почившем в бозе компьютере) не хочет открываться содержимое папки, которая выбрана в дереве папок слева. Ну и вообще глюкавило. Так и живем...
Здравствуйте, одноклубники!) Хочу спросить. Можно ли в Вегасе монтировать фильм в формате mts, а потом конвертировать в другой формат? Или сначала конвертировать, а потом монтировать? Пытался работать с форматом avi, Вегас то его не распознаёт совсем, то не корректно воспроизводит. Что посоветуете, ребята? В какой формат обычно конвертируют коммерческое видео, и на каком этапе лучше это делать? Заранее благодарю за ответы!
Конечно можно. Я конечно не спец, но именно так и делаю, закидываю в Вегас файлы mts, режу, кадрирую, добавляю звук и т.п., а затем выводим в нужном формате.
Конечно можно. Но менять формат не стоит, ибо это современный кодек H.264, который выводит превосходное качество изображения, не раздувая объем, как это делают все остальные при таком же качестве. В интернете. На торрентах. Это такие сайты, куда производители разного софта сливают специально созданные бесплатные версии своих платных программ, но не требующие оплаты, для тех, кто не может купить платные версии. В качестве бонуса для малоимущих. Как бы пожертвования. Но это только для бедных. Кто в состоянии покупать, тот покупает эти же программы по полной.
Уважаемые знатоки, подскажите - можно ли (и как) с помощью Sony Vegas сделать таймлапс из MTS с видеокамеры (не фото) ?
Думаю, что в видеоряде по всему промежутку равномерно удалить некую последовательность кадров и получится таймлапс. Но это кропотливая работа.
Хм.. а задача интересная. Можно ли как нибудь сей процесс автоматизировать? - - - Добавлено - - - Нужно, так потери в качестве будут минимальны и минимум конфликтов при монтаже
Конечно - - - Добавлено - - - PHP: /** Copyright (c) 2004, Folding Rain Filmworks Inc.** author: Joe Howes (joeh@guild1.com)** I wrote this script while working on the making-of documentary* for The Libertine. I was working with the two geniunses behind* the design of all the special effects for the Hallmark* mini-series "Dreamkeeper". The director of that film is an* underrated and overawesome guy named Steve Barron, who pioneered* the look of about 90% of the television you saw in the nineties.* He was the first director to embrace speeding through a scene by* jump-cutting through hundreds of frames in a very short time,* resulting in an ultra-cool stutter effect that rocks ass.** Anyway, Steve is a great guy, a super cool dude, and his work* quite frankly gives me a boner for filmmaking like no one else.** http://www.imdb.com/name/nm0006625/** USAGE:* Select one and only one video event.** Number of Jumps: The number of jump cuts you want to end up with.* Jump Length: The length (in frames) of the visible jumps.* Inter-Jump Length: The length (in frames) of the bits between the* visible frames that will be removed.** Gather: If "Don't", all the jumps will be left in place.* If "Front", the jumps will be gathered together at the start* point of the original event.* If "Back", the jumps will be gathered together at the end* of the cutting area, bumped right up against the remaining* event.** After application, the jump cuts will be bumped right up against* the remaning portion of video.** v1.1: Aug. 22, 2004*/import System;import System.Collections;import System.Text;import System.IO;import System.Drawing;import System.Windows.Forms;import Sony.Vegas;/*** Just get the selected event (there can be only one) and Barronize it.*/try { var dlog = new BarronizerDialog(); var done:Boolean = false; while (!done) { if (DialogResult.OK == dlog.ShowDialog()) { var targetEvent:TrackEvent = getSelectedEvent(); if (targetEvent != null) { // Validate input var numJumps : Number; if (dlog.numJumps.Text == "*") { numJumps = new Number(-1); } else { numJumps = new Number(dlog.numJumps.Text); } //MessageBox.Show("JOE: " + numJumps, "JOE"); /*if (numJumps.isNaN()) { MessageBox.Show("Number of jumps must be either '*' or a number.", "WARNING"); }*/ // Put together the gather option var gatherOption = "NO"; if (dlog.gatherFrontRadio.Checked) { gatherOption = "FRONT"; } else if (dlog.gatherBackRadio.Checked) { gatherOption = "BACK"; } // Put together the fade option var fadeOption = "NO"; if (dlog.fadeInRadio.Checked) { fadeOption = "IN"; } else if (dlog.fadeOutRadio.Checked) { fadeOption = "OUT"; } // Barronize! done = barronize(targetEvent, numJumps, dlog.jumpLen.Text, dlog.interJumpLen.Text, gatherOption, fadeOption); } } else { done = true; } } Vegas.UpdateUI();}catch (e) { MessageBox.Show(e, "WARNING");}/*** Jump-cut through a number of frames to produce a cool skipping effect.*/function barronize(evt:TrackEvent, numJumps, jumpLen, interJumpLen, gatherOption, fadeOption) { var theTrack : Track; // The track this is all happening on var theGroup : TrackEventGroup; // The group this track belongs to var node : TrackEvent; // A stutter node var internode : TrackEvent; // An internode var nodeTC : Timecode; // Node length in frames converted to timecode var internodeTC : Timecode; // Internode length in frames converted to timecode var originalStart : Timecode; // Original starting timecode of the event var effectLen : Timecode; var stutterNodeList : Array; var tcCounter : Timecode; var index = 0; // Some init theTrack = evt.Track; theGroup = evt.Group; nodeTC = new Timecode("00:00:00," + jumpLen); internodeTC = new Timecode("00:00:00," + interJumpLen); originalStart = evt.Start; // If numJumps is -1, just make as many jumps as possible in the event // given the jumpLen and interJumpLen if (numJumps == -1) { var evtFrames = evt.Length.FrameCount; var divisor = new Number(jumpLen) + new Number(interJumpLen); numJumps = Math.floor(new Number(evtFrames / divisor)); } // Figure out the amount of time the stutter effect will consume of the event effectLen = new Timecode("00:00:00,00"); for (var i = 0; i < numJumps; i++) { effectLen += nodeTC + internodeTC; } // If there's not enough event, let 'em know and bail if (effectLen > evt.Length) { MessageBox.Show("Event not long enough.", "WARNING"); return false; } stutterNodeList = new Array(); node = evt; stutterNodeList[index++] = node; // -- SPLIT -- for (var i = 0; i < numJumps; i++) { // Make a node (no, this is not reversed, we are making a NODE) internode = node.Split(nodeTC); // Make an internode (no, this is not reversed, we are making an INTERNODE) node = internode.Split(internodeTC); // If the node is not the final leftover chunk, add it to the list of // stutter nodes that need to be bumped up against the leftover event if (i < (numJumps - 1)) { stutterNodeList[index++] = node; } // Remove the internode theTrack.Events.Remove(internode); } // -- GATHER -- // If there's no gathering to be done, skip it if (gatherOption != "NO") { // Default to FRONT tcCounter = originalStart; if (gatherOption == "BACK") { // Now we move all the stutter nodes up against the leftover event tcCounter = node.Start; // Count back nodeTC frames for every stutter node for (var i = 0; i < numJumps; i++) { tcCounter = tcCounter - nodeTC; } } // Adjust them all for (var i = 0; i < stutterNodeList.length; i++) { node = stutterNodeList[i]; /*if (groupBaseList.Contains(node)) { theGroup.Remove(node); }*/ node.AdjustStartLength(tcCounter, nodeTC, true); tcCounter += nodeTC; } } // -- FADE -- not implemented yet // If there's no fading to be done, skip it if (fadeOption != "NO") { } return true;}/*** Function: getSelectedEvent()** Find the selected video event while making sure that the only event selected* in the entire project is a video event, and there is only one.*/function getSelectedEvent() { var done:Boolean = false; var targetEvent:TrackEvent = null; var selectCount = 0; // Search all groups for (var track in Vegas.Project.Tracks) { for (var evnt in track.Events) { if (evnt.Selected) { targetEvent = evnt; selectCount++; } } } if (selectCount < 0) { throw("No video events selected."); } if (selectCount > 1) { throw("More than one event selected. Select one and only one video event."); } if (targetEvent == null || targetEvent.IsAudio()) { throw("No video events selected."); } return targetEvent;}/*** My homage to Steve...his very own dialog box.*/class BarronizerDialog extends Form { var numJumps : TextBox; var jumpLen : TextBox; var interJumpLen : TextBox; var barronizeButton : Button; var cancelButton : Button; var cuttingParamGroup : GroupBox; var gatherNoRadio : RadioButton; var gatherFrontRadio : RadioButton; var gatherBackRadio : RadioButton; var gatherParamGroup : GroupBox; var fadeNoRadio : RadioButton; var fadeInRadio : RadioButton; var fadeOutRadio : RadioButton; var fadeParamGroup : GroupBox; function BarronizerDialog() { this.Text = "Barronizer"; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.StartPosition = FormStartPosition.CenterScreen; this.numJumps = new TextBox(); this.jumpLen = new TextBox(); this.interJumpLen = new TextBox(); this.Width = 237; this.Height = 219; // numJumps var numJumpsLabel:Label = new Label(); numJumpsLabel.Location = new System.Drawing.Point(8, 25); numJumpsLabel.Name = "numJumpsLabel"; numJumpsLabel.Size = new System.Drawing.Size(100, 16); numJumpsLabel.TabIndex = 2; numJumpsLabel.Text = "Number of Jumps:"; numJumps.Location = new System.Drawing.Point(110, 22); numJumps.Name = "numJumps"; numJumps.Size = new System.Drawing.Size(80, 20); numJumps.TabIndex = 1; numJumps.Text = "*"; // jumpLen var jumpLenLabel:Label = new Label(); jumpLenLabel.Location = new System.Drawing.Point(8, 50); jumpLenLabel.Name = "jumpLenLabel"; jumpLenLabel.Size = new System.Drawing.Size(100, 16); jumpLenLabel.TabIndex = 2; jumpLenLabel.Text = "Jump Length:"; jumpLen.Location = new System.Drawing.Point(110, 47); jumpLen.Name = "jumpLen"; jumpLen.Size = new System.Drawing.Size(80, 20); jumpLen.TabIndex = 1; jumpLen.Text = "2"; // interJumpLen var interJumpLenLabel:Label = new Label(); interJumpLenLabel.Location = new System.Drawing.Point(8, 75); interJumpLenLabel.Name = "interJumpLenLabel"; interJumpLenLabel.Size = new System.Drawing.Size(100, 16); interJumpLenLabel.TabIndex = 2; interJumpLenLabel.Text = "Inter-Jump Length:"; interJumpLen.Location = new System.Drawing.Point(110, 72); interJumpLen.Name = "interJumpLen"; interJumpLen.Size = new System.Drawing.Size(80, 20); interJumpLen.TabIndex = 1; interJumpLen.Text = "12"; // cuttingParamGroup cuttingParamGroup = new GroupBox(); cuttingParamGroup.Controls.Add(numJumpsLabel); cuttingParamGroup.Controls.Add(numJumps); cuttingParamGroup.Controls.Add(jumpLenLabel); cuttingParamGroup.Controls.Add(jumpLen); cuttingParamGroup.Controls.Add(interJumpLenLabel); cuttingParamGroup.Controls.Add(interJumpLen); cuttingParamGroup.Location = new System.Drawing.Point(8, 8); cuttingParamGroup.Name = "cuttingParamGroup"; cuttingParamGroup.Size = new System.Drawing.Size(216, 100); cuttingParamGroup.TabIndex = 4; cuttingParamGroup.TabStop = false; cuttingParamGroup.Text = "Cutting Options"; this.Controls.Add(cuttingParamGroup); // Gathering gatherNoRadio = new RadioButton(); gatherNoRadio.Location = new System.Drawing.Point(10, 20); gatherNoRadio.Size = new System.Drawing.Size(50, 16); gatherNoRadio.Name = "gatherNoRadio"; gatherNoRadio.TabIndex = 1; gatherNoRadio.Text = "Don't"; gatherFrontRadio = new RadioButton(); gatherFrontRadio.Location = new System.Drawing.Point(85, 20); gatherFrontRadio.Size = new System.Drawing.Size(50, 16); gatherFrontRadio.Name = "gatherFrontRadio"; gatherFrontRadio.TabIndex = 1; gatherFrontRadio.Text = "Front"; gatherBackRadio = new RadioButton(); gatherBackRadio.Location = new System.Drawing.Point(160, 20); gatherBackRadio.Size = new System.Drawing.Size(50, 16); gatherBackRadio.Name = "gatherBackRadio"; gatherBackRadio.TabIndex = 1; gatherBackRadio.Text = "Back"; gatherBackRadio.Checked = true; // Gathering group gatherParamGroup = new GroupBox(); gatherParamGroup.Controls.Add(gatherNoRadio); gatherParamGroup.Controls.Add(gatherFrontRadio); gatherParamGroup.Controls.Add(gatherBackRadio); gatherParamGroup.Location = new System.Drawing.Point(8, 115); gatherParamGroup.Name = "gatherParamGroup"; gatherParamGroup.Size = new System.Drawing.Size(216, 45); gatherParamGroup.TabIndex = 4; gatherParamGroup.TabStop = false; gatherParamGroup.Text = "Gathering Options"; this.Controls.Add(gatherParamGroup); // Fading fadeNoRadio = new RadioButton(); fadeNoRadio.Location = new System.Drawing.Point(10, 20); fadeNoRadio.Size = new System.Drawing.Size(50, 16); fadeNoRadio.Name = "fadeNoRadio"; fadeNoRadio.TabIndex = 1; fadeNoRadio.Text = "Don't"; fadeNoRadio.Checked = true; fadeInRadio = new RadioButton(); fadeInRadio.Location = new System.Drawing.Point(85, 20); fadeInRadio.Size = new System.Drawing.Size(50, 16); fadeInRadio.Name = "fadeInRadio"; fadeInRadio.TabIndex = 1; fadeInRadio.Text = "In"; fadeOutRadio = new RadioButton(); fadeOutRadio.Location = new System.Drawing.Point(160, 20); fadeOutRadio.Size = new System.Drawing.Size(50, 16); fadeOutRadio.Name = "fadeOutRadio"; fadeOutRadio.TabIndex = 1; fadeOutRadio.Text = "Out"; // Fading group fadeParamGroup = new GroupBox(); fadeParamGroup.Controls.Add(fadeNoRadio); fadeParamGroup.Controls.Add(fadeInRadio); fadeParamGroup.Controls.Add(fadeOutRadio); fadeParamGroup.Location = new System.Drawing.Point(8, 170); fadeParamGroup.Name = "fadeParamGroup"; fadeParamGroup.Size = new System.Drawing.Size(216, 45); fadeParamGroup.TabIndex = 4; fadeParamGroup.TabStop = false; fadeParamGroup.Text = "Fade Options"; //this.Controls.Add(fadeParamGroup); // Buttons barronizeButton = new Button(); barronizeButton.DialogResult = System.Windows.Forms.DialogResult.OK; barronizeButton.Text = "Barronize!"; barronizeButton.Left = 65; barronizeButton.Top = 165; AcceptButton = barronizeButton; Controls.Add(barronizeButton); cancelButton = new Button(); cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; cancelButton.Text = "Cancel"; cancelButton.Left = 148; cancelButton.Top = 165; CancelButton = cancelButton; Controls.Add(cancelButton); }}
А вообще такую и разную другую штуку умеет делать Excalibur http://www.jetdv.com/excalibur/home.php За волшебным пинком для нее можно в личку
не знаток в вегасе, но подобное делал в премьере изменением скорости воспроизведения участка с псевдо таймлапсом. лишние кадры соответственно выкидываются автоматически при ускорении водеоучастка.
Таким способом, скорее всего, получится жуткий строб на видео. Я бы попробовал применить в таймлайне ускоряющий коэффициент. Не помню только, какое там максимально доступное значение.
Вегас умеет так, надо с зажатым Ctrl потянуть за конец ивента к его началу, но это будет 4x. Потом на этот ивент можно накинуть огибающую Velocity и она даёт ещё 3x. Итого 12кратное ускорение. Если это удовлетворяет - ок. Надо только не забыть в свойствах ивента поставить Disable Resample иначе будет месиво из motion blur-а.
Спасибо всем откликнувшимся! Вегас позволяет увеличить скорость только в 4 раза. (возможно и сильнее, но я не знаю как). А в камере вроде есть режим 6 кадров в секунду. Если использовать эти две фичи совместно, то может быть что-то вразумительное получится - надо попробовать. Это интересно. Ещё бы понять как сделать "огибающую Velocity" (опыта пока маловато).
Правой кнопкой по ивенту, Insert/Remove Envelope -> Velocity "Envelope" = "огибающая", это будет зелёная полоса ровно посередине ивента, на ней можно ставить точки и ускорять/замедлять в определенных частях. Можно тупо утащить ее наверх (не ставя точек) и тогда ко всему ивенту применится скорость 300%. Следите за тем, что длина ивента не изменится, и, скорее всего, футаж будет три раза проигрываться по кругу, если Вы не подкорректируете длину ивента (и у Вас в свойствах ивента стоит [v] Loop, это настройка включена по умолчанию в Вегасе). Ищите вырез треугольником сверху на ивенте, чтобы увидеть, где реальный футаж закончился и пошло повторение
2Beast2537 Большое спасибо! Получилось! А с Disable Resample... стояло Smart Resample - что-то разницы на превью не почувствовал. PS: Ага вот заметил разницу - после рендеринга при проигрывании m2ts в VLC на стоп кадре!
Всё зависит от количества движения в кадре Ж-) На время просчёта также этот resample сильно влияет. Конечно, motion blur штука хорошая во многих применениях, но в Вегасе реализована погановастенько. Всё что мне нужно блюрить по движению я сую в афтер (
Насчет автоматизации я не знаю. Я знаю как отсчитывать покадрово. Но как по всей длине вырезать равномерно определенное количество кадров-это не знаю. Хотя, если вдуматься про таймлапс из целого видео фильма-то это получается нечто не выполнимое. Потому, что надо снимать по крайней мере очень длинный непрерывный фильм и оттуда вырезать абсолютное большинство кадров, что бы получился таймлапс. Тем более таймлапс должен быть хотя бы несколько минут. Но кто будет непрерывно снимать, например три часа, что бы получилось две минуты фильма в стиле таймлапс? Допустим заход солнца. Про формат MTS или m2ts -это единственный на сей день формат, кодек H.264, в котором сейчас снимают все современный камеры и фотоаппараты. Причем одновременно монтирую кадры из видеокамеры Sony хендикам и фотоаппарата Sony a-77. Камера сниает в 25 кадров, а фотоаппарат снимает в 50. Делаю фильм частотой в 50 кадров. Никаких конфликтов с разными форматами нет. Это очень хорошо. Не вижу смысл вообще его конвертировать во что-то другое. Я сам уже несколько лет снимаю именно в этом формате, к тому же сразу задаю максимальный битрейт, что бы не потерять в качестве. Даже фильм, размером с полчаса, занимает вполне компактный размер гигов 8. Вполне разумный объем по нашим меркам. К чему резать самое драгоценное-качество картинки, конвертируя в другое? Ведь это память на всю жизнь. Потом качества не добавишь. Надо думать об этом.