Soundbooth是否有一个免费的替代品,用于在音轨中添加提示点以便在Flash中使用?我似乎记得你可以将它们添加到文件本身(我认为)。我知道你可以用FLV做到这一点。SoundBooth的免费替代品,用于为Flash添加提示点?
只是检查我买SB之前..
Soundbooth是否有一个免费的替代品,用于在音轨中添加提示点以便在Flash中使用?我似乎记得你可以将它们添加到文件本身(我认为)。我知道你可以用FLV做到这一点。SoundBooth的免费替代品,用于为Flash添加提示点?
只是检查我买SB之前..
必须有一些免费的应用程序在那里,但你正在试图做的是什么。有点简单我刚刚刮起一起简单的“应用”为你我说的应用程序,它实际上是一个swf允许执行以下操作:通过它
这里是你如何使用它:
您可以调整swf的大小以便擦洗更大的区域。
这是我现在可以使用的最基本的方法,不是很花哨,不是很干净,但它应该完成这项工作。另外,你可以随意扩展它,调整xml/output/etc。
所有你需要做的就是抢FlexibleFactory'saudiofx Library, 这是我用来加载从一个FileReference的MP3和波纹管编译代码:
package {
import org.audiofx.mp3.MP3FileReferenceLoader;
import org.audiofx.mp3.MP3SoundEvent;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.system.System;
/**
* @author George Profenza
*/
public class MiniMark extends Sprite{
private var w:Number,h:Number,pos:Number;
private var pressed:Boolean = false;
private var file:FileReference;
private var formats:FileFilter;
private var sound:Sound;
private var channel:SoundChannel;
private var dragRect:Rectangle;
private var markers:Vector.<Sprite>;
public function MiniMark(){
init();
}
private function init():void {
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.doubleClickEnabled = true;
w = stage.stageWidth;
h = stage.stageHeight;
dragRect = new Rectangle(0, 0, w, 0);
markers = new Vector.<Sprite>();
file = new FileReference();
file.addEventListener(Event.SELECT, fileSelected);
formats = new FileFilter("MP3s (*.mp3)","*.mp3");
sound = new Sound();
stage.addEventListener(MouseEvent.MOUSE_DOWN, onPress);
stage.addEventListener(MouseEvent.MOUSE_UP, onRelease);
stage.addEventListener(MouseEvent.DOUBLE_CLICK, selectFile);
stage.addEventListener(Event.RESIZE, onResize);
this.addEventListener(Event.ENTER_FRAME, update);
}
private function onResize(event : Event) : void {
w = stage.stageWidth;
h = stage.stageHeight;
dragRect.width = w;
}
private function selectFile(event : MouseEvent) : void {
if(event.shiftKey) exportCues();
else file.browse([formats]);
}
private function exportCues() : void {
var values : Array = [];
for (var i : int = 0 ; i < numChildren; i++) values[i] = markers[i].x;
values.sort(Array.NUMERIC);
var cues : XML = <FLVCoreCuePoints Version="1" />;
for (i = 0 ; i < numChildren; i++) {
cues.appendChild(<CuePoint><Time /><Type>event</Type><Name /></CuePoint>);
cues.CuePoint[i].Name.appendChild("Marker"+(i+1));
cues.CuePoint[i].Time.appendChild((values[i]/w) * sound.length);
}
trace(cues.toXMLString());
System.setClipboard(cues.toXMLString());
if(channel) channel.stop();
}
private function fileSelected(event : Event) : void {
var mp3loader:MP3FileReferenceLoader = new MP3FileReferenceLoader();
mp3loader.addEventListener(MP3SoundEvent.COMPLETE,soundReady);
mp3loader.getSound(file);
}
private function soundReady(event : MP3SoundEvent) : void {
sound = event.sound;
}
private function onPress(event : MouseEvent) : void {
pressed = true;
if (event.altKey && channel) addMarker();
}
private function onRelease(event : MouseEvent) : void {
pressed = false;
dropMarkers(event);
}
private function update(event : Event) : void {
if (pressed){
if (sound.length) {
if (channel) channel.stop();
channel = sound.play(sound.length * (mouseX/w));
}
}
drawPlayhead();
}
private function drawPlayhead():void{
graphics.clear();
graphics.lineStyle(1);
pos = mouseX;
if (!pressed && channel) pos = (channel.position/sound.length) * w;
graphics.moveTo(pos, 0);
graphics.lineTo(pos,h);
}
private function addMarker():Sprite{
var marker : Sprite = new Sprite();
marker.graphics.beginFill(0x009900,.5);
marker.graphics.drawRect(-1, 0, 2, h);
marker.graphics.endFill();
marker.x = mouseX;
marker.buttonMode = true;
marker.addEventListener(MouseEvent.MOUSE_DOWN, dragMarker);
addChild(marker);
markers.push(marker);
return marker;
}
private function removeMarker(marker:Sprite):void{
for (var i:int = 0 ; i < numChildren ; i++) {
if (markers[i] == marker) {
markers.splice(i, 1);
removeChildAt(i);
}
}
}
private function dragMarker(event : MouseEvent) : void {
if(event.shiftKey) removeMarker(event.currentTarget as Sprite);
else event.currentTarget.startDrag(false, dragRect);
}
private function dropMarkers(event : MouseEvent) : void {
for (var i : int = 0 ; i < numChildren; i++) markers[i].stopDrag();
}
}
}
HTH
这真是太好了,但我们已经购买了Soundbooth!尽管如此,我一定会尝试你的应用程序,非常感谢。 – hamishtaplin 2010-12-01 09:07:41
U可以只使嵌入提示点到FLV文件没有MP3。
香港专业教育学院也注意到,闪光灯本身可以“T正确读出这些点!!!确保ü在购买前测试它
在Soundbooth里面,你可以添加标记,你以后可以导出为XML(FLV提示点兼容),这就是@dr_tchock在 – 2010-11-30 17:34:39
之后是的。我有很大的问题让SB真的在FLV中正确保存标记。我可以使用XML输出,但我不想为音频中的每个调整都重新输出它,因此嵌入它们是一个更清晰的选项。 – hamishtaplin 2010-12-01 09:08:39
虽然它看起来像superuser.com问题。 ..如果您打算为标记购买SB,也许您可以重新考虑编写具有该功能的非常基本的应用程序......即使是在闪存中。 – 2010-11-30 17:37:48