第七季2:MP4v2库的移植与播放实战
以下内容源于朱有鹏课程,如有侵权,请告知删除。
本节主要内容:
(1)移植MP4V2库,该开源库实现了对视频流(如h264视频流)的打包与封装(如MP4格式)。
(2)部署和运行打包代码,测试打包生成的MP4文件。
一、下载与编译MP4v2库
1、下载地址:https://launchpad.net/ubuntu/+source/mp4v2/2.0.0~dfsg0-6
2、解压至~/hisisdk/mp4v2/ ,并在~/hisisdk/mp4v2/mp4v2-2.0.0/下创建_install目录作为安装目录
3、配置并编译
(1)在~/hisisdk/mp4v2/mp4v2-2.0.0/输入下面指令
sudo PATH=$PATH:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin CC=arm-hisiv300-linux-gcc CXX=arm-hisiv300-linux-gcc ./configure --host=arm-hisiv300-linux --prefix=/root/hisisdk/mp4v2/mp4v2-2.0.0/_install --disable-option-checking --disable-debug --disable-optimize --disable-fvisibility --disable-gch --disable-largefile --disable-util --disable-dependency-tracking --disable-libtool-lock
结果报错:
checking build system type... Invalid configuration ` --disable-option-checking': machine ` --disable-option' not recognized
configure: error: /bin/sh autoaux/config.sub --disable-option-checking failed
猜想上面指令复制时有问题。参考https://blog.csdn.net/qq_19175749/article/details/51521009,经查找上面指令中“/mp4v2-2.0.0/_install --disable”多了一个空格,这个影响参数所以不认识这个配置?不管咋说,去掉空格后,这步成功了。
(2)执行make之后再执行make install
执行make的时候出现错误:
/bin/sh ./libtool --tag=CXX --mode=compile arm-hisiv300-linux-gcc -DHAVE_CONFIG_H -I./include -I./include -I. -I. -Wall -Wformat -c -o src/3gp.lo src/3gp.cpp
libtool: compile: arm-hisiv300-linux-gcc -DHAVE_CONFIG_H -I./include -I./include -I. -I. -Wall -Wformat -c src/3gp.cpp -fPIC -DPIC -o src/.libs/3gp.o
./libtool: line 984: arm-hisiv300-linux-gcc: command not found
make: *** [src/3gp.lo] Error 1
百度查询有如下解决方法:切换到root然后再source /etc/profile之后执行上面操作,问题解决。其实这个问题在海思SDK环境搭建的时候也出现过,当时也是source /etc/profile解决的。明明环境变量已经导入而且写入~/.bashrc中,但因为没有执行source /etc/profile因此还是没有识别。
(3)检查是否安装成功,得到必要文件。
- bin(一些可执行的二进制文件)
- lib(.a静态链接库有关,编译与链接时使用;.so动态链接库有关的,链接与运行时使用)
- include(编译时使用)
二、部署(将相关文件移到合适位置叫部署)
(1)将生成的lib目录底下的所有文件加到mpp的lib里面
(2)将include下文件添加到mpp/include中去
(3)将lib/*so*加到开发板的/lib目录下
又报错说容量不足,只能删除一些文件了。
但后面课程中有挂载TF卡的操作,我可以先完成挂载TF卡,然后将一些文件拷贝到TF卡中去,腾出了SPIflash空间。因为/etc/profle是开机启动过后自动执行的内容,原来内容是进入到/ko目录执行脚本,那我可以在命令行中输入mount -t vfat /dev/mmcblk0p1 /usr/mmc进行挂载,将ko目录拷贝到/usr/mmc中,然后添加/etc/profle中的内容如下。这样就腾出了空间。
mount -t vfat /dev/mmcblk0p1 /usr/mmc cd /usr/mmc/ko
./load3518e -i -sensor ar0130 -osmem 32 -total 64 mount -t nfs -o nolock 192.168.1.141:/root/all_qianrushi/rootfs/hisrootfs /mntcd /mnt
也可以通过NFS方式将ko文件放回虚拟机,修改/etc/profle中的内容合适就可以。
另外也可以用strip工具缩小库文件大小。
三、编译sample
(1)用提供的sample_venc.c替换掉原来的sample_venc.c。
(2)执行make得到samp_venc可执行文件,将来在板载系统上执行。
四、准备TF卡
(1)TF卡格式化为FAT32文件系统,若失败可试试低层格式化软件如SDFormat之类
(2)开机后将TF卡进行挂载:mount -t vfat /dev/mmcblk0p1 /usr/mmc
(3)先检测下TF卡可用
himci: card connected!
himci: mmc1: valid phase shift [1, 7] Final Phase 4
mmc1: new ultra high speed SDR104 SDHC card at address aaaa
mmcblk0: mmc1:aaaa SC16G 14.8 GiB
mmcblk0: p1
/mnt # ls /dev/mmc*
/dev/mmcblk0 /dev/mmcblk0p1
/mnt #
/mnt #
/mnt #
五、运行和测试
(1)在板载系统上执行./sample_venc。
运行开始、最后的截图
/mnt # ./sample_venc
MPP Ver HI_VERSION=Hi3518EV200_MPP_V1.0.3.0 B040 Release
RTSP:-----Init Rtsp server
s32ChnNum = 1
=============SAMPLE_COMM_VI_SetMipiAttr enWDRMode: 0
linear mode
Aptina AR0130 sensor 720P30fps init success!
please press twice ENTER to exit this sample
s32ChnTotal =1
Write sps =================
Write pps -------------------
Write date type = 6 isSyncSample = 0
Write date type = 5 isSyncSample = 1
Write date type = 1 isSyncSample = 0
Write date type = 1 isSyncSample = 0
Write date type = 1 isSyncSample = 0
Write date type = 1 isSyncSample = 0
Write date type = 1 isSyncSample = 0
……………………
close mp4 file
(2)终止程序,取出TF卡用读卡器接电脑查看。
程序停在上图的位置。我按ctrl+c终止,最后在目录下找不到test.mp4文件!
由于跳过第六季的学习,对RTSP内容不了解,但好像也不影响这季内容学习吧。
我猜想错误原因可能在于
1、终止程序的方法有错。
2、tf卡的挂载目录权限没有设置。
3、缺乏部署内容。
4、写出的位置不对。
5、tf卡坏了。
目前仍未解决,看看分析源码时能不能发现问题。
第七季2:MP4v2库的移植与播放实战相关推荐
- Python可以这样学(第七季:pillow扩展库图像编程)-董付国-专题视频课程
Python可以这样学(第七季:pillow扩展库图像编程)-1738人已学习 课程介绍 董付国老师系列教材<Python程序设计(第2版)>(ISBN:978730243 ...
- 第三季1:ORTP库的移植与局域网视频传输
以下内容源于朱有鹏课程,如有侵权,请告知删除. 本季课程重点在于使用ORTP库来实现局域网视频实时传输. 一.ORTP的介绍 1.视频网络传输的两种方式 (1)基于下载 比如http(Hyper Te ...
- 神盾局hive是什么_《神盾局特工》第七季再爆幕后照,这位角色复古装又美出新高度...
今天,<神盾局特工>第七季也是最终季再爆出了幕后照,复古装扮的汪可盈真的美出了新高度 之前也曝光过一张剧照,大家都是复古造型的打扮,按照第六季的结尾,长生人们决定穿越时间到神盾局刚开始建立 ...
- CGIC库的移植及使用
CGIC库的移植 CGIC是一个支持CGI开发的开放源码的标准C库,可以免费使用,只需要在开发的站点和程序文档中有个公开声明即可,表明程序使用了CGIC库,用户也可以购买商业授权而无需公开声明. ...
- 360技术嘉年华第七季——测试之美 报名啦
当当当当!360技术嘉年华第七季,重磅来袭! 本次嘉年华聚焦测试技术,邀请360内外部众多测试专家,畅谈"测试之美"! 活动亮点 多位行业大咖齐聚 本次活动邀请测试领域多位资深测试 ...
- 【QT】linux下alsa库的移植和QT中音视频的处理笔记
一.音频的输入 linux下有一个开源的音频库----alsa库,实现了录音的功能,alsa库包含如下内容: alsa-lib-1.0.22.tar.bz2 ------- alsa的核心支持库 al ...
- 真爱如血第七季/全集True Blood迅雷下载
第七季 True Blood Season 7(2014)看点:由于日本科学家合成了一种人造血,一夜之间,吸血鬼不再是人们心中那富有传奇色彩的怪物,而是能与人类和平相处的朋友.已经播出五年的HBO吸血 ...
- 0705第七讲标准模版库
0705第七讲标准模版库 1.namespace:命名空间,解决相同作用域同名函数或变量问题 要求:使用时必须以'命名空间::成员名称'的格式 类型转换:强制类型转换(向下转换) 动态类型转换:dyn ...
- cocos2dx使用了第三方库照样移植android平台-解决iconv库的移植问题
好记性不如烂笔头 cocos2dx使用了第三方库照样移植android平台-解决iconv库的移植问题 http://www.zaojiahua.com/iconv.html
最新文章
- JavaScript新知:sessionStorage and localStorage
- 《网络安全协议》课程实验大纲
- 微信小游戏「跳一跳」技术手段高分秘籍实现
- (转)CSS书写规范、顺序
- C 语言 普通基本数据类型 以及 其储存形式
- Java:使用DOM4j来实现读写XML文件中的属性和元素
- 【渝粤教育】国家开放大学2018年秋季 1007t公司财务 参考试题
- java content()_Java contentEquals() 方法
- 使用showMessageDialog显示消息框
- 云小课 | 需求任务还未分解,该咋整!项目管理Scrum项目工作分解的心酸谁能知?
- IE6下透明PNG图片的显示
- HTML页面基本结构介绍
- 网站是备案域名还是服务器,网站备案是域名还是服务器
- 计算机网络批量确认,【02-计算机网络面试核心】01-tcp协议与三次握手/四次挥手...
- vue click 跳转外部链接
- 【中医学】10 针灸-1
- Giving an effective oral presentation at university(The Hong Kong Polytechnic University 香港理工大学)
- 数商云SCM系统供应商准入协同业务场景 | 助力建筑建材企业规范供应商准入环节
- go语言基础(四):继承、方法
- JavaScript学习(七)——对象与数组、内部对象(1)