以下内容源于朱有鹏课程,如有侵权,请告知删除。

本节主要内容:

(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库的移植与播放实战相关推荐

  1. Python可以这样学(第七季:pillow扩展库图像编程)-董付国-专题视频课程

    Python可以这样学(第七季:pillow扩展库图像编程)-1738人已学习 课程介绍         董付国老师系列教材<Python程序设计(第2版)>(ISBN:978730243 ...

  2. 第三季1:ORTP库的移植与局域网视频传输

    以下内容源于朱有鹏课程,如有侵权,请告知删除. 本季课程重点在于使用ORTP库来实现局域网视频实时传输. 一.ORTP的介绍 1.视频网络传输的两种方式 (1)基于下载 比如http(Hyper Te ...

  3. 神盾局hive是什么_《神盾局特工》第七季再爆幕后照,这位角色复古装又美出新高度...

    今天,<神盾局特工>第七季也是最终季再爆出了幕后照,复古装扮的汪可盈真的美出了新高度 之前也曝光过一张剧照,大家都是复古造型的打扮,按照第六季的结尾,长生人们决定穿越时间到神盾局刚开始建立 ...

  4. CGIC库的移植及使用

    CGIC库的移植    CGIC是一个支持CGI开发的开放源码的标准C库,可以免费使用,只需要在开发的站点和程序文档中有个公开声明即可,表明程序使用了CGIC库,用户也可以购买商业授权而无需公开声明. ...

  5. 360技术嘉年华第七季——测试之美 报名啦

    当当当当!360技术嘉年华第七季,重磅来袭! 本次嘉年华聚焦测试技术,邀请360内外部众多测试专家,畅谈"测试之美"! 活动亮点 多位行业大咖齐聚 本次活动邀请测试领域多位资深测试 ...

  6. 【QT】linux下alsa库的移植和QT中音视频的处理笔记

    一.音频的输入 linux下有一个开源的音频库----alsa库,实现了录音的功能,alsa库包含如下内容: alsa-lib-1.0.22.tar.bz2 ------- alsa的核心支持库 al ...

  7. 真爱如血第七季/全集True Blood迅雷下载

    第七季 True Blood Season 7(2014)看点:由于日本科学家合成了一种人造血,一夜之间,吸血鬼不再是人们心中那富有传奇色彩的怪物,而是能与人类和平相处的朋友.已经播出五年的HBO吸血 ...

  8. 0705第七讲标准模版库

    0705第七讲标准模版库 1.namespace:命名空间,解决相同作用域同名函数或变量问题 要求:使用时必须以'命名空间::成员名称'的格式 类型转换:强制类型转换(向下转换) 动态类型转换:dyn ...

  9. cocos2dx使用了第三方库照样移植android平台-解决iconv库的移植问题

    好记性不如烂笔头 cocos2dx使用了第三方库照样移植android平台-解决iconv库的移植问题 http://www.zaojiahua.com/iconv.html

最新文章

  1. JavaScript新知:sessionStorage and localStorage
  2. 《网络安全协议》课程实验大纲
  3. 微信小游戏「跳一跳」技术手段高分秘籍实现
  4. (转)CSS书写规范、顺序
  5. C 语言 普通基本数据类型 以及 其储存形式
  6. Java:使用DOM4j来实现读写XML文件中的属性和元素
  7. 【渝粤教育】国家开放大学2018年秋季 1007t公司财务 参考试题
  8. java content()_Java contentEquals() 方法
  9. 使用showMessageDialog显示消息框
  10. 云小课 | 需求任务还未分解,该咋整!项目管理Scrum项目工作分解的心酸谁能知?
  11. IE6下透明PNG图片的显示
  12. HTML页面基本结构介绍
  13. 网站是备案域名还是服务器,网站备案是域名还是服务器
  14. 计算机网络批量确认,【02-计算机网络面试核心】01-tcp协议与三次握手/四次挥手...
  15. vue click 跳转外部链接
  16. 【中医学】10 针灸-1
  17. Giving an effective oral presentation at university(The Hong Kong Polytechnic University 香港理工大学)
  18. 数商云SCM系统供应商准入协同业务场景 | 助力建筑建材企业规范供应商准入环节
  19. go语言基础(四):继承、方法
  20. JavaScript学习(七)——对象与数组、内部对象(1)

热门文章

  1. python-flask-1
  2. Laravel 使用 Aliyun OSS 云存储
  3. AOP原理解析及Castle、Autofac、Unity框架使用
  4. Docker在Ubuntu16.04上安装
  5. 鼠标移入视频播放,鼠标移出播放停止,恢复到原来状态
  6. runtime官方文档
  7. linux下使用TC模拟弱网络环境
  8. 【Hello CSS】第六章-文档流与排版
  9. runC爆严重安全漏洞,主机可被攻击!使用容器的快打补丁
  10. SDUT-3364_欧拉回路