Articles of audio streaming

我可以将Firebase存储用于在线音乐流媒体吗?

我想要的是在Firebase存储上保存mp3文件,然后将其流式传输到Android设备。 Firebase上的所有教程都讨论了图像文件的上传和下载。 如果有任何其他云比Firebase更容易存储和流式传输音频,那么请建议。

将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 […]

三星6S上的C#.NET 4.5.1 MVC 5.2.2中的MP3流媒体

我必须使用ReadSpeaker的TTS(文本说话)SaaS,以便为我正在开发的应用程序添加音频。 现在我们当前使用的基本SCAPI帐户有一个基本设置,您只需设置一个URL并获取我们需要输出的MP3流。 由于服务密钥位于URL中,因此我们无法在前端使用它,因此我们需要通过服务器传输文件。 在我测试Samsung 6S上的开发代码之前,一切正常。 它根本没有播放,但服务自己的链接工作,即这工作: Your browser does not support the audio element. 虽然完全相同的代码通过我们的服务器不在三星6S上与控制器中的流源相同的链接。 我已经通过几种不同的方式在服务器上流式传输文件,但每次都在三星6S(全新的开箱即用的无模块)中完全不同。 这是我用过的代码。 无效控制器: string url = “http://tts.readspeaker.com/a/speak?key=[ServiceKey]&lang=en_uk&voice=Female01&audioformat=mp3&volume=200&text=test text 2”; HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)HttpWRequest.GetResponse(); Stream stream = response.GetResponseStream(); MemoryStream ms = new MemoryStream(); stream.CopyTo(ms); Response.AddHeader(“Content-Type”, response.ContentType); Response.AddHeader(“Content-Length”, response.ContentLength.ToString()); Response.AddHeader(“Access-Control-Allow-Origin”, “*”); Response.AddHeader(“Connection”, “close”); Response.Flush(); audioData = ms.ToArray(); Response.BinaryWrite(audioData); […]

接收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 […]

在Android上使用OpenSL ES通过套接字通信stream式传输MP3audio

我试图通过接入点将Android手机中的MP3stream式传输到另一款使用WiFi的Android手机。 问题是,OpenSL ES似乎只支持PCMaudio缓冲区作为源(除非使用URI)。 在发送之前,我并不是在“主”端解码一个潜在的巨大文件,而是希望让“客户端”将MP3解码成PCM。 请记住,这必须发生在文件stream,而不是简单地发送整个文件,然后解码。 有什么办法可以使用OpenSL ES来完成这个任务吗? AudioTrack? 这似乎是一个相当普遍的要求。

是否可以直接从OpenSL ES中的audio资产(Android)获取字节缓冲区?

我想从使用OpenSL ES FileDescriptor对象的audio资产中获得一个字节缓冲区,所以我可以将它重复排入SimpleBufferQueue,而不是使用SL接口来播放/停止/查找文件。 有三个主要原因,我想直接pipe理示例字节: OpenSL使用AudioTrack层来播放/停止播放器对象等。 这不仅会引入不必要的开销,而且还会有一些错误,玩家的快速启动/停止会带来很多问题。 我需要直接操作字节缓冲区来定制DSP效果。 我要播放的片段很小,可以全部加载到内存中以避免文件I / O开销。 另外,排队我自己的缓冲区将允许我通过写入0到输出接收器来减less延迟,并且当他们正在播放时简单地切换到采样字节,而不是停止,暂停和播放audio轨道。 好吧,理由完成 – 这是我已经尝试过 – 我有一个示例结构,其中本质上包含一个input和输出轨道,和一个字节数组来保存样本。 input是我的FileDescriptor播放器,输出是一个SimpleBufferQueue对象。 这是我的结构: typedef struct Sample_ { // buffer to hold all samples short *buffer; int totalSamples; SLObjectItf fdPlayerObject; // file descriptor player interfaces SLPlayItf fdPlayerPlay; SLSeekItf fdPlayerSeek; SLMuteSoloItf fdPlayerMuteSolo; SLVolumeItf fdPlayerVolume; SLAndroidSimpleBufferQueueItf fdBufferQueue; SLObjectItf outputPlayerObject; SLPlayItf outputPlayerPlay; // output […]