小编Mat*_*lfe的帖子

如何处理原始UDP数据包,以便它们可以通过directshow源过滤器中的解码器过滤器进行解码

很长的故事:

  1. 有一个H264/MPEG-4源
  2. 我可以将此源与RTSP协议连接起来.
  3. 我能够使用RTP协议获取原始UDP数据包.
  4. 然后将这些原始UDP数据包发送到解码器[h264/mpeg-4] [DS源过滤器]
  5. 但是这些"原始"UDP数据包无法通过解码器[h264/mpeg-4]过滤器进行解码

不久:

如何处理这些原始UDP数据以便通过H264/MPEG-4解码器过滤器进行解码?任何人都可以清楚地确定我与H264/MPEG流有关的步骤吗?

额外信息:

我可以用FFmpeg做到这一点......但是我无法弄清楚FFmpeg如何处理原始数据以便解码器可以解码.

directshow rtp rtsp h.264 mpeg-4

39
推荐指数
1
解决办法
4万
查看次数

如何使用ruby中的Selenium WebDriver(selenium 2.0)客户端设置选项

我试图熟悉新的ruby selenium-webdriver,因为它看起来比以前版本的selenium和随之而来的ruby驱动程序更直观.另外,我无法让旧的selenium在windows中使用ruby 1.9.1,所以我想我会寻找替代方案.到目前为止,我已经用我的脚本完成了这个:

require "selenium-webdriver"

driver = Selenium::WebDriver.for :firefox
driver.get "https://example.com"

element = driver.find_element(:name, 'username')
element.send_keys "mwolfe"
element = driver.find_element(:name, 'password')
element.send_keys "mypass"
driver.find_element(:id, "sign-in-button").click
driver.find_element(:id,"menu-link-my_profile_professional_info").click
driver.find_element(:id,"add_education_btn").click
country_select = driver.find_element(:name, "address_country")
Run Code Online (Sandbox Code Playgroud)

所以基本上我正在登录我的网站,并尝试在我的用户配置文件中添加一个教育条目.我有一个带选项的选择框的引用(在country_select变量中),现在我想选择一个给定值的选项..我没有看到如何在新客户端中执行此操作.我唯一能想到的是循环遍历所有选项,直到找到我想要的那个,然后调用execute_script: http:// selenium. googlecode.com/svn/trunk/docs/api/rb/Selenium/WebDriver/Driver.html#execute_script-class_method 方法设置selectedIndex.

有没有其他方法可以做到这一点?在这里的java api for selenium 2.0/webdriver:http://seleniumhq.org/docs/09_webdriver.html 有一个这样做的例子

Select select = new Select(driver.findElement(By.xpath("//select")));
select.deselectAll();
select.selectByVisibleText("Edam");
Run Code Online (Sandbox Code Playgroud)

除非我遗漏了某些东西,否则ruby版本似乎没有这个功能.任何帮助,将不胜感激.

ruby select selenium-webdriver

31
推荐指数
5
解决办法
9万
查看次数

iOS 7中的iOS 7 AVPlayer AVPlayerItem持续时间不正确

我的应用程序中有以下代码:

NSURL *url = [NSURL fileURLWithPath: [self.DocDir stringByAppendingPathComponent: self.FileName] isDirectory: NO];
self.avPlayer = [AVPlayer playerWithURL: url];

Float64 duration = CMTimeGetSeconds(self.avPlayer.currentItem.duration);
Run Code Online (Sandbox Code Playgroud)

这适用于iOS 6,但由于某种原因,iOS 7会返回NaN.检查self.avPlayer.currentItem.duration时,CMTime对象的值为0,标志为17.

有趣的是,玩家工作正常,只是持续时间是错误的.

还有其他人遇到过同样的问题吗?我正在导入以下内容:

#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>
#import <CoreMedia/CoreMedia.h>
#import <AVFoundation/AVAsset.h>
Run Code Online (Sandbox Code Playgroud)

avfoundation ios avplayer avasset ios7

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

Android Espresso,测试前唤醒设备.如何使用自定义清单进行测试?

我一直在用androids新的espresso框架编写测试,并发现它运行良好.一个烦人的事情(特别是浓缩咖啡)是我必须确保我的屏幕醒来并解锁以便运行测试.我找到了一种解决方法(通过各种来源),但我不确定整合它的最佳方法.

所以这就是我所做的,在我的"Home"活动中,我有以下代码:

Home.class:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /************ Put this in a conditional for a test version ***********/
    KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
    KeyguardManager.KeyguardLock keyguardLock = km.newKeyguardLock("TAG");
    keyguardLock.disableKeyguard();
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
Run Code Online (Sandbox Code Playgroud)

您还需要添加以下权限:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
Run Code Online (Sandbox Code Playgroud)

所以在这样做之后,我的测试现在唤醒我的手机运行所以我没有必须站岗并确保屏幕在测试开始之前没有关闭.

我宁愿不在我的应用程序中包含这些权限.我知道使用gradle可以制作具有自己的android清单的不同"风味",它将合并到主清单中.我正在考虑使用它,但我不想仅仅因为这个已经使用测试构建类型来运行而添加了一种风味.从android gradle文档看起来,您无法为instrumentTest目录创建AndroidManifest,因为它将自动生成.

但是,我想知道是否有另一种方法可以在不创建变量的情况下执行此操作,然后指定测试应该运行该变体.此外,我不确定所有这些的确切语法,并认为只是为了其他人在网站上有这些信息会很好,因为它似乎分散了.

最后,如果有人知道更好的方法来解决唤醒手机测试的问题,我很乐意听到它,因为我不是这种方式的忠实粉丝,我正在尝试.

android android-wake-lock android-testing android-espresso

21
推荐指数
5
解决办法
7962
查看次数

Android - 在图像/缩略图上叠加播放按钮的最佳方式

我有一个Android应用程序,可以播放音频/视频和显示图片.对于视频,我想在预览图像的顶部以及列表视图中叠加播放按钮.现在我是如何使用xml中的ImageView,然后drawable是我定义的图层列表以编程方式,因为其中一个图像是动态的,播放按钮当然是静态的.我想从底部对齐播放按钮10px,并水平居中.

我的ImageView定义如下(在xml中)

<ImageView 
          android:id="@+id/EvidencePreview"      
          android:layout_width="267dp"
          android:layout_height="201dp"
          android:scaleType="centerCrop"
          android:layout_margin="3dp"
          android:layout_gravity="center_horizontal|center_vertical"/>
Run Code Online (Sandbox Code Playgroud)

ImageView是表单的一部分,用户可以在其中编辑标题和其他信息.然后在我的活动中,我创建了这样的图层列表:

Resources resources = mContext.getResources();
Drawable playOverlayDrawable = resources.getDrawable(R.drawable.play_overlay_large);                        
Drawable[] layers = new Drawable[2];
layers[0] = Drawable.createFromPath(tb.filePath);
layers[1] = playOverlayDrawable;
LayerDrawable layerDrawable = new LayerDrawable(layers);
ViewGroup.LayoutParams lp = iv.getLayoutParams();

int imageHeight = lp.height;
int imageWidth = lp.width;
int overlayHeight = layers[1].getIntrinsicHeight();
int overlayWidth = layers[1].getIntrinsicWidth();
int lR = (imageWidth - overlayWidth) / 2;
int top = imageHeight - (overlayHeight + 10);
int bottom = 10;
layerDrawable.setLayerInset(1, lR, top, lR, bottom);
iv.setImageDrawable(layerDrawable); …
Run Code Online (Sandbox Code Playgroud)

android overlay drawable imageview

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

困惑如何使用Mockito进行Android测试

我正在尝试为我的Android应用程序编写一个单元测试,但无法用mockito做我想做的事情.这与Robolectric一起使用,我工作得很好并证明单元测试工作正常.

我想测试一个按钮是否会打开一个新活动,具体取决于是否连接了一些蓝牙设备.显然,在我的测试中没有与蓝牙连接的设备,但我想假装好像有.蓝牙连接的状态存储在我的Application类中.没有可公开访问的方法来更改此值.

所以基本上应用程序中的逻辑是这样的:

HomeActivity.java:

//this gets called when the button to open the list is clicked.
public void openListActivity(View button) { 
  MyApplication myApplication = (MyApplication) getApplication();
  if (myApplication.isDeviceConnected() {
      startActivity(new intent(this, ListActivity.class));
   }
}
Run Code Online (Sandbox Code Playgroud)

所以为了测试这个,我做了以下事情:

TestHomeActivity.java:

@Test
public void buttonShouldOpenListIfConnected() {
    FlexApplication mockedApp = Mockito.mock(MyApplication.class);
    Mockito.when(mockedApp.isDeviceConnected()).thenReturn(true);
    //listViewButton was setup in @Before
    listViewButton.performClick();
    ShadowActivity shadowActivity = Robolectric.shadowOf(activity);

    Intent intent = shadowActivity.getNextStartedActivity();
    assertNotNull(intent); //this fails because no new activity was opened. I debugged this and found that isDeviceConnected returned false.
    ShadowIntent shadowIntent …
Run Code Online (Sandbox Code Playgroud)

android mockito robolectric

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

在Windows XP中安装Ruby Curb gem

我正在尝试使用ruby 1.8进行文件上传,似乎没有好的开箱即用的解决方案.他们似乎都需要一些第三方补丁或项目的分支才能工作.我会使用机械化,但实际上我需要与xml api接口,而机械化似乎专门用于直接处理网页.我已经尝试过RestClient,但它没有开箱即用的多部分表单的功能,你必须使用项目的分支才能使它工作.类似的情况似乎存在于Net:HTTP我认为限制将是要走的路,因为我可能想要使用multicurl反正我计划做的其他事情.但是,在我的Windows机器上,我似乎无法安装路边宝石.gem install curb给出了一个错误,说我需要指定curl库所在的位置..我已经尝试将选项传递给extconf但到目前为止没有运气.这是没有任何选项的gem install curb的输出

C:\ruby\lib\ruby\gems\1.8\gems\curb-0.5.4.0>gem install curb
Building native extensions.  This could take a while...
ERROR:  Error installing curb:
        ERROR: Failed to build gem native extension.

C:/ruby/bin/ruby.exe extconf.rb
checking for curl-config... no
checking for main() in curl.lib... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib …
Run Code Online (Sandbox Code Playgroud)

ruby curl windows-xp libcurl

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

Seekbar有两个值[-50,0,50]

我需要将" 起点 "放在搜索栏的中心.
我怎么能这样做?

寻求两个价值的巴尔

android seekbar

8
推荐指数
2
解决办法
8454
查看次数

在使用SAX进行解析时,如何保留未绑定到对象的XML节点

我正在开发一个与蓝牙相机接口的Android应用程序.对于存储在相机上的每个剪辑,我们在XML文件中存储关于剪辑的一些字段(其中一些用户可以更改).

目前这个应用程序是唯一一个将此xml数据写入设备的应用程序,但将来有可能桌面应用程序或iphone应用程序也可能在此处写入数据.我不想假设另一个应用程序也没有其他字段(特别是如果他们有一个新版本的应用程序添加了这个版本尚不支持的新字段).

所以我想要防止的是我们在另一个应用程序中向这个XML文件添加新字段的情况,然后用户开始使用android应用程序并清除其他字段,因为它不知道它们.

让我们假设一个例子:

<data>
  <title>My Title</title>
  <date>12/24/2012</date>
  <category>Blah</category>
</data>
Run Code Online (Sandbox Code Playgroud)

当从设备读取时,这将被转换为看起来像这样的Clip对象(简化为简洁起见)

public class Clip {
  public String title, category;
  public Date date;
}
Run Code Online (Sandbox Code Playgroud)

所以我使用SAX来解析数据并将其存储到Clip中.我只是将字符存储在StringBuilder中,当我到达标题,类别和日期的结束元素时将它们写出来.

我意识到,当我将这些数据写回设备时,如果原始文档中有任何其他标签,则它们不会被写入,因为我只写出我所知道的字段.

这让我觉得SAX可能是错误的选择,也许我应该使用DOM或其​​他东西,我可以更容易地写出最初存在的任何其他元素.

或者我想也许我的Clip类包含一些通用XML类型的ArrayList(可能是DOM),并且在startTag中我检查该元素是否不是预定义标记之一,如果是,直到我到达该标记的末尾我存储整个结构(但在什么?)..然后在写回来时,我将浏览所有其他标签并将它们写出到xml文件(以及我当然知道的字段)

这是一个众所周知的解决方案的常见问题吗?

- 更新5/22/12 -

我没有在实际的xml中提到根节点(实际上称为注释),我们使用的版本号已设置为1.我将要做的短期内要求我的应用程序的版本号支持是> = xml数据的版本号是什么.如果xml是一个更大的数字,我将尝试解析回读,但将拒绝对模型的任何保存.关于如何做到这一点,我仍然对任何工作实例感兴趣.

顺便说一下,我想到了另一个应该非常简单的解决方案.我想我可以使用XPATH查找我知道的节点,并在更新数据时替换这些节点的内容.但是我运行了一些基准测试,当解析xml到内存中时,开销是荒谬的.只是解析操作甚至没有进行任何查找导致性能比SAX差20倍.使用xpath一般来说解析速度慢30-50倍,考虑到我在列表视图中解析它们,这真的很糟糕.所以我的想法是让SAX将节点解析为剪辑,但是将整个XML存储在Clip类的变量中(记住,这个xml很短,小于2kb).然后,当我将数据写回来时,我可以使用XPATH来替换原始XML中我知道的节点.

仍然对任何其他解决方案感兴趣.除非它包含一些代码示例,否则我可能不会接受解决方案.

java xml android sax

6
推荐指数
1
解决办法
399
查看次数

如何为非maven项目创建apklib

我的android应用程序依赖于来自第三方的android库项目.我正在将我的构建环境切换到maven并且跟随样本已经相当顺利,但最后一步是这个.我不明白我真正需要做什么.我在这里阅读了apklib页面.我从来没有看过一篇关于你实际做得比这篇文章更好的文章.它包含1个你如何引用apklib的片段,但没有关于你如何实际生成它的信息?

此外,我的项目结构如下所示

/projectroot/app   (main application android project source code)
/projectroot/shared/lib1  
/projectroot/shared/lib2 (3rd party lib i don't want to create pom.xml for)
Run Code Online (Sandbox Code Playgroud)

我有projectroot/pom.xml和模块部分,如下所示:

<modules>
    <module>shared/lib1</module>
    <module>shared/lib2</module>
    <module>app</module>
</modules>
Run Code Online (Sandbox Code Playgroud)

这是对的吗?在所有模块示例中,我看到它们引用了直接子项的文件夹,而我的是嵌套的.

我正在寻找的主要内容是如何使lib2成为一个apklib来引用app/pom.xml.

android maven android-library android-maven-plugin

6
推荐指数
1
解决办法
2662
查看次数