结论
结论
嵌入式音视频数据采集的设计,通过linux C编程实现了从硬件麦克风和摄
像头采集音视频数据,保存为特定格式的文件,并能够通过扬声器将录音文件播放,电容屏播放录像文件。通过点击电容屏上相应功能的按钮,完成相应的功能,实现嵌入式音视频数据采集的设计功能。
这次设计的突出之处是对切换播放录音、播放录像的处理,切换播放录音、
录像不会发生与切换之前的录音、录像混播的现象,并且播放录音、录像时点击返回、删除录像,不会出现任何的卡顿现象。
由于知识和时间的有限,这次对录像,播放录像的处理没有涉及到编解码的
相关应用,所以在播放录像的格式目前只支持通过本设备的录制的录像文件,录音的播放目前也只支持播放wav格式的文件。
这次设计只是简单实现了音视频数据的采集功能,在后续的完善中会对录像
加入视频编解码相关的应用,并支持多种格式视频音频文件的播放。同时会加入显示制定文件夹音乐文件,播放音乐等相应的功能。
33
致谢
致谢
34
参考文件
参考文献
[1] 刘刚, linux系统移植.北京.清华大学出版社
[2] 孙琼, 嵌入式LinuxC语言应用程序设计(修订版) .北京.人民邮电出版社 2014 [3] 杨斌, 嵌入式系统应用开发基础 西安 电子工业出版社 2011.08
[4] 陈赜, ARM嵌入式技术原理与应用 北京 北京航空航天大学出版社 2011-01-01 [5] 弓雷, ARM嵌入式Linux系统开发详解 北京 清华大学出版社 2014-02-01 [6] 黎胜容, ARM嵌入式项目开发三位一体实战精讲 北京 北京航空航天大学 出版社 2011-10-01
[7] 哈利南, 嵌入式Linux基础教程(第2版) 北京 人民邮电出版社 2012-05-01 [8] 李朱峰, Linux2.6嵌入式系统开发与实践 北京 北京航空航天大学出版社 2010-05-01
[9] 文全刚, 嵌入式Linux操作系统原理与应用 北京 北京航空航天大学出版社 2011-03-01
[10] 韦东山, 嵌入式Linux应用开发完全手册 北京 人民邮电出版社 2008-08-01 [11] 怯肇乾, 嵌入式图形系统设计 北京 北京航空航天大学出版社 2009-03-01 [12] 郑灵翔, 嵌入式接口技术与Linux驱动开发 北京 北京航空航天大学出版社
2010-04-01
[13] 闫广明, 嵌入式Linux 北京 清华大学出版社 2012-02-01 [14] 杨胜利//刘洪涛, ARM嵌入式体系结构与接口技术 北京 人民邮电出版社
2013-09-01
[15] APress , Andrew Krause Foundations of GTK+ Development 2007 4 1 [16] 蔡建平, 软件综合开发案例教程 北京 清华大学出版社 2011/02 [17] Karim Yaghmour,JonMasters,Gilad Ben-Yossef,Philippe Gerum Building
Embedded Linux Systems O'Reilly Media, Inc, USA;2nd Revised edition 2008年8月1日
[18] Brian W.Kernighan,Dennis M.Ritchie The C Programming Language
Prentice Hall PTR 2004-1
[19] 邓有训.空军雷达学院学报[J].武汉:空军雷达学院出版社,2000:52.
35
附录
附录
设计主程序初始化各功能界面
#include
#include \#include \#include\#include\#include\#include\Window window;
int main(int argc, char *argv[]) {
if( FALSE == g_thread_supported() ){ // 如果线程没有初始化 g_thread_init(NULL); gdk_threads_init(); }
gtk_init(&argc,&argv);
design_main_window(&window);//主窗口
design_video_window(&window);//拍照和录像窗口 design_play_camera_window(&window);//视频播放窗口 design_wav_window(&window);//录音窗口
design_play_wav_window(&window);//播放录音窗口 design_picture_window(&window); //照片播放窗口 gtk_widget_show_all(window.main_win.main_window); gdk_threads_enter();
gtk_main(); // 主事件循环 gdk_threads_leave(); return 0; }
主窗口程序选择录音 录像
#include
附录
#include
#include \#include \
#include\#include\
/******************************************************************* * 功能: 主窗口显示可以选择录像、录音 * 参数:窗口结构体指针 * 返回值: 无
*******************************************************************/ void design_main_window(Window *window) { window->gxml= glade_xml_new(MAIN_WINDOW, NULL, NULL);//打开glade
window->main_win.main_window=glade_xml_get_widget(window->gxml,\ain_window\获取glade定义的控件
sungtk_background_set_picture(window->main_win.main_window,\age/back.jpg\
gtk_widget_set_app_paintable(window->main_win.main_window, TRUE);
window->main_win.video_button=glade_xml_get_widget(window->gxml,\video_button\获取glade定义的控件
sungtk_button_inset_image(window->main_win.video_button,\/video.png\
window->main_win.wav_button=glade_xml_get_widget(window->gxml,\v_button\获取glade定义的控件
sungtk_button_inset_image(window->main_win.wav_button,\av.png\
window->main_win.exit_button=glade_xml_get_widget(window->gxml,\xit_button\获取glade定义的控件
sungtk_button_inset_image(window->main_win.exit_button,\exit.png\
window->main_win.time_lable=glade_xml_get_widget(window->gxml,\me_lable\获取glade定义的控件 signal_connect_button(window); pthread_t t_tid;
pthread_create(&t_tid,NULL,show_main_win_time,(void *)window);