View Full Version : [Frage] problem mit audiocodec
ich hab ein kleines problem mit mienem audiocodec:
ich hab mal einen codec geschrieben, der einfach den inBuffer auf den outBuffer kompiert und das funkt auch soweit. wenn ich aber in der codecchain zuerst einen com.sun.media.codec.audio.mpa.nativeDecoder häng, spielt er mir das file sehr komisch ab, wenn ihc die ausgabe über eine datasink mach, dann passt alles einwandfrei.
ja, bei mir funkt dieser Decoder auch nicht! Zumindest nicht für mp3 dateien: wenn ich den AudioStream aus einem MPEG-1 Film nehme, wandelt mir der mpa.nativeDecoder brav in pcm audio um, bei mp3 streikt er aber...
hab schon vorgestern eine Frage dazu ins IMS Forum geschrieben, hab aber noch keine Antwort gekriegt...
im ims forum antwortens sie zur zeit überhaupt net, ich hab schon vor ca. 1woche eine frage gepostet, aber nix bekommen.
hat schon wer eine ahnung wie man die Buffer bearbeiten kann? ich find das ehrlichgsagt sehr unfein vom ims, dass beispiele geben für die videomanipulation, aber nix für audio.
public int process (Buffer in, Buffer out)
{
Object data = in.getData ();
in.setData(out.getData ());
out.setData(data );
// Copy the input attributes to the output
out.setFormat(in.getFormat());
out.setLength(in.getLength());
out.setOffset(in.getOffset());
return (BUFFER_PROCESSED_OK);}
mit dem code kann man den inbuffer unverändert durchgeben.
im PCM Format sind die einzelnen Samples, die jeweils 8 oder 16 bit lang sind, die "diskrete" Abbildung der Tonkurve --> wennst die etwa mit 2 multiplizierst, wird alles "doppelt" so laut (zumindest theoretisch, das menschliche Ohr empfindet es aber nicht als doppelt so laut)...
Genauso kannst zwei Samples mischen, indemst sie zsammzählst und durch 2 dividierst (funkt zumindest bei mit super...)
Anmerkung: ´leider sind pcm (wav) Dateien nicht wirklich "standardisiert", was den Content angeht... z.b. hab ich welche hier, die little endian gespeichert sind, andere wiederum big endian, welche mit 8 und 16 bit Sample länge, welche mit 16 und 32 bit Framegrößen, etc... such dir ein Format aus, schreib dafür den Effect, und sorge mittels setCodecChain dafür, dass dein Effekt nur Daten kriegt, für die er gedacht ist...
ja, aber wie bekommst du zugriff auf die samples? ich weis net recht wie ich das anstellen soll. im skript haben sie das für video mit einem int[] gmacht aber hier ?
mit 2 multiplizierst was soll ich mit 2 multiplizieren?
p.s.: kannst du mal den source deiners process posten?
ok, das mit den samples hab ich jetzt soweit, aber wie kann ich denn @€\~!! nocheinmal im effect audiofiles öffnen und mit dem buffer mischen?
Arthur Dent
05-01-2003, 19:07
Original geschrieben von gck
wenn ich den AudioStream aus einem MPEG-1 Film nehme, wandelt mir der mpa.nativeDecoder brav in pcm audio um, bei mp3 streikt er aber...
MPEG1-Filme verwenden als Audioformat normalerweise MPEG 1 Layer 2, mp3 ist MPEG 1 Layer 3. Vielleicht liegt es daran.
@Arthur Dent: ja, aber der Codec heißt ja "mpa" für mpeg.audio -> eigentlich sollte er sowohl mp2 als auch mp3 dekodieren -> in den Vo Stunden ham sie ja auch gesagt, wir sollen den für mp3 verwenden...
@bimbo: probiers mal mit einer PullDataSource, aus der du dir einen PullSourceStream holen kannst... die DataSource gibt dir natürlich der freundliche Manager!
@bimbo: probiers mal mit einer PullDataSource, aus der du dir einen PullSourceStream holen kannst... die DataSource gibt dir natürlich der freundliche Manager!
ich habs jetzt so: im open() öffne ich mit einer pulldatasource ein audiofile, dann hol ich mir von dem den stream, und vom stream wiederrum hol ich mir im process() mit
screamStream.read(screamShortData,inOffset,inLengt h); ein byte[] namens screamShortData. wenn ich das jetzt in den Outputbuffer schreibe, kommt nur rauschen raus, was mach ich falsch?
vBulletin® v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.