Articles of audio

将opus音频rtp流式传输到Android设备

我想用ffmpeg直接将音频(opus编解码器)流式传输到Android设备。 在PC上我开始流: ./ffmpeg -re -stream_loop -1 -i akgld-c8mxm.opus -acodec libopus -ac 1 -ab 96k -vn -f rtp rtp://192.168.0.100:6000 其中192.168.0.100 – 我手机的本地wifi地址。 在Android设备上我尝试播放流: public void tryPlayStream() { String ip = Utils.wifiIpAddress(this); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build(); StrictMode.setThreadPolicy(policy); AudioManager audio = (AudioManager) getSystemService(AUDIO_SERVICE); audio.setMode(AudioManager.MODE_IN_COMMUNICATION); audioGroup = new AudioGroup(); audioGroup.setMode(AudioGroup.MODE_ECHO_SUPPRESSION); InetAddress inetAddress; try { inetAddress = InetAddress.getByName(ip); audioStream […]

注册为音乐播放器

我想在播放器列表中看到我的应用程序(“继续操作使用…”),当我尝试打开音频文件时popup(即从文件浏览器或gmail附件)。 以下是我为MainActivity尝试的intentfilter: 谢谢你的帮助 !

Android 6.0(Marshmallow):如何播放midi笔记?

我正在创建一个可以生成实时乐器声音的应用程序,我正在计划使用Android Marshmallow(6.0版)中的新Midi API。 我在这里阅读了软件包概述文档http://developer.android.com/reference/android/media/midi/package-summary.html ,我知道如何生成Midi笔记,但我仍然不确定:我该怎么做在我生成他们的Midi数据后实际播放这些音符? 我是否需要合成器程序才能播放Midi音符? 如果是这样,我是否必须自己制作或者是由Android或第三方提供的? 我是Midi的新手所以请尽量用你的答案描述。 到目前为止我尝试过的:我创建了一个Midi管理器对象并打开了一个输入端口 MidiManager m = (MidiManager)context.getSystemService(Context.MIDI_SERVICE); MidiInputPort inputPort = device.openInputPort(index); 然后,我已经向端口发送了一条测试笔记midi消息 byte[] buffer = new byte[32]; int numBytes = 0; int channel = 3; // MIDI channels 1-16 are encoded as 0-15. buffer[numBytes++] = (byte)(0x90 + (channel – 1)); // note on buffer[numBytes++] = (byte)60; // pitch is […]

需要一个简单的录音例子

我需要在Android中使用AudioRecorder进行简单的录音和播放示例。 我尝试使用MediaRecorder,它工作正常。

将图像合并到音频文件中并以编程方式在android中制作video文件

我阅读了ffmpeg库的教程,将图像合并到音频文件中。 这看起来非常复杂,并且环境值的错误为null。 我研究了很多,但没有find任何解决方案。 Android中是否有任何方法可以合并图像和音频文件来制作video?

Android AudioRecord – 第二次不会初始化

Hej,我目前正试图让AudioRecord工作。 因为我需要一个更大的项目。 但它似乎搞得很多。 我一直在尝试很多东西,所以当我追踪这个bug时我又回到了基础。 我正在使用我的三星Galaxy S作为我的调试设备。 我的问题是,第一次重启我的设备后,我可以初始化我创建的AudioRecord对象没有问题。 但是第二次运行它时,它不会初始化AudioRecord对象。 我试过几个频率,fyi。 这是我的代码: package android.audiorecordtest; import android.app.Activity; import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaRecorder; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class AudioRecordTest extends Activity { int frequency; AudioRecord audRec; TextView txtVw; /** Called when the activity is first created. */ @Override public void onCreate(Bundle […]

接收RTP流 – AudioStream,AudioGroup

我想听一个RTP音频流,但声音中没有什么差距 – 不会继续。 可能是什么解决方案? 我错过了Receiver(android)端或Streamer(ffmpeg)端的东西吗? 我正在使用ffmpeg来传输RTP音频, ffmpeg -f lavfi -i aevalsrc=”sin(400*2*PI*t)” -ar 8000 -vcodec pcm_u8 -f rtp rtp://192.168.0.15:41954 (port changes.) 这是我的相关android代码: AudioStream audioStream; AudioGroup audioGroup; @Override public void onStart() { super.onStart(); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build(); StrictMode.setThreadPolicy(policy); AudioManager audio = (AudioManager)getSystemService(AUDIO_SERVICE); audio.setMode(AudioManager.MODE_IN_COMMUNICATION); audioGroup = new AudioGroup(); audioGroup.setMode(AudioGroup.MODE_ECHO_SUPPRESSION); InetAddress inetAddress; try { inetAddress = InetAddress.getByName(“192.168.0.15”); audioStream […]

如何知道MediaRecorder是否处于运行状态?

我写了一个代码来logging使用MediaRecorder的通话对话audio。 如何知道MediaRecorder是否处于运行状态,停止录制。 喜欢 boolean running; MediaRecorder mr; //what should i assign to running? if(running){ mr.stop() } 上面的代码只是一个例子..如果你不明白我的问题,请告诉我..我会用实际的代码清楚地解释.. 我想知道的是“MediaRecorder在哪个状态?” – >录制/发布/准备/初始/等。

Android中的audio编辑

我正在寻找一些audio编辑库,可以帮助将两个audio文件混合成一个audio文件。 我不是说连接文件一个接一个。 我想在第一个文件的随机查找时间的中间混合第二个audio文件如下。 轨道T1:1111111111轨道T2:2222 预计产出:11112222111111 我想为Android应用程序实现这一点。

解码audio文件并重新编码为所需的PCM格式:44,100 kHz,2个通道,16位

我想将audio文件解码为原始PCM数据,将其stream式传输到本地networking中的播放设备。 我使用了API级别为16的新MediaExtractor和MediaCodec类。 该设备要求PCM数据在44100kHz,具有2个通道和16位样本大小 。 只要input文件大致符合这些要求,这工作正常。 但是,无论何时我正在解码一个MP3文件,例如,使用32,000 kHz的采样率,也许只有一个通道,那么我不会从MediaCodec类获得所需的输出。 看来我不能指定MediaCodec类的输出格式 。 所以我决定实例化另一个MediaCodec对象,将原始数据重新编码成我想要的格式。 根据Android 4.1 支持的媒体格式列表,Android支持编码PCM / Wave。 但是, 我无法创build一个MediaCodec对象,编码PCM / Wave 。 我试着将各种MIMEtypes传递给MediaCodec.createEncoderByType(type); 但是我总是以IOExceptionexception失败: java.io.IOException: Failed to allocate component instance at android.media.MediaCodec.native_setup(Native Method) at android.media.MediaCodec.<init>(MediaCodec.java:210) at android.media.MediaCodec.createEncoderByType(MediaCodec.java:194) [..] 有没有人能够成功地创build一个MediaCodec实例,编码为PCM / Wave,并可以提供一个工作的例子?