PDA

View Full Version : مشکل تبدیل mp3 در as3



ahmad_m1234
جمعه 09 تیر 1391, 20:24 عصر
سلام به دوستان
می خواستم چطوری ضبط با فلش و اکشن اسکریپت و بعدش تبدیل به فرمت mp3 انجام بدهم . طبق سایت tutsplus انجام دادم مشکلی از بابت ضبط ندارم
لینک آموزش :

http://active.tutsplus.com/tutorials/actionscript/create-a-useful-audio-recorder-app-in-actionscript-3/

اما طبق جستجو که در گوگل انجام دادم برای تبدیل به mp3 از پروژه kiko shine استفاده کنم اما هر کاری می کنم این ارور می دهد
لینک پروژه :

code.google.com/p/flash-kikko/
پیغام ارور :

ReferenceError: Error #1065: Variable cmodule.shine::CLibInit is not defined.
و تبدیل نمی شود
الیته یک پروژه در دیدم ولی می خوام مثل اون تبدیل باز همین ارور می دهد

http://www.jordansthings.com/blog/?p=5
دوستان هر کسی اطلاعاتی در مورد این موضوع داره حتما کمکی بکند . ممنون میشم

Microname
دوشنبه 12 تیر 1391, 00:14 صبح
با چه نسخه ای(فلش) کامپایل می کنید؟
از کدی هم که استفاده میکنید در اینجا قرار بدید ، مخصوصا اون قسمت ClibInit

ahmad_m1234
دوشنبه 12 تیر 1391, 01:37 صبح
ممنون از پاسختون
من از نسخه flash c5.5 استفاده می کنم .

package
{
import flash.display.Sprite;
import flash.media.Microphone;
import flash.system.Security;
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.net.*;
import flash.media.*;
import flash.utils.*;
import org.as3wavsound.WavSound;
import org.bytearray.micrecorder.*;
import org.bytearray.micrecorder.events.RecordingEvent;
import org.bytearray.micrecorder.encoder.WaveEncoder;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.events.ActivityEvent;
//import fl.transitions.Tween;
//import fl.transitions.easing.Strong;
import flash.net.FileReference;

import com.noteflight.standingwave3.elements.*;
import com.noteflight.standingwave3.filters.*;
import com.noteflight.standingwave3.formats.*;
import com.noteflight.standingwave3.generators.*;
import com.noteflight.standingwave3.modulation.*;
import com.noteflight.standingwave3.output.*;
import com.noteflight.standingwave3.performance.*;
import com.noteflight.standingwave3.sources.*;
import com.noteflight.standingwave3.utils.*;

import com.greensock.*;

import fr.kikko.lab.ShineMP3Encoder;
import cmodule.shine.CLibInit;

public class Main extends Sprite
{
private var mic:Microphone;
private var waveEncoder:WaveEncoder = new WaveEncoder();
private var recorder:MicRecorder = new MicRecorder(waveEncoder);
public var player:AudioPlayer = new AudioPlayer()
private var recBar:RecBar = new RecBar();
//private var tween:Tween;
private var fileReference:FileReference = new FileReference();
private var mp3encoder:ShineMP3Encoder;
private var myWavData:ByteArray = new ByteArray()
private var myWavFile:ByteArray = new ByteArray()
private var cshine:Object;

public function Main():void
{
recButton.stop();
activity.stop();

mic = Microphone.getMicrophone();
mic.setSilenceLevel(0);
mic.gain = 100;
mic.setLoopBack(true);
mic.setUseEchoSuppression(true);
Security.showSettings("2");

addListeners();
}

private function addListeners():void
{
recButton.addEventListener(MouseEvent.MOUSE_UP, startRecording);
recorder.addEventListener(RecordingEvent.RECORDING , recording);
recorder.addEventListener(Event.COMPLETE, recordComplete);
activity.addEventListener(Event.ENTER_FRAME, updateMeter);

wavbtn.enabled = true;
}

private function startRecording(e:MouseEvent):void
{
if (mic != null)
{
recorder.record();
e.target.gotoAndStop(2);

recButton.removeEventListener(MouseEvent.MOUSE_UP, startRecording);
recButton.addEventListener(MouseEvent.MOUSE_UP, stopRecording);

addChild(recBar);

//tween = new Tween(recBar,"y",Strong.easeOut, - recBar.height,0,1,true);
}
}

private function stopRecording(e:MouseEvent):void
{
recorder.stop();

mic.setLoopBack(false);
e.target.gotoAndStop(1);

//var src = WaveFile.createSample(recorder.output)

recButton.removeEventListener(MouseEvent.MOUSE_UP, stopRecording);
recButton.addEventListener(MouseEvent.MOUSE_UP, startRecording);

//tween = new Tween(recBar,"y",Strong.easeOut,0, - recBar.height,1,true);
}

private function updateMeter(e:Event):void
{
activity.gotoAndPlay(100 - mic.activityLevel);
}

private function recording(e:RecordingEvent):void
{
var currentTime:int = Math.floor(e.time / 1000);

recBar.counter.text = String(currentTime);

if (String(currentTime).length == 1)
{
recBar.counter.text = "00:0" + currentTime;
}
else if (String(currentTime).length == 2)
{
recBar.counter.text = "00:" + currentTime;
}
}

private function recordComplete(e:Event):void
{
var src = WaveFile.createSample(recorder.output)
var sequence = new ListPerformance()
sequence.addSourceAt(0, src)
var ap = new AudioPerformer(sequence, new AudioDescriptor())
trace("Record Complate ! ")
renderWav(ap, true)

//WaveFile.writeBytesToWavFile(myWavFile, myWavData, 44100, 2, 16)
///makeIntoMp3(myWavFile)
//var sba:ByteArray = mp3encoder.mp3Data;
//fileReference.save(sba, "recording.mp3");
}
private function renderWav(src, convertToMp3 = false)
{
var innerTimer = new Timer(10,0)
var framesPerChunk:uint = 8192;

innerTimer.addEventListener(TimerEvent.TIMER, handleRenderTimer)
innerTimer.start()

function handleRenderTimer(e:TimerEvent)
{
src.getSample(framesPerChunk).writeWavBytes(myWavD ata)

var m = Math.min(src.frameCount, src.position + framesPerChunk)
var n = Math.max(0, m - src.position)

finishRender()


}
function finishRender()
{
innerTimer.stop()
trace("finishing audio render");
WaveFile.writeBytesToWavFile(myWavFile, myWavData, 44100, 2, 16)
makeIntoMp3(myWavFile)
}
}
private function makeIntoMp3(wav)
{
//wav.position = 0
mp3encoder = new ShineMP3Encoder(wav);
mp3encoder.addEventListener(Event.COMPLETE, mp3EncodeComplete);
mp3encoder.addEventListener(ProgressEvent.PROGRESS , mp3EncodeProgress);
mp3encoder.addEventListener(ErrorEvent.ERROR, mp3EncodeError);
mp3encoder.start();

}
function mp3EncodeProgress(event : ProgressEvent) : void
{
trace(event.bytesLoaded, event.bytesTotal);
}
private function mp3EncodeError(event : ErrorEvent) : void
{
trace("[ERROR] : ", event.text);
}
function mp3EncodeComplete(e: Event) : void
{
trace("mp3 encoding complete\n");
var sba:ByteArray = mp3encoder.mp3Data;
new FileReference().save(sba, "FlashMicrophoneTest.mp3")
}

}
}
من اکشن اسکریپت کار نکردم .
خوشحال میشم اگه امکانش هست بگید باید چکار کنم . ممنون

ahmad_m1234
پنج شنبه 15 تیر 1391, 22:23 عصر
ببخشید دوستان کسی نمی خواهد جواب ما رو بده . ممنون میشم راه حل های خودتون ارسال کنید