毕业论文liunx下的网络同步视频播放器的设计与研究_第1页
毕业论文liunx下的网络同步视频播放器的设计与研究_第2页
毕业论文liunx下的网络同步视频播放器的设计与研究_第3页
毕业论文liunx下的网络同步视频播放器的设计与研究_第4页
毕业论文liunx下的网络同步视频播放器的设计与研究_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河南大学物理与电子学院本科毕业论文编号:河南大学2015届本科毕业论文Linux下的网络同步视频播放器的设计与研究论文作者姓名: 作 者 学 号: 所 在 学 院: 物理与电子学院 所 学 专 业: 测控技术与仪器 导师姓名职称: 耿涛 副教授 论文完成时间: 2015年5月 1日 目 录摘 要:10 前言21 硬件平台支持31.1简介31.2硬件资源32 系统开发环境搭建42.1主机开发环境搭建42.2 arm-linux-gcc交叉编译环境搭建52.3 uboot移植52.4 linux内核编译72.5根文件系统建立92.6 Mplayer移植93 网络同步功能的实现123.1网络驱动分析123.2网络编程134 视频播放器界面设计134.1 UI界面设计145核心代码155.1服务器155.2客户端166 结论17参考文献18 河南大学物理与电子学院本科毕业论文Linux下的网络同步视频播放器的设计与研究贾永伟(河南大学物理与电子学院,河南 开封,475004)摘 要:网络同步视频播放器基于Linux操作系统(RedHat)、ARM9(S3C2440)的设计,播放器可实现一般的播放操作功能之外,播放器还可以作为客户端能够与PC端通过TPC/IP建立网络连接,检测服务器端的视频文件是否删除,新增等,可实现本地文件与服务器的同步更新功能。Linux是由赫尔辛基大学的 Linus Torvalds 开发的,可以自由传播和免费使用的类unix的操作系统。它是免费软件,可以免费使用它全部的源代码,linux经过裁剪可以作为嵌入式操作系统,方便开发者进行基于linux的嵌入式软件开发。S3C2440是基于ARM公司设计的16/32位ARM920T核心的RISC处理器。S3C2440芯片低功耗、高性能,非常适合用于嵌入式开发。关键词: 视频播放器;TPC/IP;网络同步;嵌入式Linux;ARM9 Design and Research of Network-sync Video Player based on the Embedded Linux Jia Yong-wei(School of Physics and Electronics, Henan University, Henan Kaifeng 475004, China)Abstract: The network-sync video player is based on the linux operating system ( RedHat) , ARM9 (S3C2440) ,the player not only can realize the generalplay function,but also it can connect to the PC through the TCP/IP as a client to check it that the files under the PC is deleted or not. It can delete or download the files synchronously.Linux is developed by Helsinki Linus Torvalds,it can spread freedom and we can use the Unix operating system for free. It is free to use the source code, it can be used as an embedded Linux operating system,and it is also convenient for embedded software development based on Linux developers. S3C2440 is based on the 16/32 bit RISC of ARM920T core. S3C2440 chip, high performance, low power consumption ,it is very suitable for embedded development. Key words: Video Player; TPC/IP; Network-Synchronization; Embedded Linux; ARM9 0 前言随着计算机技术、网络技术和软件技术的飞速发展,嵌入式技术是当下热门的领域。所谓嵌入式是指以应用为中心,以计算机技术为基础,软件、硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式技术已经被广泛的应用于科学研究、工程设计、军事领域和文艺商业的方方面面,嵌入式产品更是随处可见,比如消费电子产品、车载电子、智能家居等。如今人们随着生活水平的提高,对视听享受方面的要求也越来越高,人们不单仅仅满足于在电脑上或电视上欣赏高品质的音视频,也渴望能够随时随地的欣赏音乐观看电影,所以基于嵌入式技术的便携式多媒体播放器也成为了现今研究的热点之一。面对广阔的市场需求,海内外的各大厂商也在积极研发自己的产品以抢占市场。嵌入式开发常用的操作系统Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。嵌入式微处理器的体系结构可以采用冯诺依曼体系或哈佛体系结构;指令系统可 以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令系统CISC(Complex Instruction Set Computer,CISC)。RISC计算机在通道中只包含最有用的指令,确保数据通道快速执行每一条指令,从而提高了执行效率并使CPU硬件结构设计 变得更为简单。嵌入式linux系统下多选择使用ARM处理器,ARM处理器具有体积小、功耗低、低成本、高性能等优点,并且支持Linux系统。所以可以选用ARM处理器配合Linux进行产品的设计,这样可以充分的利用Linux开源的特性,根据需要修改和移植一些免费的开源软件,这样不仅能降低产品研发的难度,还能大大地缩短研发周期,节约成本。本文就是基于ARM9-Linux嵌入式软件开发的网络同步视频播放器。文章首先将对硬件(ARM9开发板)和系统(linux)两部分做一个介绍,然后讲解嵌入式linux在ARM9上的移植过程,具体包括uboot的移植、根文件系统的建立、交叉编译器的环境搭建、裁剪linux内核、编译linux内核源码。视频播放功能的实现基于mplayer的移植到开发板上,通过mplayer进行解码视频文件。文章最后对视频播放器的网络同步功能进行详细说明。1 硬件平台支持1.1简介本设计的硬件平台是由友善之臂公司设计的mini2440开发板,主控芯片采用由三星公司的设计的S3C2440开发板如图1.1所示。图1.1S3C2440开发板1.2硬件资源(1)S3C2440芯片架构S3C2440基于ARM920T核心,0.13m的CMOS标准宏单元和存储器单元。它采用了新的总线架构如先进微控制总线构架(AMBA)。S3C2440 的突出特点是其处理器核心,是一个由Advanced RISC Machines(ARM)公司设计的16/32位ARM920T的RISC处理器。ARM920T实现了MMU,AMBA总线和哈佛结构高速缓冲体系结构。S3C2440芯片框架如图1.2所示。图1.2 S3C2440芯片结构框架(2)S3C2440片上功能 外部存储控制器(SDRAM控制和片选逻辑) LCD控制器(可支持4K色STN和256K色TFT) 4通道DMA并有外部请求引脚 3通道UART、2通道SPI、1通道IIC、1通道IIS 支持SD 1.0接口协议 2通道USB主机/1通道USB设备 4 通道PWM定时器和1通道内部定时器/看门狗定时器 8通道10位ADC和触摸屏接口 具有日历功能的RTC 摄像头接口(可支持40964096像素输入;20482048像素输入) 具有普通,慢速,空闲和掉电模式 具有PLL片上时钟发生器(3)S3C2440芯片特性20 24个外部中断端口130个复用输入/输出端口 8通道多路复用10位ADC 最高500KSPS和10位分辨率 4通道DMA控制器 支持多种屏幕尺寸 中断请求或系统复位超时 16位看门狗定时器 支持IIS串行8/16位AC97音频编解码器16位采样SD有正常、中断、DMA模式2 系统开发环境搭建2.1主机开发环境搭建(1)虚拟机VMware简介本次设计的网络同步视频播放器是基于arm9 处理器与linux系统下进行的开发。所以首先需要搭建linux系统,由于一个主机无法满足设计需求,需要虚拟机虚拟linux开发环境。VMware workstation是VMware公司设计的专业虚拟机,它可以允许用户虚拟多个现有的x86操作系统,可以实现不需要重新开机就可以在同一电脑上使用Windows和linux系统,方便开发,缩短开发周期。(2)linux系统的安装在Windows下安装VMware软件,打开软件,看到如图2.1所示的界面。图2.1 VMware软件主界面选择新建虚拟机,下一步选择自定义安装,选择要虚拟的系统为linux操作系统,给建立的虚拟机分配内存大小,以及网络模式设置。接着为虚拟机创建一块硬盘,适当分配硬盘的容量大小。根据实际需要修改内存、硬盘的大小。为了让虚拟机linux和主机windows以及其他的虚拟机进行通讯,将网络类型选择为桥接模式,设置虚拟机linux系统和主机Windows操作系统在相同的网段,这样两者之间才能进行通讯。2.2 arm-linux-gcc交叉编译环境搭建交叉编译是指,在一个主机上使用交叉编译器编译出可移植在其他平台上运行的代码的过程。本次设计,就是在linux系统下开发arm程序,需要用到arm-linux-gcc交叉编译器进行编译。Windows下的keil软件 是一个集成开发环境,有编辑器、工程管理器、良好的用户交互界面。Linux系统下开发arm开发板的程序,系统并没有提供集成开发环境的相关软件,使用的编辑器是vim/gedit,工程管理器是GNUmake/Makefile,用户交互界面就是终端的命令行,编辑器就是使用要要搭建的arm-linux-gcc编译器。2.3 uboot移植(1)bootloader简介简单地说,bootloader就是在操作系统内核运行之前运行的一小段程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。系统启动流程如图2.2所示。 图2.2操作系统系统启动流程(2)uboot特点及源码组成分析U-Boot项目的开发目标:即支持尽可能多的嵌入式处理器和嵌入式操作系统。Uboot是开放的源码,自由下载使用,支持多种嵌入式操作系统内核,如Linux VxWorks,支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale,它具有较高的可靠性和稳定性,高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等。Uboot提供丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、EEPROM、RTC等。提供较为丰富的开发调试文档与强大的网络技术支持。解压后得到如表2.1所示的文件夹。表2.1 Uboot源码文件目录board存放开发板相关的源码文件 board/mini2440common工程中公用的源码文件 包含u-boot的命令的实现代码cpu各种控制芯片的源码文件 cpu/arm920tdriver各种外设的驱动程序源码fsfile system u-boot支持的各种文件系统源码include整个源码工程的头文件lib_armARM架构的芯片公用的库函数源码lib_genericu-boot工程公用的库函数源码netuboot工程网络协议的实现源码boardARM架构的芯片公用的库函数源码commonu-boot工程公用的库函数源码cpuuboot工程网络协议的实现源码u-boot工程使用Makefile文件来管理工程的编译方式,每个Makefile负责它所在的目录下源码文件的编译规则。由顶层目录下的Makefile文件逐层的调用各个目标目录里的Makefile文件来编译需要的源码并生成相应的静态库文件,并最终由顶层Makefile链接所有的静态库文件生成u-boot.bin。大多数bootloader的启动流程都分为stage1和stage2两部分。stage1阶段,运行依赖于CPU体系架构的代码,这部分主要完成cpu从上电后的初始化过程,使用汇编语言编写,在对于u-boot工程是/cpu/xxxx/start.S,设计用的mini2440开发板板就对应cpu/arm920t/start.S文件夹下。stage1阶段分析,首先进入管理模式。当启动内核时,CPU必须运行在管理模式,此模式,操作硬件不会受到限制。然后关闭看门狗,屏蔽所有的中断。Uboot中会对时钟进行配置。接下来,清理缓存,初始化存储控制器,往内存搬运代码,设置堆栈,清空BSS,跳到uboot的阶段2代码出执行。Stage2阶段,也即是uboot启动C语言代码阶段。该阶段主要进行调用一系列的初始化函数,初始化系统内存分配,初始化NANDFLASH设备,初始化相关网络设备等操作。至此,uboot源码分析完毕。(3)uboot移植过程分析由于uboot工程源码不提供对mini2440开发板的支持,无法直接使用编译uboot源码。但是uboot源码支持smdk2410开发板,s3c2410这款芯片与开发使用的s3c2440芯片同属三星公司生产的一个系列,所以在smdk2410的基础上进行mini2440的uboot移植工作。主要移植过程如下:a.复制smdk2410板级配置目录为mini2440b.修改makefile,仿照smdk2410,添加关于mini2440的工程配置c.根据smdk2410创建mini2440的工程配置头文件d.修改时钟配置(mini2440的时钟与smdk2410的不同)f.修改cs9000网卡(smdk2410)为dm9000网卡(mini2440)g.添加nandflash命令,支持nandflash操作2.4 linux内核编译(1)内核源码的构成Linux内核源码是开源的,在官网上可以下载到。Linux源码的V2.6版本稳定性最好,本次设计就是下载的V2.6版本的linux-源码包。Linux系统就是使用了linux内核源码,并在此基础上开发了图形用户界面的一套系统。发行版本主要有:Redhat、Fedora、Unbuntu、Openwrt等。设计用到的Redhat,主要考虑到它性能稳定的优点。解压缩包后,得到表2.2所示的文件夹。表2.2 Linux内核源码文件目录arch 架构 arch/arm/mach-s3c2440/mach-s3c2440.cdrivers 驱动 drivers/各种外设 后期用不到的裁剪firmware 固件 类似:windows下的BIOS,固化在芯片上。fs Linux的文件系统include 所有的头文件init 初始化相关的文件ipc 进程间通信机制kernel 内核中断、电源管理、定时器、时钟、mm 内核的内存管理,提供的vmalloc函数等等net 支持的各种网络协议(2)内核菜单配置及源码编译在内核源码的顶层目录下,执行“make menuconfig”命令,开始配置内核菜单,此时会弹出如图2.3所示的窗口。上下键选中Device Drivers菜单,如图2.4所示。图2.3配置窗口图2.4配置设备驱动菜单当配置好内核菜单后,要对内核进行编译,在内核源码顶层目录下执行“make”命令来编译内核源码,编译后会产生一个linux内核镜像,内核镜像保存在arch/arm/boot/zImage路径下,镜像的大小在2.5M左右。但是移植成功的Uboot要引导的内核是uImage,不是zImage。则需要在内核源码顶层目录下执行“make uImage”命令和“cp mkimage /usr/sbin”命令,得到内核镜像uImage。然后把内核镜像拷贝到tftp网络服务相应的tftpboot目录下。2.5根文件系统建立(1) 根文件系统简介根文件系统是内核运行起来后挂接的第一个文件系统,它用来提供linux系统使用的命令、内核初始化进程需要的配置的文件、库函数文件和目录等。Linux根目录下,必不可少的目录bin、sbin、dev、lib、usr、etc、tmp、sys、proc等这些目录。(2) 制作开发板的根文件系统产品的开发阶段,一般通过nfs(网络文件系统)访问根文件系统。当产品发布时,根文件系统通常存放在nandflash中。本次设计是采用用过nfs访问的,需要用到串口线、网线与PC通讯。首先在Redhat5的/opt/s3c2440/root_nfs 目录下创建开发板的根文件系统,创建目录bin、sbin、usr/bin、usr/sbin等。/bin目录下是x86架构下编译产生的可执行文件,我们创建的根文件系统是用在开发板上的,S3C2440是arm结构的,所以不能简单的复制相应的linux目录下的文件。下面介绍设计中创建根文件系统用到的busybox工具。Busybox是开源社区的一个项目,针对嵌入式linux开发板的根文件系统建立设计的,源码开放,解压缩包后得到如图2.5所示的文件。图2.5 Busybox源码文件目录第一阶段,首先打开顶层目录下的Makefile文件,通过修改第190 行“ARCH ?= $(SUBARCH)”修改为“ARCH ?= ARM”,确定要建立的根文件系统的架构为ARM。修改第164 行“CROSS_COMPILE ?=”修改为“CROSS_COMPILE ?= arm-linux-”,确定使用的交叉编译器。然后通过配置busybox的相关操作,编译执行busybox,完成后会在/opt/s3c2440/root_nfs/下得到以下文件bin,sbin,usr,linuxrc 4个文件(夹)。第二阶段,在开发板根文件系统中创建其他linux系统必不可少的文件夹。然后复制linux下的库文件,通过交叉编译器完成linux下的库到开发板根文件系统下的复制。2.6 Mplayer移植Mplayer播放器具备音视频解码、同步、播放等功能,是目前嵌入式linux下主流的多媒体的播放工具。Mplayer同样是开源软件,在mplayer的官网提供其全部的源代码供用户自由下载。Mplayer相比较其他播放器,具有很大的优势,主要体现在mplayer提供丰富的解码器,因此不仅可以支持目前主流的音频和视频格式的解码和播放处理,对其他格式也有很好的支持,比如VCD、DVD等。而且mplayer在工作过程占用资源少,对硬件要求不高,低频的CPU移植mplayer后也可以顺畅运行。它使用方便,支持目前主流的音频和视频格式的解码和播放处理,mplayer对x86架构的系统提供很好的支持,本次设计主要将其移植在arm开发板上的linux下播放视频文件。(1)移植mplayer之前的准备工作arm系列的cpu,一般都没浮点运算单元,而mplayer的mp3解码默认使用mp3lib,这个是浮点运算库,在arm上肯定跑不了,使用ffmp3或者libmad(需要外部库libmad支持)就没问题了。 Mplayer虽然提供对MP3音频的解码器,但是由于要移植的是arm结构的开发板,无法使用自身带的解码器,所以需要下载libmad,提供对音频的支持。我使用的libmad是在官网下载的libmad-0.15.1b版本,解压缩编译之后可以在ARM板上使用。首先进行编译libmad工作。在终端下,进入libmad的目录下对参数进行设置,指定交叉编译器为arm-linux-gcc以及安装路径。安装步骤如下:a.配置libmad:./configure-enable-fpm=arm -host=arm-linux -disable-shared -disable-debugging -prefix=/opt/s3c2440/video/MPlayer-1.0rc2CC=arm-linux-gccb.执行make命令cc1: error: unrecognized command line option -fforce-memmake2: * version.lo 错误 1make2: Leaving directory /media/libmad-0.15.1bmake1: * all-recursive 错误 1make1: Leaving directory make: * all 错误 2运行后会出现以上的错误,解决办法是需要修改Makefile文件,执行“vim Makefile”,修改去掉第129行-fforce-mem字符串,因为arm-eabi编译器都不支持这个选项,将其删除之后,就可以了。c.再次执行make命令d.执行make install命令 参数分析:-enable-fpm=arm(开发板架构)-host=armlinux(arm-linux交叉编译)-disable-shared -disable-debugging -prefix=/opt/s3c2440/video/MPlayer-1.0rc2 (安装路径)CC=arm-linux-gcc(交叉编译工具链)libmad安装完成后,切换到/opt/s3c2440/video/MPlayer-1.0rc2路径下,include目录下有头文件 mad.h,lib目录有文件 libmad.a libmad.la,mplayer运行时需要调用这些库文件进行音频的解码。(2)mplayer的编译和移植工作a.配置mplayer,执行如图2.6所示的命令 图2.6 mplayer配置命令参数分析如表2.3所示:表2.3配置mplayer的参数表-prefix mplayer安装路径-cc 交叉编译工具 -enable-static 设定静态连接 -disable-win32dll禁用win32动态链接库支持-disable-dvdread禁用libdvdread-enable-fbdev 支持fbdev-disable-mp3lib、-enable-mad禁止掉mencoder和使能libmad。 -disable-mencoder 禁止编码功能-disable-live 禁止live 555流媒体-enable-libavcodec_a启用静态的libavcodec解码-disable-armv5te 和-disable-armv6禁用armv5te、armv6指令扩展-with-extraincdir和-with-extralibdir指定libmad和mad.h的路径b.执行make命令,出现如下错误:-c -o armv4l/dsputil_arm_s.o armv4l/dsputil_arm_s.Sarmv4l/dsputil_arm_s.S: Assembler messages:armv4l/dsputil_arm_s.S:79: Error: selected processor does not support pld r1armv4l/dsputil_arm_s.S:90: Error: selected processor does not support pld r1armv4l/dsputil_arm_s.S:100: Error: selected processor does not support pld r1解决方法:打开libavcodec/armv4l/dsputil_arm_s.S文件,在文件开头出添加以下代码,这段代码意思是定义一个空的ARM汇编宏 pld,这样当代码出现pld指令,就变成一条空指令,忽略pld指令的执行。#ifndef HAVE_PLD.macro pld reg.endm#endifc.执行“make”命令和“make install”命令e.移植到开发板上,进入/opt/s3c2440/video/MPlayer-1.0rc2/mplayer路径下,切换到bin目录下,可以看到一个mplayer的文件夹,将bin目录下的mplayer拷贝到开发板根文件系统的bin目录下,完成移植。重新启动开发板,引导内核,挂接根文件系统,然后执行“mplayer /视频的路径 -framedrop -quiet -ac mad -zoom -x 240 -y 320 -cache 4096”命令,就可看到开发板上显示的视频图像和视频声音了。3 网络同步功能的实现3.1网络驱动分析视频播放器可实现一般的播放操作功能之外,播放器还具有网络同步功能,可以作为客户端能够与PC端通过TPC/IP建立网络连接,检测服务器端的视频文件是否删除,新增等,可实现本地文件与服务器的同步更新功能。S3C2440开发板上挂接的网卡芯片是DM9000芯片,是单芯片快速以太网MAC控制器,DM900和缓存的材质一样的SRAM结构,比开发板上挂接的64M SDRAM速度快,16位宽的数据地址复用总线与ARM芯片相连接。DM9000接在BANK4上的地址范围是0x2000_0000 0x2800_0000。在DM9000内部SRAM中,地址0x00000x0bff是发送缓冲区, 地址0x0C000x3FFF是接收缓冲区r。在发送包之前,包中的有效数据必须先被存储到发送缓冲区中并且使用输出端口命令。包的长度定义在MWCMD寄存器的TXPLL和TXPLH中。最后设置TXCR寄存器的第0位来自动发送包。如果设置了IMR寄存器的PTM位,则DM9000会产生一个中断触发在ISR寄存器的第1位置1, 设置标志位,表示包已经发送完毕。3.2网络编程网络编程,就是套接字socket编程,使用TCP/IP网络通信协议,也即是在传输层使用TCP协议,网络层使用IP协议(IPv4IPv6),应用层使用搭建好的tftp网络服务,套接字流程如图3.1所示。图3.1套接字编程流程通过编写客户端和服务器的程序,测试开发板和linux系统建立连接的网络传输功能,测试成功后将程序添加到播放器代码中吗,使播放器上电后,通过网络检测与linux同步的文件夹下的视频文件的变动情况,如文件不存在,则在开发板的视频文件存放的目录中,下载相应的文件,如果视频文件超出服务器端,则删除这个文件,实现了开发板视频文件与服务器端同步。4 视频播放器界面设计本次设计,我使用的是友善之臂的S3C2440开发板,板子上带的触摸屏屏是W35,规格是320*240。友善之臂提供了LCD以及触摸屏的驱动代码,根据屏的规格修改驱动中的相应参数。关于显示屏的驱动部分就不过多介绍了,主要介绍设计的视频播放器的界面设计。Qt软件是奇趣科技在1991开发的一个跨平台的强大的C+图形用户界面程序框架。它提供给应用程序开发者建立图形用户界面丰富的资源。Qt很容易扩展,并且允许真正地组件编程。基本上,Qt和 Windows上的 MFC的类型相似。在实际的嵌入式产品开发中,应用越来越广泛。Qt开发界面如图4.1所示。图4.1 Qt软件界面4.1 UI界面设计本次设计的前期规划是使用Qt进行视频播放器的界面开发,Qt是基于C+语言进行开发,通过调用Qt提供的丰富的类库来实现播放器的窗口,实现上一首、下一首、暂停/播放、删除、显示播放进度条、播放时间长度和视频总时间长度等按钮。实际的嵌入式产品界面开发中,Qt占到很重要的位置,应用越来越广泛。由于本次设计对界面的要求不高,缩短周期,所以最后没有采用Qt进行开发,通过自己编写画图函数库,在LCD显示屏上显示上一首、下一首、暂停/播放、删除、等按钮和视频播放进度条。由于自己编写的绘图函数,会运行出现卡顿现象。通过MMU内存管理单元的代码编写,极大地提高了CPU的处理速度,视频播放界面显示较为理想。播放器界面如图4.2所示。图4.2播放器界面5核心代码5.1服务器/源文件tcp_my_server.cint main(void)int ret;char cmd_buffer8 = 0;/创建连接ret = create_connect(CONNECT_MAX_NUM);ERRP(-1 = ret, perror(create_connect), -1);trans_stream(ls filename.txt);/传送目录流: 函数内切换了工作目录while(1)ret = Wait_cmd_to_snd();if(ret = 1)trans_file();/发送文件continue;else if(ret = 0)continue;/没有收到信号,继续else break;close(new_fd); /结束通讯close(sock_fd);return 0;5.2客户端/源文件tcp_my_client.c/给main函数传递参数(argv 1 : 客户端目录 argv2:服务器目录)int main(int argc, char *argv)int ret,dirname_len, waiting;int node_num = 0;char ser_dir50 = 0, cli_dir50 = 0;strcpy(cli_dir, argv1);/保存传入的参数strcpy(ser_dir, argv2);ret = Connect_server();/建立与服务器的连接ERRP(-1 = ret, perror(connect), -1);strcat(cli_dir, filename.txt);/下载同步文件流Download_streams(argv2,cli_dir);fp_txt = fopen(cli_dir, r);/打开存放同步文件名的文件Ser_Head = Create_list(fp_txt); /创建服务器链表);BL_file_list(Ser_Head); /遍历链表: 服务器chdir(argv1); /切换到同步目录system(pwd);system(ls filename.txt);/导入本地文件流cli_fp = fopen(filename.txt, r);/打开本地文件流Cli_Head = Create_list(cli_fp);/创建客户端链表BL_serlist_in_clilist();/查看文件流中的文件在本地中是否存在,不存在下载BL_clilist_in_serlist();/查看本地文件在服务器端是否存在,不存在删除system(rm filename.txt;pwd;ls);/同步后再次查看同步结果fclose(fp_txt);/结束通信fclose(cli_fp);close(fd);close(sock_fd);return 0;6 结论嵌入式下的多媒体播放器由于能够满足人们的视听需求也逐渐成为了嵌入式产品中不可或缺的一部分,在嵌入式系统上开发多媒体播放器已经成为了一个技术热点。所以本次设计的基于嵌入式Linux的ARM9网络同步视频播放器具有深刻的意义和实用价值。我主要完成了一下工作:(1) 主要概述了嵌入式行业的发展趋势,视频播放器的发展状况以及mplayer音视频播放器的应用前景。还对本次设计的需求分析和相关的嵌入式技术进行了阐述。(2) 对硬件的核心部分S3C2440开发板的CPU架构和开发板上的硬件资源的简介。(3) 项目的主机开发环境Linux的搭建工作。从Linux内核编译,arm-linux-gcc交叉编译器的安装,bootloader的移植,嵌入式Linux在ARM9上的移植,到S3C2440开发板的根文件系统的建立等各项工作。(4) 实现了Mplayer的移植工作。选择mplayer作为播放器的应用程序,并且主要介绍了移植过程出现的问题及其解决方法,并详细说明了Mplayer播放器的工作原理及操作方法。(5) 还对网络同步功能的实现过程进行介绍,主要是开发板的网卡的驱动分析以及网络同步功能的编程实现。(6) 播放器的图形用户界面的开发过程以及播放器应用程序的设计以及底层代码的实现。这次设计的创新点在于使用的系统以及播放器源码都具有很好的移植性,方便开发,极大地降低了开发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论