2010年3月19日 星期五

FLEX AIR 包裝應用程式 ICON 的問題

在開發 AIR  應用程式後,若要包裝自己的應用程式,並且加上自訂的圖示的話,可以到 project\src\your-app.xml 找到…

<!-- <icon>
<image16x16></image16x16>
<image32x32></image32x32>
<image48x48></image48x48>
<image128x128></image128x128>
</icon> -->

修改成…

    <icon>
        <image32x32>images/icon.png</image32x32>
    </icon>

要注意,若你只有一個 32x32 的 ICON 就只要留下  <image32x32></image32x32> 這行即可,千萬別把其它留空白,否則會包裝失敗還一直查不出原因…錯誤示範如下…

    <icon>
        <image16x16></image16x16>
        <image32x32>images/icon.png</image32x32>
        <image48x48></image48x48>
        <image128x128></image128x128>
    </icon>

FMS串流撥放FLV(或RTMP)時截取其BITMAP的方式

在透過 FMS 撥放 rtmp 串流影音時,若你的 CLIENT 端除了撥放,還要抓圖作處理的話,會遇到如下的例外…

SecurityError: Error #2123: Security sandbox violation: 
BitmapData.draw: file:///xxx/xxx/xxx.swf
cannot access rtmp://xxx.xxx.xxx/live. No policy files granted access.

解決方式如下…
1. COPY 安裝範例 C:\Program Files\Adobe\Flash Media Server 3.5\samples\applications\vod 到你自己的應用程式。(有興趣可以研究看看其寫法)

2. 修改 Application.xml 檔,在 <client></client> 區間加入…

<Access>
<VideoSampleAccess enabled="true">/</VideoSampleAccess>
</Access>

3. 修改 main.asc (即 Server-side-code)…
找到 application.onConnect = function( p_client, p_autoSenseBW )
這邊是用來處理當有 client 連到這個 server app 時的對應函式,幾個相關參數設定如下…

writeAccess:
若你有用到 shared object 或 live streams,就把它註解掉
//p_client.writeAccess = ""; // prevents creating shared object or live streams.

audioSampleAccess:
允許 client side 直接抓取音效 raw data,利用 SoundMixer.computeSpectrum() 處理音效
p_client.audioSampleAccess = "/";

audioSampleAccess:
允許 client side 直接抓取影片 raw data,利用 BitmapData.draw() 抓圖
p_client.videoSampleAccess = "/";


參考這篇: http://www.thebluepipe.com/Developer/tutorials/as3/Crossdomain-Video-Snapshot-Fixing-BitmapData-draw-Security-Sandbox-Violation.html

更高效處理 micro second 的方式

更高效處理 micro second 的方式…  以 STM32 為例… __IO unsigned long sys_tick = 0; void SysTick_Handler(void) {     HAL_IncTick();     sys_tick += (SysTi...