Как отследить размещение аудиофайлов на временной шкале во Flash - PullRequest
0 голосов
/ 03 марта 2011

Я работаю над анимационным проектом. Я не программист. Я работаю во Flash CS3. У меня есть анимация, которую я создал, и мне нужно вывести размещение моей звуковой дорожки для использования пост-звуковым парнем. После моей записи мой звукорежиссер дал мне один большой файл, в котором было все мое аудио. Мне приходилось чистить правильную позицию на звуковой дорожке для каждого клипа, который я хотел.

Теперь, когда моя анимация завершена, у меня есть все аудио на месте, но мне нужна запись о том, где он находится на временной шкале Flash, чтобы я мог передать его моему пост-звуковому парню, чтобы он мог восстановить это в его программном обеспечении для редактирования звука.

Интересно, есть ли способ запустить трассировку или сгенерировать что-нибудь из текстового файла, который будет делать следующее:

  1. список, где начинается аудиоклип (ключевой кадр) на основной временной шкале (возвращает абсолютный номер кадра с начала временной шкалы фильма)
  2. как долго воспроизводится клип (количество кадров)
  3. любые заметки на ключевом кадре
  4. имя символа / имя файла аудиоклипа
  5. позиция в файле аудиоклипа, который воспроизводится в этом выборе.

Я проходил ускоренный курс по ActionScript 3.0 около 4 лет назад, но это примерно мой опыт, поэтому, пожалуйста, будьте добры.

Ответы [ 3 ]

3 голосов
/ 11 марта 2011

JSFL, вероятно, лучший способ сделать это.

Вы можете создать новый файл JSFL с помощью Файл> Создать ...> Файл Flash JavaScript .

Затем вы можете запустить сценарий с помощью кнопки воспроизведения в Редакторе сценариев.

На этой странице справки показаны общие расположения каталога конфигурации, если вы хотите сохранить свой сценарий в качестве команды.

Я также собираю серию руководств, которые могут быть полезны:

Вот пример сценария, который выведет расположение аудио в текущей временной шкале текущего документа:

fl.outputPanel.clear();
var dom = fl.getDocumentDOM();
fl.trace('Timeline sound for ' + dom.name);
fl.trace('-------------------');
var divider = ' \t\t ';
var tl = dom.getTimeline();
for(var i=0; i < tl.layerCount; i++){
    var tLayer = tl.layers[i];
    for(var j=0; j < tLayer.frameCount; j++){
        var tFrame = tLayer.frames[j];
        if(tFrame == undefined) {
            break;
        }
        if(tFrame.startFrame == j) { //only run on keyframes
            if(tFrame.soundLibraryItem != null && tFrame.soundName.length > 0) {
                var seconds = j * dom.frameRate;
                //output info
                fl.trace('layer: ' + tLayer.name + divider + 'start (frame): ' + j + 1 + divider + ' start (sec): ' + seconds + divider + 'sound file: ' + tFrame.soundName);
            }
        } else { //skip to next keyframe
            j = tFrame.startFrame + tFrame.duration - 1;
            continue;
        }
    }
}
fl.trace('-------------------');
fl.trace('Output complete.');

Вывод будет выглядеть примерно так:

Timeline sound for testAudio2.fla
-------------------
layer: audio 2   start (frame): 31    start (sec): 36    sound file: BUMMER.WAV
layer: audio 2   start (frame): 131       start (sec): 156   sound file: COOL_F.WAV
layer: audio 2   start (frame): 411       start (sec): 492   sound file: preparetodie.wav
layer: audio 2   start (frame): 2721      start (sec): 3264      sound file: mcc_hello.mp3
layer: audio 2   start (frame): 2971      start (sec): 3564      sound file: mcc_seriously.mp3
layer: audio 2   start (frame): 3301      start (sec): 3960      sound file: point.wav
layer: audio 2   start (frame): 4321      start (sec): 5184      sound file: happy5.wav
-------------------
Output complete.

Настройте по своему усмотрению.Вам нужно будет изменить его, если вы хотите выполнить поиск по всем временным шкалам или нескольким документам, например.

0 голосов
/ 03 марта 2011

Трудно сказать точно, как у вас все это настроено, но исходя из того, что вы сказали, я попробую что-то подобное.Поместите следующий код в первый кадр временной шкалы анимации:

var movieFrameRate:Number = 20;  //frame rate of your movie
var totalFramesOfMovie:Number = this.totalFrames;

var startingFrameOfSoundClip:Number;
var endingFrameOfSoundClip:Number;

var startingMilSecsOfSoundClip:Number;
var endingMilSecsOfSoundClip:Number;

var currentClipName:String;

function findMilSecsFromStart(startingFrameOfSoundClip:Number):Number
{
    var MilSecs:Number = (startingFrameOfSoundClip / movieFrameRate) * 1000;

    return MilSecs;
}

function findFramesFromStart(startingFrameOfSoundClip:Number):Number
{
    var frames:Number = startingFrameOfSoundClip;

    return frames;
}

function durationInFrames(startingFrame, endingFrame):Number
{
    var durationInFrames:Number = endingFrame - startingFrame;

    return durationInFrames;
}

function durationInMilliseconds(startingFrame, endingFrame):Number
{
    var durationInMilSecs:Number = ((endingFrame - startingFrame) / movieFrameRate) * 1000;

    return durationInMilSecs;
}


function collectInitialInfo():void
{
    trace("Clip Name: " + currentClipName);
    trace("Number of frames from beginning: " + findFramesFromStart(startingFrameOfSoundClip));
    trace("Time from beginning in MilSecs: " + findMilSecsFromStart(startingFrameOfSoundClip));
}

function collectFinalInfo():void
{
    trace("Duration of sound clip in frames: " + durationInFrames(startingFrameOfSoundClip, endingFrameOfSoundClip));
    trace("Duration of sound clip in milSecs: " + durationInMilliseconds(startingFrameOfSoundClip, endingFrameOfSoundClip));
    trace("----------------------------------------------------------");
} 

Затем в каждом кадре, где начинается аудиоклип, поместите следующее, где mySoundClip_1 всегда является именем экземпляратам начинается звуковой клип:

currentClipName = 'mySoundClip_1';
startingFrameOfSoundClip = this.currentFrame;
collectInitialInfo();

, а затем в каждом кадре, где заканчивается звук, поместите следующий код:

endingFrameOfSoundClip = this.currentFrame;

collectFinalInfo();

Я сделал временную шкалу с несколькими экземплярами простогомувиклип квадрата для имитации размещения звуковых клипов, как вы описали, с именами экземпляров mySoundClip_1, mySoundClip_2 и т. д.

Я проверил его, и он генерирует следующую трассировку в окне вывода:

Clip Name: mySoundClip_1
Number of frames from beginning: 4
Time from beginning in MilSecs: 200
Duration of sound clip in frames: 35
Duration of sound clip in milSecs: 1750
----------------------------------------------------------
Clip Name: mySoundClip_2
Number of frames from beginning: 75
Time from beginning in MilSecs: 3750
Duration of sound clip in frames: 55
Duration of sound clip in milSecs: 2750
----------------------------------------------------------
Clip Name: mySoundClip_3
Number of frames from beginning: 179
Time from beginning in MilSecs: 8950
Duration of sound clip in frames: 18
Duration of sound clip in milSecs: 900
----------------------------------------------------------
Clip Name: mySoundClip_4
Number of frames from beginning: 219
Time from beginning in MilSecs: 10950
Duration of sound clip in frames: 56
Duration of sound clip in milSecs: 2800
----------------------------------------------------------
Clip Name: mySoundClip_5
Number of frames from beginning: 289
Time from beginning in MilSecs: 14450
Duration of sound clip in frames: 32
Duration of sound clip in milSecs: 1600
----------------------------------------------------------
0 голосов
/ 03 марта 2011

Не из ActionScript, нет. Звуки на временных шкалах - это пресловутый черный ящик, полный гадостей, среди которых есть то, что у вас действительно нет возможности узнать, где звук временной шкалы «живет» во время выполнения. Это может быть то, что вы можете использовать сценарий JSFL, чтобы сделать, однако. JSFL - это своего рода «Javascript», который позволяет вам манипулировать и изучать содержимое .fla, а также выводить сообщения в окно трассировки.

Просто чтобы прояснить, JSFL - это то, что вы выполняете против самого инструмента разработки флэш-памяти во время "времени разработки". Это не язык времени выполнения. не применяется к SWF-файлам.

Вот документы по JSFL.

http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fe8.html

...