zoukankan      html  css  js  c++  java
  • 基于silerlight for embedd 视频播放器的之一的问题

    时间:10:38 2010-9-3

    环境:
    开发环境:VS2008 +XAML2CPP.EXE + SWE 2 + BLEND 2
    运行环境:WINCE 6.0 R3
    硬件加速: DirectX

    背景:   
        现在要求使用SILVERLIGHT FOR EMBEDD来开发视频播放器与音乐播放器,在PC上的SILVERLIGHT 其是有一个MediaElement控件,其是用于实现视频与音乐的播放,但是在SILVERLIHGT FOR EMBEDD 其没有此控件。所以只能自立更生了,使用DirectShow来开发。然后增加FFDSHOW来添加各种视频的解码器。
        之前在MFC当中使用DIECTSHOW开发多媒体播放器的时候,DirectShow其是需要一个WIN32控件的句柄(HWND)。现在在SILVERIGHT FOR EMBEDD的开发环境当中,其是怎么样与DIRECTSHOW合作的呢。
        现在的想法这样几种:
        1. PAGE.XAML其解析成VISUAL HOST , 其提供了HWND,可以通过    IXRVisualHost::GetContainerHWND() ,这样此HWND 就可以用于DirectShow,应该是可以,但也没有试,但应该也是最简单,在V1.0版本当中,计划采用此法。
        2. IXRWin32Control 其也是有HWND的。可以将DIRECTSHOW依附于此控件上。且此控件具有SWE内置控件的功能,如动画。此方法用于V2.0版本当中。
        3. 在SILVERLIGHT FOR EMBEDD当中,其是允许创建多个VISUAL HOST 对象。可以将其中一个VISUAL HOST 用于DIRECTSHOW。暂还不知MS的SWE开发人员对于多VISUAL HOST 是怎么样管理的。希望其是以类似父子窗口的形式进行管理。 此方法暂无使用计划。

    开发计划:
    STEP ONE:
        1. 使用BLEND 2创建UI
        2. 创建工程。
        3. 使用XAM2CPP.EXE 生成最基本的文件,且将此文件将添加到工程当中。
        4. 编写空事件处理代码。
        5. 运行。

    STEP TWO:
        1. 使用MVC模式重组流程。
        2. 添加DIRECTSHOW 的相关文件。
        3.。

    问题:
        fatal error LNK1112: 模块计算机类型“ARM”与目标计算机类型“X86”冲突   
    解法:
        菜单栏:项目==> XXX属性 ==> 链接器==>命令行->输入:/MACHINE:ARM /MACHINE:THUMB

    问题:
        -2142830490

    问题:
        -2142830481

        去掉ListBox 所产生的错误-2142830487

        -2142830479

        -2142830487

        APP.XAML 当中加载资源的错误-2142830489

    通过排除法,确定最后不能解析成功的原因,其与Slide ,ListBox的自定义模板有关.
                <Slider Margin="53,0,48,43"
                            RenderTransformOrigin="0.507,0.556"
                            Background="#00000000"
                            Grid.Row="1"
                             VerticalAlignment="Bottom"
                             Height="54"
                            x:Name="timelineSlider"
                             Maximum="1"
                             Minimum="0"
                            ValueChanged="TimelineSlider_ValueChanged"
                            IsDirectionReversed="False"
                              Width="256"
                      />
    去IsDirectionReversed="False" 就可以解析成功 ,否则生产-2142830487  错误提示

    终于查找到了另一个出错的原因如下数据绑定的XAML 语句,SILVERLIGHT FOR EMBEDD  其不支持数据绑定,所以当XAML当中出现有关于数据绑定的语句,其不像事件绑定那样过虑了,所以就会致使XAML RUNTIME 解析出错。

        <DataTemplate x:Key="DataTemplate1">
                <Grid Width="166">
                <StackPanel Height="20" Margin="0,0,-0.999,0"                 VerticalAlignment="Top" Orientation="Horizontal">
                <TextBlock Text="{Binding Path=SongName}" Width="55.667"  TextWrapping="Wrap" Height="20" HorizontalAlignment="Left" Foreground="{StaticResource BrushThumb}"/>
                <TextBlock Text="{Binding Path=SongSinger}" TextWrapping="Wrap" Width="69.667" Height="20" HorizontalAlignment="Right" Margin="41,0,0,0" Foreground="{StaticResource BrushThumb}"/>
                </StackPanel>
                </Grid>
            </DataTemplate>

    终于显示了UI,接下是后台逻辑的实现了

      视频播放器之二

    问题:

     

    1. 中文显示的问题没有解决。

  • 相关阅读:
    解决方案 git@github.com出现Permission denied (publickey)
    github设置添加SSH
    base64是啥原理
    PHP面试题:HTTP中POST、GET、PUT、DELETE方式的区别
    PHP中put和post区别
    常用的微信编辑器
    局域网内一台电脑的ip地址自己会变,怎样让它不变
    Trendalyzer is an information visualization software
    FineReport报表和水晶报表的比较
    x
  • 原文地址:https://www.cnblogs.com/pengxinglove/p/1817293.html
Copyright © 2011-2022 走看看