Перейти к содержимому



  • Вы не можете создать новую тему
  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1
OFFLINE   dok

dok

    Junior Member

  • Пользователи
  • Pip
  • 9 сообщений
  • Казань

2 дня назад приступил к изучению JavaScript for Ae v6.0

Поставил задачу: упростить работу человека, день изо дня собирающего рекламные блоки  в Premiere из .avi для трансляции.

  Попробую сделать самую муторную часть работы(выбор из сотен файлов нужных и последовательное расположение их в Comp) через составление скрипта в АЕ..

 

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

 

Пока получается так:

 

     var myFolder = Folder.selectDialog("choose source footage folder"); //Выбираем рабочий каталог
 
     app.project.items.addComp("MyCompTest",720,576,1,10,25);  // Создаем композицию
 
     var myFile = File.openDialog("Select a text file to open.","*.txt;"); // Prompt user to select text file
 
     myFile.open("r"); // и открываем файл , содержащий построчный список файлов для плейлиста
 
     var str = myFile.readln(); // считываем строку из текстового файла 
 
     alert(str);     // для визуального подтверждения считанного, пока делаю
 
     var io = new ImportOptions(File(myFolder.toString()+"/"+str)); // составляем путь к файлу
 
     app.project.importFile(io);// и импортируем файл в проект
 
Теперь в окне проекта есть 1 созданная композиция и 1 импортированный файл
Прошу помощи у сообщества. Как поступать дальше: 
для того чтобы положить файл на TimeLine нужно сначала сделать активной Comp или оставить активной авишку? И пока не нашел, чем ее туда засовывать..

 

 



#2
OFFLINE   pavelusha

pavelusha

    Gold Expert

  • Администраторы
  • 533 сообщений
  • Seattle, WA

Для начала поменяй немножечки что есть:

var myFolder = Folder.selectDialog("choose source footage folder"); //Выбираем рабочий каталог

 
     var MyCompTest=app.project.items.addComp("MyCompTest",720,576,1,10,25);  // Создаем композицию
 
     var myFile = File.openDialog("Select a text file to open.","*.txt;"); // Prompt user to select text file
 
     myFile.open("r"); // и открываем файл , содержащий построчный список файлов для плейлиста
 
     var str = myFile.readln(); // считываем строку из текстового файла 
 
     alert(str);     // для визуального подтверждения считанного, пока делаю
 
     var io = new ImportOptions(File(myFolder.toString()+"/"+str)); // составляем путь к файлу
 
     var importedItem=app.project.importFile(io);// и импортируем файл в проект
 
далее сможешь добавлять в свою композицию импортированные файлы:
 
  var currentCompItem=MyCompTest.layers.add(importedItem);
 

Ну и после того как добавил уже делай манипуляции нужные с currentCompItem. Передвинь в нужное место по таймкоду, сделай ресайз если надо и так далее.


  • dok это нравится

#3
OFFLINE   Rey

Rey

    Regular Member

  • Пользователи
  • PipPipPip
  • 134 сообщений

Как то так получится.

fromTableToComp(this);

function fromTableToComp(thisObj) {

	var myFolder = Folder.selectDialog("Choose source footage folder"); //Выбираем рабочий каталог

	var myFile = File.openDialog("Select a text file to open.", "*.txt;"); // Prompt user to select text file

	myFile.open("r"); // и открываем файл , содержащий построчный список файлов для плейлиста

	var str = myFile.read(); // считываем файл
	var fileNameArr = str.split("\n"); // массив имен файлов


	var videoFile;
	var notFoundArr = [];

	// чистим таблицу
	for (var i = 0; i < fileNameArr.length; i++) {
		fileNameArr[i]

		if (fileNameArr[i].length < 5 || fileNameArr[i].substr(0, 2) == "//") { // строка меньше 5 символов или закомментирована

			fileNameArr.splice(i, 1); // удалить элемент с индексом i
			i--;
		}
	}

	// проверка наличия файлов
	for (var i = 0; i < fileNameArr.length; i++) {

		videoFile = new File(myFolder.toString() + "/" + fileNameArr[i]);

		if (!videoFile.exists) {
			notFoundArr.push(fileNameArr[i]);
		}
	}

	// для визуального подтверждения считанного, пока делаю
	alert("В таблице " + fileNameArr.length + " файлов:\n" + fileNameArr.join("\n") + ((notFoundArr.length != 0) ? "\n\nНе найдено " + notFoundArr.length + " файлов:\n" + notFoundArr.join("\n") : ""));

	if (notFoundArr.length != 0) {
		alert("Некоторые файлы не найдены.\nРабота скрипта будет прекращена!");
		return;
	}

	// Создаем композицию
	var myCompTest = app.project.items.addComp("MyCompTest", 720, 576, 1, 10, 25);

	var layerStartTime = 0;

	// Добавляем файлы в композицию
	for (var i = 0; i < fileNameArr.length; i++) {

		videoFile = new File(myFolder.toString() + "/" + fileNameArr[i]);

		if (!videoFile.exists) continue; // Если файл не найден берем следующий

		var io = new ImportOptions(videoFile);

		var importedItem = app.project.importFile(io); // и импортируем файл в проект

		var newLayer = myCompTest.layers.add(importedItem);

		newLayer.startTime = layerStartTime; // устанавливаем начало слоя

		layerStartTime = newLayer.outPoint; // сохраняем новый конец

		myCompTest.duration = layerStartTime; // меняем длину композиции
	}

	myCompTest.openInViewer(); // открываем сомпозицию во вьювере

	alert("Создана новая композиция длиной " + layerStartTime + " секунд.\nСодержащая " + myCompTest.numLayers + " роликов.");
}


#4
OFFLINE   dok

dok

    Junior Member

    Топикстартер
  • Пользователи
  • Pip
  • 9 сообщений
  • Казань

  pavelusha, Благодарен Вам за помощь!  (куда лайки ставить? не нашел)

Следующим этапом думаю разобраться с циклом. Теперь нужно импортировать уже все файлы в проект. Далее буду разбираться с последовательным их расположением там и подстройкой длительности композиции под это дело.

        Итак цикл. Конечно грамотнее наверно по другому, но на данном этапе мне важнее чтобы работало и давало возможность заняться уже следующим этапом. Получилось пока вот так:

 

var MyCompTest = app.project.items.addComp("MyCompTest",720,576,1.09,10,25);  // Создаем композицию и увязываем ее с переменной "MyCompTest"

var str = ""
var myFolder = Folder.selectDialog("choose source footage folder");
var myFile = File.openDialog("Select a text file to open.","*.txt;"); // Prompt user to select text file
myFile.open("r");                                           // и открываем файл , содержащий построчный список файлов для плейлиста
 
while (str==str) {                                            // организуем цикл для считывания строчек
    
var str = myFile.readln();                               // считываем строку из текстового файла 
if (str == "") { break; };                                    // прерываем работу, по пустому полю в считанной строчке
var io = new ImportOptions(File(myFolder.toString()+"/"+str)); // составляем путь к файлу
var importedItem=app.project.importFile(io);// и импортируем файл в проект и присваиваем выбранному файлу переменную "importedItem"
var currentCompItem=MyCompTest.layers.add(importedItem);     // Добавляем текущий файл на Timeline и увязываем его c переменной  "currentCompItem"
}

Эх, надо было утром обновить ветку. Всего что Rey написал - не видел. Завтра буду смотреть, как надо делать.






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных