我正在开发一个用于音乐的iPhone应用程序.我想给用户一些选项,这样他们就可以通过流媒体收听歌曲/音乐,或者他们可以在应用程序中下载音乐.我知道如何以编程方式在应用程序中流式传输音频文件.但是,我不知道如何在应用程序中下载音频文件并在下载后播放音频.并且用户可以在下载时暂停下载.有可能吗?任何人都可以指导我,请为我分享任何示例代码或教程?我还有一个疑问:你可以帮我在应用程序内创建一个文件夹吗?请帮我.提前致谢.
我已经尝试了许多方法来实现常规UISlider和控制设备卷,但它是所有Native-C函数,导致许多无法追踪的错误.
我试过MPVolumeView它就像魅力一样,它甚至在你关闭应用程序后控制设备音量,就像iPod应用程序一样.
我的问题是,无论如何要定制MPVolumeView特定的颜色和图像,就像UISlider?
注意:我想要一个合法的方法,而不使用私有的未记录的API.
更新
根据@Alexsander Akers的回答,由于子视图隐藏在MPVolumeView我必须遍历子视图,获取UISlider并自定义它,这里是代码.
IBOutlet UISlider *volumeSlider; //defined in <class.h> and connected to a UISlider in Interface Builder
-(void) viewDidLoad {
....
[self setCustomSlider];
....
}
-(void) setCustomSlider{
MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame:[volumeSlider frame]] autorelease];
NSArray *tempArray = volumeView.subviews;
for (id current in tempArray){
if ([current isKindOfClass:[UISlider class]]){
UISlider *tempSlider = (UISlider *) current;
UIImage *img = [UIImage imageNamed:@"trackImage.png"];
img = [img stretchableImageWithLeftCapWidth:5.0 topCapHeight:0]; …Run Code Online (Sandbox Code Playgroud) 是否可以使用PHP从音频流中提取音轨信息?我已经做了一些挖掘,我能找到的最接近的函数是stream_get_transports,但我的主机不支持通过fsockopen()的http传输,所以我将不得不做一些修补,看看该函数返回的是什么.
目前,我正在尝试从AOL流中提取艺术家和跟踪元数据.
编辑:
Android 2.2 MediaPlayer可以正常使用一个SHOUTcast URL,但不能与另一个一起使用
我需要播放来自外部URL(shoutcast流)的音频文件.目前,音频文件会逐步下载并在我们在手机本地临时存储中获得足够的音频时立即播放.我正在使用StreamingMediaPlayer类.
检查这段代码:
private MediaPlayer createMediaPlayer(File mediaFile)
throws IOException {
MediaPlayer mPlayer = new MediaPlayer();
//example of mediaFile =/data/data/package/cache/playingMedia0.dat
FileInputStream fis = new FileInputStream(mediaFile);
mPlayer.setDataSource(fis.getFD());
mPlayer.prepare();
return mPlayer;
}
Run Code Online (Sandbox Code Playgroud)
当前状态:
1-从Android 1.6到2.1工作正常,但在Android 2.2等更高版本中没有.
2-"mPlayer.setDataSource(fis.getFD())"是抛出错误的行.
3-错误是"无法创建媒体播放器"
尝试其他方案:
我尝试了下面的替代解决方案但到目前为止没有任
Android 2.2 MediaPlayer可以正常使用一个SHOUTcast URL,但不能与另一个一起使用
我在找什么?
我的目标是拥有可以在Android 2.1及更高版本上运行的代码.
这个问题也在这里讨论:
在2.2中流式传输shoutcast流中断的 2个android代码
3-本期网站上的很多问题也讨论了这个问题,但我发现答案没有.
4- markmail.org
LogCat跟踪:
Unable to to create media player
Error copying buffered conent.
java.lang.NullPointerException
com.ms.iradio.StreamingMediaPlayer.startMediaPlayer(StreamingMediaPlayer.java:251)
com.ms.iradio.StreamingMediaPlayer.access$2(StreamingMediaPlayer.java:221)
com.ms.iradio.StreamingMediaPlayer$2.run(StreamingMediaPlayer.java:204)
android.os.Handler.handleCallback(Handler.java:587)
android.os.Handler.dispatchMessage(Handler.java:92)
android.os.Looper.loop(Looper.java:123)
android.app.ActivityThread.main(ActivityThread.java:3683)
java.lang.reflect.Method.invokeNative(Native Method) …Run Code Online (Sandbox Code Playgroud) 链接到"反馈中心" 的错误报告
音频端点设备(此处称为"端点")是物理或虚拟音频输出或输入设备.
在Windows 10 April Update 1803中,引入了早该应用的"应用程序卷和设备首选项".这些设置允许更多地控制音频流管理,因为现在可以为不同的应用程序设置不同的端点,无论该特定应用程序是否带有端点选择.
但是,有一个问题是程序的音频(其端点是非默认的)在关闭并再次启动后通过默认端点(或根本不是)流式传输,尽管端点在设置中正确显示:
据我所知,可以在具有任何虚拟或物理端点和受影响程序的Windows 10计算机(版本1803或更高版本)上重新创建该问题.我在这个例子中使用了"VLC媒体播放器"(忽略了它带有端点选择的事实),因为它是众所周知的并且可以广泛访问,这样可以更容易地重新创建问题.
我在寻找什么......
...是一种在端点之间切换的编程解决方案,理想情况下可以以脚本的形式启动,以通过应用程序启动设置正确的端点.
为了我的目的,只需手动调整设备实例路径就足够了,因为设备总是一样的,但我也不会抱怨从注册表中检索设备实例路径的解决方案.
HKEY_USERS\# YOUR SID #\Software\Microsoft\Multimedia\Audio\DefaultEndpoint.我不知道windows如何生成子项的名称或它们可以在哪里找到.如果我不得不疯狂猜测,我会说这些是应用程序ID(如果我错了,请随时纠正我).一个可能但不切实际的解决方法......
...将为应用程序手动设置另一个端点,并在每次启动所述应用程序时切换回所需的端点(如上所示).
但是,不是每次启动都至少需要10秒,你甚至可能忘记这样做,因为音频可能只是通过默认端点流式传输*¹.
后者的替代方案是,根本不会传输音频,*²或者在某些情况下它实际上是有效的*³.
*¹ 例如:VLC媒体播放器,Tom Clancy的Rainbow Six Siege(虽然在启动画面期间音频将正确流式传输)
*² 例如:使命召唤4:现代战争,使命召唤:现代战争2,使命召唤:现代战争3
*³ 例如:Window Media Player,Microsoft Edge,Firefox
意见
放弃
我已经尝试了两个第三方软件:"音频路由器",它根本不起作用和"CheVolume",它不能解决问题并且在这样做时不断崩溃.
这个问题基于我在超级用户(这里)询问过的问题,由于我对实际编程缺乏了解,我无法得到答案(我对Batch和PowerShell只有一点熟悉) ).我很清楚,Stack Overflow和Super User都不是脚本编写服务,但是,这个问题没有得到Windows 10 10月更新1809的解决,我认为这是一个不仅影响我的问题,而且会影响我在我之后帮助多个人.如果您对此有不同看法,请随意撰写评论或提出修改建议.
我也不确定标签的"音频流"和"端点"是否应该在这种情况下使用,如果它们不应该或者你能想到更好的话,请提出编辑.
使用第三方软件'EarTrumpet'我能够克服"使命召唤"游戏的问题(重启后根本没有音频),但是,在我指定非默认端点后,"VLC媒体播放器"不会重启用'EarTrumpet'直到我再次关闭'EarTrumpet'并且'Tom Clancy的Rainbow Six Siege'的问题仍然存在. …
我正在使用Mjsip来创建一个软电话.在代码中有三种类型的音频分层选项.
我没有使用RAT.它的价值被我自己弄错了.这是调用JMF的代码:
public JMFAudioLauncher(int local_port, String remote_addr, int remote_port, int direction, Log logger)
{
log=logger;
localport=local_port;
remoteport=remote_port;
remoteaddr=remote_addr;
// Patch for working with JMF with local streams
if (remote_addr.startsWith("127."))
{
printLog("Patch for JMF: replaced local destination address "+remote_addr+" with 255.255.255.255");
remote_addr="255.255.255.255";
}
dir=direction;
if (dir>=0) sender=new JMediaSender("audio",null,remote_addr,remote_port);
if (dir<=0) receiver=new JMediaReceiver("audio",local_port,null);
}
/** Starts media application */
public boolean startMedia()
{
printLog("launching JMF-Audio...");
String err1=null, err2=null;
if (sender!=null) err1=sender.start();
if (err1!=null) printLog("Error trying to send …Run Code Online (Sandbox Code Playgroud) 我目前正在使用HTML5音频播放器通过(移动)浏览器提供音频流(24/7无线电流).在流中加载并播放它工作正常.
主要问题是HTML5 <audio>标签将继续下载(缓冲)内容,即使它不活跃.对于移动用户来说,这可能是一个主要问题,因为他们中的大多数都支付数据使 到目前为止,我还没有找到一个适合跨浏览器的解决方案,以防止这种情况发生.
我到目前为止尝试过:
我只是想知道在整个问题上是否有一些我忽略的东西,因为我确信我不是唯一有这个问题的人.
我对同一主题进行了研究,发现android设备是a2dp源,音频只能从a2dp源流到a2dp接收器.A2dp接收器可以是蓝牙耳机或蓝牙扬声器.
但我的问题是那个名为 " 蓝牙音乐播放器 " 的Android应用程序是如何工作的?
它允许从一个移动设备流式传输到另一个 因此,在这种情况下,收听移动设备必须充当接收器.这怎么可能?他们使用的是其他配置文件而不是a2dp吗?
好的,这可能是他们正在使用的不同的配置文件.因为应用程序也需要在客户端安装.但是如何将语音从蓝牙麦克风传输到Android设备呢?
请帮忙.
我想要的是在Firebase存储上保存mp3文件,然后将其传输到Android设备.Firebase上的所有教程都讨论了图像文件的上传和下载.
如果有任何其他云比Firebase更容易存储和流式传输音频,那么请建议.
我正在以小块的形式从服务器接收PCM音频数据,并将它们存储在一个数组中.现在我想使用一些HTML5功能顺序播放这些音频块.我将其视为"可能"解决方案的两个选项是:
在我调查这些选项时,请向我建议我正在考虑的两个选项的任何其他选项或观点.虽然跨平台解决方案将是最好的,但我可以满足Chrome专用解决方案
audio-streaming ×10
android ×3
audio ×2
html5 ×2
html5-audio ×2
iphone ×2
a2dp ×1
audio-player ×1
bluetooth ×1
buffering ×1
c++ ×1
download ×1
endpoint ×1
firebase ×1
ios ×1
java ×1
javascript ×1
jmf ×1
php ×1
rtp ×1
shoutcast ×1
streaming ×1
windows-10 ×1