12 Stimmen

Zusammenfügen von zwei mp3-Dateien zu einer (Kombinieren/Verbinden)

Kann jemand sagen, wie man kombinieren/verschmelzen zwei Mediendateien zu einer machen?

Ich habe ein Thema gefunden über audioInputStream aber jetzt ist es nicht in Android unterstützt, und alle Code für java .

Und auf StackOverflow fand ich diesen Link hier aber dort kann ich keine Lösung finden - diese Links beziehen sich nur auf Audio-Streaming. Kann mir das jemand sagen?

P.S und warum kann ich kein Kopfgeld starten?

9voto

shiva Punkte 99
import java.io.*;
public class TwoFiles
{
    public static void main(String args[]) throws IOException
    {
        FileInputStream fistream1 = new FileInputStream("C:\\Temp\\1.mp3");  // first source file
        FileInputStream fistream2 = new FileInputStream("C:\\Temp\\2.mp3");//second source file
        SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2);
        FileOutputStream fostream = new FileOutputStream("C:\\Temp\\final.mp3");//destinationfile

        int temp;

        while( ( temp = sistream.read() ) != -1)
        {
            // System.out.print( (char) temp ); // to print at DOS prompt
            fostream.write(temp);   // to write to file
        }
        fostream.close();
        sistream.close();
        fistream1.close();
        fistream2.close();
    }
}

5voto

Oak Bytes Punkte 4499

Betrachten Sie zwei Fälle für .mp3 Dateien:

  • Dateien mit gleicher Abtastfrequenz und Anzahl der Kanäle

In diesem Fall können wir die zweite Datei einfach an das Ende der ersten Datei anhängen. Dies kann mit den unter Android verfügbaren Dateiklassen erreicht werden.

  • Dateien mit unterschiedlicher Abtastfrequenz oder Anzahl von Kanälen.

In diesem Fall muss einer der Clips neu kodiert werden, um sicherzustellen, dass beide Dateien dieselbe Abtastfrequenz und Anzahl von Kanälen haben. Dazu müssten wir MP3 dekodieren, PCM-Samples erhalten, diese verarbeiten, um die Abtastfrequenz zu ändern und dann wieder in MP3 kodieren. Soweit ich weiß, verfügt Android nicht über Transcode- oder Reencode-APIs. Eine Option ist die Verwendung einer externen Bibliothek wie lame/FFMPEG über JNI für Re-Encoding.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X