您好,我正处于应用程序的早期阶段,其中一部分我需要将音频从一台设备流式传输到多台设备。到目前为止,我一直在谷歌上搜索寻找最佳解决方案,我发现这两个项目各有问题。
spy 机器人 http://code.google.com/p/spydroid-ipcamera/ 问题 这个的问题是它创建了一个仅限于一个连接设备的 rtsp 流。如果我在我的两台计算机上浏览到链接,我会看到两个客户端都在应用程序中连接,但第二个连接的客户端立即断开连接,应用程序说我的手机不支持此功能。我深入研究了源代码,发现在 Session.java 文件中有 if 语句,上面有注释,说阻止建立两个连接我注释掉了 if 语句,catch 子句在运行后捕获了我。如果我可以让它在 3g 以上工作时使用多个连接,那么这个项目将是完美的。
PttDroid http://code.google.com/p/pttdroid/ 问题 这个的问题是它允许我需要多个连接,但我只能让它通过 wifi 工作。它在主页上说它可以在 3g 以上工作,但只有单播我需要在 3g 和 wifi 上进行多播,但我无法让单播在 3g 以上工作。
所以我的问题归结为我应该走哪条路,并更多地研究从我的 android 设备到多台计算机和其他 android 设备的流式音频。
非常感谢您的帮助!
最佳答案
蜂窝网络通常不支持多播数据包。蜂窝路由器根本不路由它们,所以这是死胡同。
因此,您需要向多个目的地进行单播,这对于手机有限的蜂窝带宽而言可能具有挑战性。您很可能会在只有一两个流的情况下争用蜂窝带宽,即使您可以让它们用完同一台设备。 (例如,同一文件的多个 Spydroid 流。)
如果我正在构建一个系统来执行此操作,我会考虑设置一个服务器来进行反射。所以我希望使用 Spydroid 之类的东西来运行 RTSP 流到服务器,然后将其从服务器反射到许多订阅者。这不是一个小项目,但可以让您使用更高带宽的服务器向多个用户流式传输。
这里显然有一个项目遵循这个反射器策略: https://code.google.com/p/js4ms/wiki/RTSPMulticastReflector
我根本没有测试过它是否有效,但这至少应该让你走上正确的道路。
关于Android 将音频流式传输到其他设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11655254/
我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
我需要一些关于TDD概念的帮助。假设我有以下代码defexecute(command)casecommandwhen"c"create_new_characterwhen"i"display_inventoryendenddefcreate_new_character#dostufftocreatenewcharacterenddefdisplay_inventory#dostufftodisplayinventoryend现在我不确定要为什么编写单元测试。如果我为execute方法编写单元测试,那不是几乎涵盖了我对create_new_character和display_invent
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
Devise是一个Ruby库,它为我提供了这个User类:classUser当写入:confirmable时,注册时会发送一封确认邮件。上周我不得不批量创建300个用户,所以我在恢复之前注释掉了:confirmable几分钟。现在我正在为用户批量创建创建一个UI,因此我需要即时添加/删除:confirmable。(我也可以直接修改Devise的源码,但我宁愿不去调和它)问题:如何即时添加/删除:confirmable? 最佳答案 WayneConrad的解决方案:user=User.newuser.skip_confirmation
我在Rails模型中有两列相互关联:Article.bodyArticle.body_updated_on每次Article.body更新时,我想将Article.body_updated_on更改为Time.now。如果任何其他字段已更新,则无需进行任何操作。 最佳答案 只需在将回调保存到您的文章模型之前添加classArticle 关于ruby-on-rails-RubyonRails,在更新其他列值时更改列值,我们在StackOverflow上找到一个类似的问题:
使用RubyonRails,我使用给定的增量(例如每30分钟)用时间填充“选择”。目前我正在YAML文件中写出所有的可能性,但我觉得有一种更巧妙的方法。我想我想提供一个开始时间、一个结束时间、一个增量,并且目前只提供一个名为“关闭”的选项(想想“business_hours”)。所以,我的选择可能会显示:'Closed'5:00am5:30am6:00am...[allthewayto]...11:30pm谁能想出更好的方法,或者只是将它们全部“拼写”出来的最佳方法? 最佳答案 此答案基于@emh的答案。defcreate_hour
例如:options={fight:true,use_item:false,run_away:false,save_game:false}我想要一个计算结果为true的bool表达式,当且仅当:fight为true,其余为false(如上图所示)。我可以一起解决这个问题,但我正在努力训练自己编写更优雅的ruby。谢谢!编辑:黑客是:(options[:fight]==true&&options.delete(:fight).values.all{|x|!x}) 最佳答案 假设所有值都是严格的bool值,它很简单:options=