标签: audio-streaming

如何减少延迟 - 从网络摄像头流式传输VLC

我通过UDP从我的网络摄像头/麦克风传输视频和音频.当我查看流(即使在同一台机器上)时,会有大约4秒的延迟.我尝试将UDP缓存设置为0或1,但似乎没有帮助.我尝试降低视频和音频比特率,使用单声道声音并降低采样率都无济于事.

有没有人有任何想法如何减少延迟,更适合视频会议,即<1秒?

是否有可以应用于观众/流光的设置可以提供帮助?

谢谢,

performance vlc video-streaming audio-streaming

17
推荐指数
3
解决办法
8万
查看次数

Windows中低级音频的最佳API?

我正在研究用C语言编写的音频应用程序.我需要在Windows下提供实时音频播放.我需要决定使用哪个音频API.我打算使用基本的waveOut API,但我想查看社区推荐的内容.

我希望代码能够在任何最新版本的Windows上运行,而无需安装库; 我想要最小的延迟.

我不需要或不需要任何"效果",我只需要忠实地播放应用程序生成的任何波形样本.

我的理解是,Windows上的大多数专业音频应用程序都使用ASIO,这提供了出色的低延迟,但我不想要ASIO,因为我希望我的代码能够正常工作,大多数人都没有在他们的计算机上预安装ASIO .(稍后我可以回过头来添加ASIO作为选项,但我会先找到最通用的解决方案.)

那里有什么东西比waveOut更适合我的目的,还是最好的选择呢?

c windows audio audio-streaming

16
推荐指数
3
解决办法
1万
查看次数

从iPhone到另一台设备(浏览器或iPhone)的实时音频/视频流

我想从iPhone获得实时视频到另一台设备(桌面浏览器或其他iPhone,例如点对点).

注意:这不是一对多,而是目前只有一对一.音频可以是流的一部分或通过iphone上的电话呼叫.

我能想到的方法有四种......

  1. 在iPhone上捕获帧,将帧发送到mediaserver,让mediaserver使用主机webserver发布实时视频.

  2. 在iPhone上捕获帧,转换为图像,发送到httpserver,在浏览器中使用javascript/AJAX尽快从服务器重新加载图像.

  3. 在iPhone上运行httpServer,在iPhone上捕获1秒持续时间的电影,在iPhone上创建M3U8文件,让另一个用户直接连接到iPhone上的httpServer以进行liveStreaming.

  4. 在iPhone上捕获1秒持续时间的电影,在iPhone上创建M3U8文件,发送到httpServer,让其他用户连接到http服务器以进行liveStreaming.这是一个很好的答案,有没有人得到它的工作?

有更好,更有效的选择吗?从iPhone上获取数据的最快方法是什么?是ASIHTTPRequest吗?

感谢大家.

iphone video-streaming audio-streaming http-live-streaming

16
推荐指数
2
解决办法
1万
查看次数

ios avplayer触发器流不受缓冲区限制

我想在流缓冲区为空时重新连接到服务器.

我怎样才能触发的方法时,AVPlayerAVPlayerItem缓冲区是空的?

我知道有playbackLikelyToKeepUp,playbackBufferEmpty以及playbackBufferFull检查缓冲区状态的方法,但那些不是回调.

是否有任何回调函数,或者我应该添加的任何观察者?

audio-streaming ios avplayer

16
推荐指数
1
解决办法
2万
查看次数

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

我必须使用ReadSpeaker的TTS(Text to Speak)SaaS ,以便为我正在开发的应用程序添加音频.

现在,我们当前使用的基本SCAPI帐户具有基本设置,您只需设置一个URL并获取我们需要输出的MP3流.由于服务密钥位于URL中,因此我们无法在前端使用它,因此我们需要通过服务器传输文件.

在我测试Samsung 6S上的开发代码之前,一切正常.它根本没有播放,但服务自己的链接工作,即这工作:

<audio controls>
    <source 
        src="http://tts.readspeaker.com/a/speak?key=[ServiceKey]&lang=en_uk&voice=Female01&audioformat=mp3&volume=200&text=test text 2"
        type="audio/mp3">
        Your browser does not support the audio element.
</audio>
Run Code Online (Sandbox Code Playgroud)

而通过我们的服务器完全相同的代码不在Samsung 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);

Response.End();
Run Code Online (Sandbox Code Playgroud)

标准FileStreamResult,我采用上面的代码的MemoryStream并通过它发送,即使用FileStreamResult控制器而不是手动设置标头:

return new FileStreamResult(ms, response.ContentType);
Run Code Online (Sandbox Code Playgroud)

即使是修改FileStreamResult我发现这里允许无需将其下载到服务器的URL的实际流.

我也使用这种方法从ReadSpeaker获取字节数据:

byte[] …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc android audio-streaming samsung-mobile

16
推荐指数
1
解决办法
387
查看次数

如何使用pyglet播放流式音频?

这个问题的目标是试图弄清楚如何使用pyglet播放流式音频.第一个是确保你能够使用pyglet播放mp3文件,这就是第一个片段的目的:

import sys
import inspect
import requests

import pyglet
from pyglet.media import *

pyglet.lib.load_library('avbin')
pyglet.have_avbin = True


def url_to_filename(url):
    return url.split('/')[-1]


def download_file(url, filename=None):
    filename = filename or url_to_filename(url)

    with open(filename, "wb") as f:
        print("Downloading %s" % filename)
        response = requests.get(url, stream=True)
        total_length = response.headers.get('content-length')

        if total_length is None:
            f.write(response.content)
        else:
            dl = 0
            total_length = int(total_length)
            for data in response.iter_content(chunk_size=4096):
                dl += len(data)
                f.write(data)
                done = int(50 * dl / total_length)
                sys.stdout.write("\r[%s%s]" % ('=' * done, ' ' * …
Run Code Online (Sandbox Code Playgroud)

python audio streaming pyglet audio-streaming

16
推荐指数
1
解决办法
965
查看次数

如何在Android中播放在线广播

我正在研究Android应用程序,我在其中播放在线广播流.我已经完成了媒体播放器课程,但我认为没有任何方法可以在线播放电台.如果有任何了解,请帮助我.

谢谢.维克拉姆

android audio-streaming

15
推荐指数
2
解决办法
2万
查看次数

将音频文件流式传输到网站用户/听众的最佳方法是什么

我正在开发一个音乐网站,它将存储在服务器中的音频文件流式传输给用户,音频文件将通过放置在网页中的Flash播放器播放.

  1. 据我所知,我需要使用 流媒体服务器来传输音频文件(例如2mb到3mb)..我需要使用一个吗?

    我找到了一些像http://www.icecast.org这样的流媒体服务器软件- 但是在他们的文档中,它用于流媒体广播电台和实时流媒体用途,但我只需要更快速地传输音频文件(低带宽),质量好..

  2. 我听说我需要先对音频文件进行编码,然后将它们发送给听众,最后需要再次解码音频文件.真的吗?我怎样才能做到这一点?如果我需要使用特殊的Web服务器,我应该在哪里托管我的文件?有什么好的托管服务商

  3. 如果我在普通的Web服务器中托管音频文件,他们将使用HTTP或TCP将我的音频文件传送给用户/列表器,但我发现HTTP和TCP不是用于多媒体目的的好方法,如流式音频和视频文件,它们用于提供HTML和东西.我发现我应该使用RSTP或UDP来传输音频文件..我应该使用什么?

  4. 我知道.MP3文件比其他格式具有更好的质量,但它也为音频文件提供了巨大的尺寸..我应该将哪种格式用于音频文件?

  5. 大多数最优质的音频文件都超过7mb,所以我打算用软件将它们转换成我自己,这样我就可以得到质量稍低的低尺寸文件.如果我正在转换我的音频文件,我应该为我的文件使用什么是好的BITRATE

  6. 任何已知的最佳软件,用于转换音频文件,同时保持良好的质量水平?

注意** - 我知道在网站开头我不需要复杂的要求,但我想知道它们用于soundcloud.com的最佳方式

media audio video audio-streaming internet-radio

15
推荐指数
2
解决办法
2万
查看次数

Chrome扩展程序可监听和捕获流媒体音频

Chrome扩展程序是否可以从任何浏览器的标签中收听流媒体音频?我想捕获流式音频数据然后进行分析.

谢谢

audio google-chrome audio-streaming google-chrome-extension audio-capture

15
推荐指数
2
解决办法
6万
查看次数

在Android上通过TCP套接字传输音频

我通过套接字从C服务器传输麦克风输入.我知道流是有效的,因为它与C客户端有关,我在Android客户端上获得了正确的值.

我正在播放1024 flatarray.一个浮点数是4个字节.所以我得到了一个每帧4096字节的传入流.我从这个字节中获取浮点数,我知道这些浮点数是我发送的,所以该部分应该可以工作.

现在,我希望使用AudioTrack将该流直接传输到手机扬声器.我试着输入我直接收到的字节:只是噪音.我试图将它强制转换为字节数组,仍然是相同的.我试图把那个浮点数简化(因为AudioTrack需要字节或短).我可能得到的东西可能是我的麦克风输入(敲门),但非常沙哑,而且极其迟钝.我会理解帧之间是否存在延迟,但我甚至无法获得一个清晰的声音.然而,我可以清楚地输出一个我本地产生的声音,然后放入那个短小的声音.现在我想知道我的代码中是否有一些问题你可以看到,因为我没有看到它们.

我正在做的是:我在一个字节数组中放入4个字节.我把浮子拿出来了.一旦我在我的浮动数组中得到一个帧(我用bool控制它,不好,但它应该工作)我把它放在我的短片中,让audiotrack播放它.这种双重演员可能会很慢,但我这样做是因为它最接近我实际的输入.

编辑: 我通过比较浮点数来检查结束,它们具有介于-1和1之间的正确值,并且与我发送的值相同.由于我在转换为浮动时不改变endianess,我不明白为什么直接将4096字节数组转发到AudioTrack也不起作用.多线程可能有问题,但我不知道它可能是什么.

编辑2: 我发现了一个小问题 - 我在1023处重置了j.但是那个丢失的浮点数应该不是问题所在.除了那之外我做的是将来自套接字的流的方法放在另一个线程中,而不是在异步任务中调用它.这使它工作,我现在能够理解麦克风的声音.质量仍然很差 - 代码中可能有这样的原因吗?我也有大约10秒的延迟.只有大约半秒钟是由WLAN引起的,所以我想知道它是否可能是代码故障.任何进一步的想法表示赞赏

编辑3:我玩了代码并在评论中实现了一些greenapps的想法.使用新的线程结构,我面临着没有任何声音的问题.像一样.我不知道怎么可能,所以我换回来了.我尝试使线程更轻量级的其他东西没有任何影响.我有一个延迟,我的质量很差(我可以识别敲门声,但我无法理解声音).我认为我的转换可能有问题,所以我把我从套接字收到的字节直接放在AudioTrack中 - 只有丑陋的脉冲静态噪音.现在我更加困惑,因为这个确切的流仍然适用于C客户端.如果我找到解决方案,我会报告,但仍然欢迎任何帮助.

编辑4 我应该添加,我可以从另一个Android应用程序播放麦克风输入,我直接将该输入作为字节发送(我将排除浮动播放的东西,并将我直接接收的字节放入我的播放器代码中的audioTrack).
它也发生在我身上,这可能是一个问题,由C服务器流式传输的所述floatarray来自64位机器而手机是32位.这可能是一个问题,即使我只是将浮动数据传输为4个字节?或者,我的另一个想法:我收到的字节的基础数字格式是浮点数.AudioTrack期望什么格式?即使只放入字节 - 我是否需要将该浮点数转换为int并将其转换回字节或其他内容?

新代码:

public class PCMSocket {

AudioTrack audioTrack;
boolean doStop = false;
int musicLength = 4096;
byte[] music;
Socket socket;
short[] buffer = new short[4096];
float[] fmusic = new float[1024];
WriteToAudio writeThread;
ReadFromSocket readThread;


public PCMSocket()
{

}

public void start()
{
    doStop = false;
    readThread = new ReadFromSocket();
    readThread.start();
}

public class ReadFromSocket extends Thread
{       
    public void …
Run Code Online (Sandbox Code Playgroud)

java sockets android audio-streaming audiotrack

15
推荐指数
1
解决办法
8280
查看次数