SlideShare a Scribd company logo
Android 行動上網裝置 應用 - 多媒體影音串流播放器 班級: TI702 成員: 98971036  林聖哲     98971037  陳晁偉     98971042  連力航     98971046  郭君彥     98971053  王裕鈞     98971057  江慶峰 財團法人資訊工業策進會 半導體學院 - 嵌入式系統程式設計班
總覽 (1)- 序 背景研究 MID 、市場定位、 ARM 、 android 動機與目標 功能描述 Linux kernel +Android fs-> 多媒體 AP 開發 -> 影音串流伺服器 系統軟體架構 Android 架構
總覽 (2)- 研究內容 伺服器與應用程式開發 VLC 影音串流伺服器 Android 應用程式開發 遭遇問題與研究 Porting 與整合修改 Diff kernel 驅動移植 文件修改 問題與解決
總覽 (3)-porting- 成果與展望 ARM9 (Mini 2440)+android     work Kernel   基本驅動 ( 顯示、音效、 RTC 、 touch)     ok 周邊驅動 (USB 、 SD 卡、 DM9000)    ok Android FileSystem 使用別人修改好的     遺憾 因 Android 官方版本只支援 arm v5 以上版本, 我們所使用的開發板是 arm v4 ,無法全部自已修改  心得與期望 希望更多時間與機會深入 Android  的 FS 想嘗試 porting 在不同平台上 ( 成本考量我們使用的開發板跑不太動 android 系統 )
總覽 (4)-AP- 成果與展望 Android  多媒體播放器 可播放影片   ok 可透過  HTTP  協定播放串流影音  ok 影音串流播放 自行轉檔做出  Android  可串流播放的影片 ok 透過  VLC  串流伺服器播放 遺憾 VLC  串流伺服器無法在連線進入時,優先 送出 moov atom  封包,使應用程式端播放 器無法播放串流影音 心得與期望 加強播放器的  UI  讓使用者可從儲存裝置中選擇要播放的影片檔,或者輸入網址播放串流影音 研究  VLC  的程式碼,解決  VLC  串流伺服器的問題 期望進一步能做到使用 MID+Android 做到安全監控系統
背景研究
行動上網裝置  (MID) 英特爾發展平台 Menlow  Moorestown  發展歷史  2009 02/16 -  英特爾宣布擴大  MID 與 LG 合作 06/23 -  英特爾宣佈與  Nokia 結盟
市場定位 非小筆電、智慧型手機 強調口袋規格 市場表現 Forward Concepts  估計行動網路裝置的出貨量將自 2008 年 30.5 萬台成長到 2012 年的 4000 萬台,達到 120 億美元的營收規模。 ④
ARM 架構的行動裝置 ABI Research 預測: 行動裝置  ARM  架構將勝出 ⑤ ARM  執行長: 還有勝算! 行動運算市場 … ⑦
Android  熱潮  由開發者社群所帶來的概念 強力推手  Google Android + ARM  组合在  Computex 2009 上大放異彩 不可限量
動機與目標 上網不受侷限 攜帶輕便 隨時上網 操作便利 Android 市場熱潮 行動裝置的優勢 客制化
功能描述 Android  軟硬體整合 應用程式開發 前端  - Android 多媒體影音播放器 ( 支援影音串流 ) 後端  -  伺服器 影音串流伺服器
系統硬體架構 Internet Android 行動上網裝置 影音串流伺服器 x86 PC FriendlyARM Mini2440 ARM9 S3C2400
伺服器軟體套件需求 OS: Ubuntu 9.04 VLC Media Player and Server (Open-Source and Cross-Platform)
Android 檔案系統軟體架構
VLC  影音串流伺服器設定
為何使用影音串流伺服器 應用程式端的環境有限制 支援較少的影音編碼 硬體效能不高 影音串流伺服器 轉換各種編碼至特定的編碼輸出 壓縮影像品質使播放影片的效能需求降低
Android  支援的影音編碼 Video Coder H.263 、 H.264 、 MPEG-4 Audio Coder AAC 、 MP3 、 MIDI 、 Ogg 、 WAV 、 AMR 影音串流編碼選擇 H.264 with AAC
VLC  選擇串流功能
加入要串流的影音檔案
串流協定和影音編碼設定
影像參數設定
音效參數設定
播放測試
輸入串流主機  IP
 
Android  應用程式開發
開發環境 Android 1.5 SDK Release 3 Development tools Android Platforms Emulator Eclipse with ADT Plugin Software Development IDE Android Development Tools Plugin
Android Resource Android Developers http://developer.android.com/ Tutorial Documents API Package & Class Reference SDK include API Demos
VideoPlay.java
Application UI
VideoDM.java
 
應用程式開發遭遇問題
播放器測試直接播放檔案
OK
播放器測試播放串流影音
透過網路連線觀察
沒有反應
應用程式遭遇問題研究
透過 HTTP 串流直接播放影片
Work!!
問題還沒解決 可 可 Youtube 下載的影像檔 不行 可 自己轉檔的 影像檔 透過 HTTP 串流播放 檔案方式直接播放
moov atom Android Media Framework moov atom is needed for HTTP progressive streaming Solution the moov atom has been placed after mdat atom at the end of the file.  moves the moov atom to the begin of the file so it can be played out as soon as it buffered enough data.
轉出 Android 可串流播放的影片 OS: Ubuntu 9.04 Tools ffmpeg (media converter) libx264 (h264 codec library) libfaac0 (aac codec library) MP4Box (mp4 container multiplexer, include in gpac package)
先轉成 Android 支援的編碼和格式 ffmpeg -i  ../TS4.flv  -s 128x96 -aspect 1.2222  -vcodec   libx264  -b 64k -bt 64k -r 12  -acodec   libfaac  -ac 1 -ar 44100 -ab 128k -y  TS4.mp4
處理  moov atom strings TS4.mp4 | grep -n "mdat\|moov“ 4:?a+mdat 47781:moov 將 moov atom 移到 mdat atom 前面 MP4Box -hint TS4.mp4 strings TS4.mp4 | grep -n "mdat\|moov" 3:moov 116:Dhumdat
未解決的部份 影音串流伺服器 如何讓  Android  播放器連接上伺服器時,伺服器必須優先送出帶有  moov atom  資料的封包
核心移植過程和問題
porting 比對 kernel 差異 版本 :2.6.27 工具 :winMerge 整合修改 問題與解決
Kernel + Google download Linux kernel -android Drivers/android/ Hardware dependent Mini2440 patch Get platform patch Android+mini2440 Linux kernel Mini2440 Linux kernel www.kernel.org Linux kernel diff
diff
 
驅動移植 LCD 驅動移植 RTC 驅動移植 網卡 DM9000 驅動移植 Touch 驅動移植 USB Host 驅動移植 SD 卡驅動移植 Uda1341 驅動移植
整合修改 修改文件 kernel.git/arch/arm/mach-s3c2440/mach-s3c2440.c   修改背光  附錄 A 修改時鐘 附錄 B   修改顯示 附錄 C   smdk2440_lcd_cfg_initdata 設置   (NEC3.5 英寸, 320x240)
遇到的問題 LCD 的問題 成功移植 kernel 且正常開機,執行 android 看不到 LCD 畫面 解決 : Double Framebuffer 的關係  Touch 的不精準 Touch driver  在新版與舊版 linux kernel 之間有很大差異 解決 : 捨棄一開始的目標版本 kernel 2.6.25+fs 1.0     改用 kernel 2.6.27+fs 1.5
附錄 A 修改背光   修改文件 kernel.git/arch/arm/mach-s3c2440/mach-s3c2440.c  (這裡的修改方式為較簡單正規方式是增加一個管理背光的驅動。)  static void __init smdk2440_machine_init(void)  {  s3c24xx_fb_set_platdata(&smdk2440_fb_info);  platform_add_devices();  s3c2410_gpio_cfgpin(S3C2410_GPG4,S3C2410_GPG4_OUTP); // 添加  s3c2410_gpio_setpin(S3C2410_GPG4,1); // 添加  smdk_machine_init();  }
附錄 B 修改時鐘 修改文件 kernel.git/arch/arm/mach-s3c2440/mach-s3c2440.c  static void __init smdk2440_map_io(void)  {  。。。。。。  s3c24xx_init_clocks(12000000); // 修改,原來是 s3c24xx_init_clocks(16934400);  。。。。。。  }
附錄 C(1) 修改顯示 修改文件 kernel.git/arch/arm/mach-s3c2440/mach-s3c2440.c  static struct s3c2410fb_display smdk2440_lcd_cfg __initdata ={  。。。。。。  .pixclock = 100000, //  修改 ,原來為 166667  。。。。。。  .right_margin = 37, // 修改 ,原來為 8  .hsync_len = 6, // 修改 ,原來為 4  .upper_margin =2, // 修改 ,原來為 8  .lower_margin = 6, // 修改 ,原來為 7  .vsync_len =2, // 修改 ,原來為 4  }
附錄 C(2) static struct s3c2410fb_mach_info smdk2440_fb_info __initdata ={  。。。。。。  .default_display =0  //add start  .gpccon = 0xaa955699,  .gpccon_mask = 0xffc003cc,  .gpcup = 0x0000ffff,  .gpcup_mask = 0xffffffff,  .gpdcon = 0xaa95aaa1,  .gpdcon_mask = 0xffc0fff0,  .gpdup = 0x0000faff,  .gpdup_mask = 0xffffffff,  // add end  .lpcsel = 0xf82, // 修改 ,原来为 ((0xCE6) &~7) | 1<<4,  };
謝謝指教!

More Related Content

PDF
How to build a community in a company blue&macpaul coscup2015
Macpaul Lin
 
PPT
王團 03-19 考題
T客邦
 
PPT
王團 03-19 考題 & 解答
T客邦
 
PPT
用Raspberry Pi 完成一個智慧型六足機器人
艾鍗科技
 
PPT
OpenWRT, A value-add base solution for your product. (2nd, Macpual)
Macpaul Lin
 
PPTX
艾鍗學院-單晶片韌體-CC2500通訊實驗
艾鍗科技
 
How to build a community in a company blue&macpaul coscup2015
Macpaul Lin
 
王團 03-19 考題
T客邦
 
王團 03-19 考題 & 解答
T客邦
 
用Raspberry Pi 完成一個智慧型六足機器人
艾鍗科技
 
OpenWRT, A value-add base solution for your product. (2nd, Macpual)
Macpaul Lin
 
艾鍗學院-單晶片韌體-CC2500通訊實驗
艾鍗科技
 

What's hot (6)

PPTX
Raspberry Pi專題製作四旋翼飛行器
艾鍗科技
 
PPTX
GPU和视频编解码
pluschen
 
DOCX
Oracle prm安装说明
maclean liu
 
PPT
2009.05.Windows Media 网络直播 Howto
caipenglong
 
PDF
2014年HFD硬件自由日活动清华站-GNURadio x HackRF - 王康 / scateu
Wang Kang
 
DOC
Translation
guest60ebb78
 
Raspberry Pi專題製作四旋翼飛行器
艾鍗科技
 
GPU和视频编解码
pluschen
 
Oracle prm安装说明
maclean liu
 
2009.05.Windows Media 网络直播 Howto
caipenglong
 
2014年HFD硬件自由日活动清华站-GNURadio x HackRF - 王康 / scateu
Wang Kang
 
Translation
guest60ebb78
 
Ad

Similar to TI702_Android_MID (20)

PDF
ARM体系结构详解(我上111111111111课时老师的100多页PPT课件).pdf
ssuserc8ad8a1
 
PDF
Mini6410+++º +¦ß-20101121
meru2ks
 
PDF
Mini6410+++º +¦ß-20101121
meru2ks
 
PPTX
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
Simen Li
 
PPT
Picoway Company Profile 1.5
picoway
 
PPT
Picoway Company Profile V1.5
picoway
 
PDF
Android
donotbeevil
 
PDF
Windows Mobile 多媒體應用程式開發
Chui-Wen Chiu
 
PDF
Koubei banquet 28
Koubei UED
 
PDF
Coscup2011: porting android to brand-new cpu architecture
lusecheng
 
PDF
S3C44B0 User Guide
phantoxe
 
PDF
S3C44B0 User Guide
phantoxe
 
PPT
基于嵌入式系统的Avs P10编码系统设计
Hengyi
 
PDF
分会场二Storage foundation 中的多通道技术
ITband
 
PDF
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
National Cheng Kung University
 
PPT
部門會議 950619 Leon的錦囊妙計
Leon Chuang
 
PPTX
LinkIt 7697 IoT tutorial
CAVEDU Education
 
PDF
2019 Technology Planning (for DOOH System)
August Lin
 
PDF
ARM常用ARM芯片选型111111111111111111111111111111111.pdf
ssuserc8ad8a1
 
PDF
Mini2440 manual part1
vineyugave
 
ARM体系结构详解(我上111111111111课时老师的100多页PPT课件).pdf
ssuserc8ad8a1
 
Mini6410+++º +¦ß-20101121
meru2ks
 
Mini6410+++º +¦ß-20101121
meru2ks
 
2018 VLSI/CAD Symposium Tutorial (Aug. 7, 20:00-21:00 Room 3F-VII)
Simen Li
 
Picoway Company Profile 1.5
picoway
 
Picoway Company Profile V1.5
picoway
 
Android
donotbeevil
 
Windows Mobile 多媒體應用程式開發
Chui-Wen Chiu
 
Koubei banquet 28
Koubei UED
 
Coscup2011: porting android to brand-new cpu architecture
lusecheng
 
S3C44B0 User Guide
phantoxe
 
S3C44B0 User Guide
phantoxe
 
基于嵌入式系统的Avs P10编码系统设计
Hengyi
 
分会场二Storage foundation 中的多通道技术
ITband
 
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
National Cheng Kung University
 
部門會議 950619 Leon的錦囊妙計
Leon Chuang
 
LinkIt 7697 IoT tutorial
CAVEDU Education
 
2019 Technology Planning (for DOOH System)
August Lin
 
ARM常用ARM芯片选型111111111111111111111111111111111.pdf
ssuserc8ad8a1
 
Mini2440 manual part1
vineyugave
 
Ad

TI702_Android_MID

  • 1. Android 行動上網裝置 應用 - 多媒體影音串流播放器 班級: TI702 成員: 98971036 林聖哲     98971037 陳晁偉     98971042 連力航     98971046 郭君彥     98971053 王裕鈞     98971057 江慶峰 財團法人資訊工業策進會 半導體學院 - 嵌入式系統程式設計班
  • 2. 總覽 (1)- 序 背景研究 MID 、市場定位、 ARM 、 android 動機與目標 功能描述 Linux kernel +Android fs-> 多媒體 AP 開發 -> 影音串流伺服器 系統軟體架構 Android 架構
  • 3. 總覽 (2)- 研究內容 伺服器與應用程式開發 VLC 影音串流伺服器 Android 應用程式開發 遭遇問題與研究 Porting 與整合修改 Diff kernel 驅動移植 文件修改 問題與解決
  • 4. 總覽 (3)-porting- 成果與展望 ARM9 (Mini 2440)+android work Kernel 基本驅動 ( 顯示、音效、 RTC 、 touch) ok 周邊驅動 (USB 、 SD 卡、 DM9000) ok Android FileSystem 使用別人修改好的 遺憾 因 Android 官方版本只支援 arm v5 以上版本, 我們所使用的開發板是 arm v4 ,無法全部自已修改 心得與期望 希望更多時間與機會深入 Android 的 FS 想嘗試 porting 在不同平台上 ( 成本考量我們使用的開發板跑不太動 android 系統 )
  • 5. 總覽 (4)-AP- 成果與展望 Android 多媒體播放器 可播放影片 ok 可透過 HTTP 協定播放串流影音 ok 影音串流播放 自行轉檔做出 Android 可串流播放的影片 ok 透過 VLC 串流伺服器播放 遺憾 VLC 串流伺服器無法在連線進入時,優先 送出 moov atom 封包,使應用程式端播放 器無法播放串流影音 心得與期望 加強播放器的 UI 讓使用者可從儲存裝置中選擇要播放的影片檔,或者輸入網址播放串流影音 研究 VLC 的程式碼,解決 VLC 串流伺服器的問題 期望進一步能做到使用 MID+Android 做到安全監控系統
  • 7. 行動上網裝置 (MID) 英特爾發展平台 Menlow Moorestown 發展歷史 2009 02/16 - 英特爾宣布擴大 MID 與 LG 合作 06/23 - 英特爾宣佈與 Nokia 結盟
  • 8. 市場定位 非小筆電、智慧型手機 強調口袋規格 市場表現 Forward Concepts 估計行動網路裝置的出貨量將自 2008 年 30.5 萬台成長到 2012 年的 4000 萬台,達到 120 億美元的營收規模。 ④
  • 9. ARM 架構的行動裝置 ABI Research 預測: 行動裝置 ARM 架構將勝出 ⑤ ARM 執行長: 還有勝算! 行動運算市場 … ⑦
  • 10. Android 熱潮 由開發者社群所帶來的概念 強力推手 Google Android + ARM 组合在 Computex 2009 上大放異彩 不可限量
  • 11. 動機與目標 上網不受侷限 攜帶輕便 隨時上網 操作便利 Android 市場熱潮 行動裝置的優勢 客制化
  • 12. 功能描述 Android 軟硬體整合 應用程式開發 前端 - Android 多媒體影音播放器 ( 支援影音串流 ) 後端 - 伺服器 影音串流伺服器
  • 13. 系統硬體架構 Internet Android 行動上網裝置 影音串流伺服器 x86 PC FriendlyARM Mini2440 ARM9 S3C2400
  • 14. 伺服器軟體套件需求 OS: Ubuntu 9.04 VLC Media Player and Server (Open-Source and Cross-Platform)
  • 17. 為何使用影音串流伺服器 應用程式端的環境有限制 支援較少的影音編碼 硬體效能不高 影音串流伺服器 轉換各種編碼至特定的編碼輸出 壓縮影像品質使播放影片的效能需求降低
  • 18. Android 支援的影音編碼 Video Coder H.263 、 H.264 、 MPEG-4 Audio Coder AAC 、 MP3 、 MIDI 、 Ogg 、 WAV 、 AMR 影音串流編碼選擇 H.264 with AAC
  • 26.  
  • 28. 開發環境 Android 1.5 SDK Release 3 Development tools Android Platforms Emulator Eclipse with ADT Plugin Software Development IDE Android Development Tools Plugin
  • 29. Android Resource Android Developers http://developer.android.com/ Tutorial Documents API Package & Class Reference SDK include API Demos
  • 33.  
  • 36. OK
  • 43. 問題還沒解決 可 可 Youtube 下載的影像檔 不行 可 自己轉檔的 影像檔 透過 HTTP 串流播放 檔案方式直接播放
  • 44. moov atom Android Media Framework moov atom is needed for HTTP progressive streaming Solution the moov atom has been placed after mdat atom at the end of the file. moves the moov atom to the begin of the file so it can be played out as soon as it buffered enough data.
  • 45. 轉出 Android 可串流播放的影片 OS: Ubuntu 9.04 Tools ffmpeg (media converter) libx264 (h264 codec library) libfaac0 (aac codec library) MP4Box (mp4 container multiplexer, include in gpac package)
  • 46. 先轉成 Android 支援的編碼和格式 ffmpeg -i ../TS4.flv -s 128x96 -aspect 1.2222 -vcodec libx264 -b 64k -bt 64k -r 12 -acodec libfaac -ac 1 -ar 44100 -ab 128k -y TS4.mp4
  • 47. 處理 moov atom strings TS4.mp4 | grep -n &quot;mdat\|moov“ 4:?a+mdat 47781:moov 將 moov atom 移到 mdat atom 前面 MP4Box -hint TS4.mp4 strings TS4.mp4 | grep -n &quot;mdat\|moov&quot; 3:moov 116:Dhumdat
  • 48. 未解決的部份 影音串流伺服器 如何讓 Android 播放器連接上伺服器時,伺服器必須優先送出帶有 moov atom 資料的封包
  • 50. porting 比對 kernel 差異 版本 :2.6.27 工具 :winMerge 整合修改 問題與解決
  • 51. Kernel + Google download Linux kernel -android Drivers/android/ Hardware dependent Mini2440 patch Get platform patch Android+mini2440 Linux kernel Mini2440 Linux kernel www.kernel.org Linux kernel diff
  • 52. diff
  • 53.  
  • 54. 驅動移植 LCD 驅動移植 RTC 驅動移植 網卡 DM9000 驅動移植 Touch 驅動移植 USB Host 驅動移植 SD 卡驅動移植 Uda1341 驅動移植
  • 55. 整合修改 修改文件 kernel.git/arch/arm/mach-s3c2440/mach-s3c2440.c 修改背光 附錄 A 修改時鐘 附錄 B 修改顯示 附錄 C smdk2440_lcd_cfg_initdata 設置 (NEC3.5 英寸, 320x240)
  • 56. 遇到的問題 LCD 的問題 成功移植 kernel 且正常開機,執行 android 看不到 LCD 畫面 解決 : Double Framebuffer 的關係 Touch 的不精準 Touch driver 在新版與舊版 linux kernel 之間有很大差異 解決 : 捨棄一開始的目標版本 kernel 2.6.25+fs 1.0 改用 kernel 2.6.27+fs 1.5
  • 57. 附錄 A 修改背光 修改文件 kernel.git/arch/arm/mach-s3c2440/mach-s3c2440.c (這裡的修改方式為較簡單正規方式是增加一個管理背光的驅動。) static void __init smdk2440_machine_init(void) { s3c24xx_fb_set_platdata(&smdk2440_fb_info); platform_add_devices(); s3c2410_gpio_cfgpin(S3C2410_GPG4,S3C2410_GPG4_OUTP); // 添加 s3c2410_gpio_setpin(S3C2410_GPG4,1); // 添加 smdk_machine_init(); }
  • 58. 附錄 B 修改時鐘 修改文件 kernel.git/arch/arm/mach-s3c2440/mach-s3c2440.c static void __init smdk2440_map_io(void) { 。。。。。。 s3c24xx_init_clocks(12000000); // 修改,原來是 s3c24xx_init_clocks(16934400); 。。。。。。 }
  • 59. 附錄 C(1) 修改顯示 修改文件 kernel.git/arch/arm/mach-s3c2440/mach-s3c2440.c static struct s3c2410fb_display smdk2440_lcd_cfg __initdata ={ 。。。。。。 .pixclock = 100000, // 修改 ,原來為 166667 。。。。。。 .right_margin = 37, // 修改 ,原來為 8 .hsync_len = 6, // 修改 ,原來為 4 .upper_margin =2, // 修改 ,原來為 8 .lower_margin = 6, // 修改 ,原來為 7 .vsync_len =2, // 修改 ,原來為 4 }
  • 60. 附錄 C(2) static struct s3c2410fb_mach_info smdk2440_fb_info __initdata ={ 。。。。。。 .default_display =0 //add start .gpccon = 0xaa955699, .gpccon_mask = 0xffc003cc, .gpcup = 0x0000ffff, .gpcup_mask = 0xffffffff, .gpdcon = 0xaa95aaa1, .gpdcon_mask = 0xffc0fff0, .gpdup = 0x0000faff, .gpdup_mask = 0xffffffff, // add end .lpcsel = 0xf82, // 修改 ,原来为 ((0xCE6) &~7) | 1<<4, };