Android: Fusionar / concatenar dos archivos de audio cuelga la aplicación
Estoy agregando dos archivos de audio usando mp4parser. La adición se hace pero es muy lenta no sé cuál es el problema.
En este depurador de línea pegado para archivos de audio grandes por ejemplo aproximadamente 30 minutos archivo de audio.
- Android: Demasiada memoria asignada mientras usa png en lugar de imágenes vectoriales
- Android: Descripción de OnDrawFrame, FPS y VSync (OpenGL ES 2.0)
- ¿Qué podría hacer la carga lenta en android 4.1.X y no en 4.2?
- ¿Está prohibido el uso de tipos de punto flotante en Android?
- Cómo corregir este error "Límite de sobrecarga de GC excedido en Eclipse"
Container out = new DefaultMp4Builder (). Build (resultado);
Aquí está el código.
Movie[] inMovies = null; inMovies = new Movie[]{ MovieCreator.build(fileOne), MovieCreator.build(fileTwo)}; List<Track> audioTracks = new LinkedList<Track>(); for (Movie m : inMovies) { for (Track t : m.getTracks()) { if (t.getHandler().equals("soun")) { audioTracks.add(t); } } } Movie result = new Movie(); if (audioTracks.size() > 0) { result.addTrack(new AppendTrack(audioTracks.toArray(new Track[audioTracks.size()]))); } Container out = new DefaultMp4Builder().build(result); String fileName = getFilename(); FileChannel fc = new RandomAccessFile(String.format(fileName), "rw").getChannel(); out.writeContainer(fc); fc.close();
Manifestfile
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ehrlite" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <application android:allowBackup="true" android:icon="@drawable/ehr_icon" android:label="@string/app_name" android:name="com.webservice.myApplication" android:theme="@style/AppTheme" > <activity android:name="com.ehrlite.LoginActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:windowSoftInputMode="stateVisible|adjustResize" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.ehrlite.MasterActivity" android:screenOrientation="portrait"> </activity> <activity android:name="com.ehrlite.MainActivity" android:screenOrientation="portrait" > </activity> <activity android:name="com.ehrlite.PrevMemo" android:screenOrientation="portrait"> </activity> <activity android:name="com.webviewcall.WebViewActivity" android:screenOrientation="portrait"> </activity>`enter code here` <activity android:name="com.ehrlite.TranscribedActivity" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="adjustPan"> </activity> </application> </manifest>
¿Puede alguien ayudarme a mejorar el rendimiento, gracias de antemano.
- Android MotionEvent ACTION_MOVE eficiencia. ¿Cómo mejorar el rendimiento?
- OnBackPressed () Mejor práctica / rendimiento
- Rendimiento de Android HttpClient
- velocidad o aceleración del evento de movimiento android
- La forma más rápida de leer un archivo CSV en Java
- ViewStub vs View.GONE
- ¿Por qué ExpandableListView llama getView muchas veces
- Error de inicio de Android AVD
Encontré la solución para su respuesta. Me enfrenté problema anteriormente. Está utilizando RandomAccessfile
. Necesitas usar FileOutputStream
Container out = new DefaultMp4Builder().build(result); String outputFilePath = getfilename(); FileOutputStream fos = new FileOutputStream(new File(outputFilePath)); out.writeContainer(fos.getChannel()); fos.close();
Referencia:
¿Por qué java RandomAccessFile mucho más lento que FileOutputStream?
- ¿Cómo aceptar una llamada entrante haciendo clic en un botón?
- Problema de renderización de advertencia de fidelidad