第七季2:移植MP4v2库 与 将H.264码流打包成MP4格式的文件

以下内容源于朱有鹏课程的学习与整理,如有侵权请告知删除。

前言

本文首先移植MP4V2库,然后运行修改后的sample代码以生成MP4文件。

利用MP4v2库,可以将编码方式为H264的视频码流打包、封装为MP4格式的文件。

一、移植MP4v2库

1、下载MP4v2库并解压

(1)下载地址:2.0.0~dfsg0-6 : mp4v2 package : Ubuntu。

(2)将源码包解压至/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0目录。

root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0# ls
aclocal.m4  configure     COPYING  GNUmakefile.am  include  libplatform  project  src
autoaux     configure.ac  doc      GNUmakefile.in  INSTALL  libutil      README   util
root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0# 

2、配置与编译

(1)在/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0目录下创建_install文件夹(作为安装目录),然后执行以下命令(即执行该目录下的configure脚本,并传一些参数进去)。

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=/home/xjh/iot/hisi_development/mp4/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

(2)执行make,然后执行make install。

执行make时如果出错如下,则执行“source /etc/profile”。

./libtool: line 984: arm-hisiv300-linux-gcc: command not found
make: *** [src/3gp.lo] Error 1

(3)如果安装成功,在_install目录下会生成一些待部署的文件。其中bin目录下是一些可执行的二进制文件,lib目录下是库文件(其中.a文件与静态链接库有关,编译与链接时使用;.so文件与动态链接库有关,链接与运行时使用),include目录下的文件在编译时会用到。

root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0/_install# ls
bin  include  lib  share
root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0/_install#

3、部署相关文件

(1)将上面生成的lib目录下的所有文件,拷贝到Hi3518E_SDK_V1.0.3.0/mpp/lib目录中。

root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0/_install/lib# ls
libmp4v2.a  libmp4v2.la  libmp4v2.so  libmp4v2.so.2  libmp4v2.so.2.0.0
root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0/_install/lib# cp * /home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/mpp/lib/
root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0/_install/lib# 

(2)将上面生成的include目录下的所有文件,拷到Hi3518E_SDK_V1.0.3.0/mpp/include目录中。

root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0/_install/include# ls
mp4v2
root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0/_install/include# cp * /home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/mpp/include/ -rf
root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0/_install/include# 

(3)将上面生成的lib目录下的*so*文件,拷贝到板载系统的/lib目录中。

此时因为spiflsh容量不足而报错,为了腾出spiflash空间,分别做了两方面的工作。

第一,使用strip工具缩小动态链接库的文件大小。

动态链接库即.so文件中包含着调试符号信息,这些符号会占用一定的空间。在传统的嵌入式系统中flash空间是有限的,为了节省flash空间,需要把这些符号信息去掉。之所以可以将这些符号信息去掉,是因为这些信息是用来调试的,在程序运行时是没用的。

root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0/_install/lib# ls
libmp4v2.a  libmp4v2.la  libmp4v2.so  libmp4v2.so.2  libmp4v2.so.2.0.0
root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0/_install/lib# arm-linux-strip *so*
root@ubuntu:/home/xjh/iot/hisi_development/mp4/mp4v2-2.0.0/_install/lib# 

第二,挂载TF卡,然后将/ko目录内容移动到TF卡中。

1)将TF卡格式化为FAT32文件系统(在windows中进行快速格式化时选择这个选项)。

2)把TF卡插进开发板,确保TF卡可用(blk是块设备的简写,mmcblk就是mmc或者sd卡,0就是这个mmc或者sd卡的顺序编号,p1就是分区)。

/mnt # himci: card disconnected! #拔掉卡时显示的信息
mmc1: card aaaa removed
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 # 

3)首先在板载系统上创建/usr/mmc目录,然后执行“mount -t vfat /dev/mmcblk0p1 /usr/mmc”,挂载成功后,将/ko目录剪切到/usr/mmc目录中。

4)在开发板的/etc/profle文件末尾添加内容如下:

mount -t vfat /dev/mmcblk0p1 /usr/mmccd /usr/mmc/ko
./load3518e -i -sensor ar0130 -osmem 32 -total 64mount -t nfs -o nolock 192.168.1.141:/home/xjh/iot/hisi_development/hisi_rootfs /mntcd /mnt

二、将H.264码流打包成MP4格式文件

(1)完成上面操作后,将提供的sample目录复制到虚拟机Hi3518E_SDK_V1.0.3.0/mpp目录下,修改目录名为“sample_mp4_ar0130”(只是为了区别之前实验的sample目录)。

(2)进入sample_mp4_ar0130/venc目录下,修改Makefile文件如下(即修改lib的路径,要根据自己实际的lib路径修改):

$(TARGET):%:%.o $(COMM_OBJ)$(CC) $(CFLAGS) -lpthread -lm -o $@ $^ $(MPI_LIBS) $(AUDIO_LIBA) $(SENSOR_LIBS) -lmp4v2 -lstdc++ -lm -L /home/xjh/iot/hisi_development/Hi3518E_SDK/Hi3518E_SDK_V1.0.3.0/mpp/lib

(3)在venc目录下执行make,将samp_venc文件拷至/home/xjh/iot/hisi_development/hisi_rootfs目录下(方便将来在开发板的/mnt目录下执行)。

(4)在板载系统/mnt目录下执行“ ./sample_venc ”。注意让它一直执行,直到显示“close mp4 file”时才可以按“ctrl+c”终止程序,否则最终的视频文件打不开。

/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

(5)在板载系统的/usr/mmc/目录下(源码规定的目录)可以看到test.mp4文件。将该文件复制到板载系统的/mnt目录,则可以在虚拟机中/home/xjh/iot/hisi_development/hisi_rootfs目录下看到该文件,把它移动到共享文件夹,在windows主机中打开该文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新高考不选物理可以学计算机吗,新高考选科中物理真的那么重要吗?没有选物理是不是完了?...

文/圆梦志愿 伏老师众所周知,选科是我国新高考中最重要的事情之一,且涉及到了多门选考科目。其中,要数物理的话题性相对最强。那么,高考选科是不是物理特别重要?新高考没有选物理是不是完了?一、高考选科是…

参加第三届信息化创新克拉玛依国际学术论坛

据老孙说前二届在克拉玛依的数字油田的会议规格很高,可惜一直没机会参加。2014年9月3日至4日举办第三届,无论如何抓住了这次机会,不过会议的内容有些让我失望,克拉玛依的心思已经放在数字城市上了,数字油田的主题被冲淡…

Telnet远程登录 与 海思proc文件系统

以下内容源于朱有鹏嵌入式课程的学习与整理, 如有侵权请告知删除。 内容总结 (1)添加“ telnet远程登录 ”这种调试方式。 (2)介绍“ 海思proc文件系统 ”这种调试接口。 一、telnet远程登录 1、telnet远程登录的意…

北邮-上机-提交错误解决及一些经验

2019独角兽企业重金招聘Python工程师标准>>> 1、出现Time Limit Exceed问题 答:三种原因:1、程序死循环或太多的循环;2、对极限状况计算量太大,需要优化程序,如对10000个以上进行排序必须使用快速排序&…

RAM、ROM和FLASH三大类常见存储器简介

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考博客: Flash、RAM、ROM的区别_天籁东东的博客-CSDN博客_flash和rom的区别 RAM、ROM和FLASH三大类常见存储器简介 - 存储技术 - 电子发烧友网 RAM、NANDFlash、NORFlash的区别详解 - 百度…

wangeditor html编辑,Vue整合wangEditor富文本编辑器

最近在做项目时,客户有个发布新闻动态的功能,具体页面内容让客户自己编写,所以要选择富文本编辑器,这样用户体验好一点。网上有很多的富文本编辑器, 因为项目的功能并不是很复杂,所以选择了wangEditor&…

DreamWeaver连接Tomcat用以编辑和测试JSP

2019独角兽企业重金招聘Python工程师标准>>> 3 、打开软件之后,大家选择【站点】中的【新建站点】 。 4 、填写要填的内容。 站点名称:可以随便起,只是用来区分站点用的。因为,可以建立多个站点。 本地根文件夹&…

2013多校第三场

hdu 4629 题意&#xff1a;给你n个三角形&#xff0c;问覆盖1~n次的面积各是多少&#xff0c;n < 50; 分析&#xff1a;取出所有端点和交点的x坐标&#xff0c;排序&#xff0c;然后对于每一段xi~xi1的范围的线段都是不相交的&#xff0c;所以组成的 面积要么是三角形&#…

TSS 任务状态段

TSS(任务状态段)1 什么是TSS TSS 全称task state segment&#xff0c;是指在操作系统进程管理的过程中&#xff0c;任务&#xff08;进程&#xff09;切换时的任务现场信息。 2 TSS工作细节 TSS在任务切换过程中起着重要作用&#xff0c;通过它实现任务的挂起和恢复。所谓…

Linux下C语言程序的内存布局

以下内容源于C语言中文网的内容学习与整理。如有侵权&#xff0c;请告知删除。 一、C语言内存布局 C程序所占用的内存&#xff0c;可以划分为以下几个部分。 1、栈区&#xff08;stack&#xff09;。由编译器自动分配释放&#xff0c;存放函数的参数值&#xff0c;局部变量的值…

微型计算机频繁死机的原因,电脑经常死机是什么原因|电脑经常死机的解决方法...

‍‍电脑出现死机是很常见的一种故障&#xff0c;造成的原因也有很多种。而最近有些用户的电脑经常死机&#xff0c;开机几分钟就死机&#xff0c;有时还会出现蓝屏&#xff0c;这到底是怎么回事呢&#xff1f;电脑经常死机是什么原因呢&#xff1f;下面小编结合自己的实际情况…

PKI系统深入介绍

公钥基础设施&#xff08;Public Key Infrastructure&#xff0c;简称PKI&#xff09;是眼下网络安全建设的基础与核心&#xff0c;是电子商务安全实施的基本保障&#xff0c;因此&#xff0c;对PKI技术的研究和开发成为眼下信息安全领域的热点。本文对PKI技术进行了全面的分析…

html 禁止缩放 ios10,完美解决ios10及以上Safari无法禁止缩放的问题

完美解决 ios10 及以上 Safari 无法禁止缩放的问题转载自掘金-互联网学徒移动端web缩放有两种&#xff1a;双击缩放双指手势缩放在 iOS 10之前&#xff0c;iOS 和 Android 都可以通过一行 meta 标签来禁止页面缩放&#xff1a;但 iOS 10开始&#xff0c;meta 设置在 Safari 内无…

SCRT软件的使用教程

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 SCRT软件下载&#xff1a;提取码1234 快速链接的步骤与设置 先选择“快速链接”&#xff1b; 然后协议选serial&#xff0c;端口在设备管理器中查看&#xff08;我的是com3&#xff09;&#xff0c;波特率…

KEIL4.12中添加ULINK2的支持

转载自&#xff1a;http://www.amobbs.com/thread-4767650-1-1.html 如果你用KEIL4.12&#xff0c;但却没有Ulink2下载器&#xff0c;只有早先用的Ulink下载器&#xff0c;那么你按照下面三步升下级就可以了....三步&#xff1a;1.把‘keil-ulink升级至ulink2的文件’解压缩后拷…

解决Vmware中安装Ubuntu Server 14.04 分辨率无法全屏问题

2019独角兽企业重金招聘Python工程师标准>>> We will have to edit grub configuration. Open a terminal and paste this: sudo gedit /etc/default/grub Hit Enter. It will open grub preferences in Gedit.Locate the line # GRUB_GFXMODE800x600 (resolution m…

GCC编译器的相关内容

本文摘录与整理于C语言中文网的相关内容&#xff0c;仅用于学习&#xff0c;如有侵权请告知删除。 原内容网址&#xff1a;C语言中文网&#xff1a;C语言程序设计门户网站(入门教程、编程软件) GCC官方文档网址&#xff1a;Top (Using the GNU Compiler Collection (GCC)) 1、…

计算机用户登录设置成2000,2008计算机等级考试:Windows2000系统选项设置

在Windows 2000 Server中&#xff0c; 用户除了可以进行前面章节中介绍的系统设置&#xff0c;还可以在系统中进行一些其他的设置&#xff0c;包括新建、编辑、删除用户及系统变量&#xff0c;设置默认启动系统及故障恢复选项&#xff0c;查看系统性能等。本节便来介绍一些比较…

成都电讯学院研发的计算机,成都电讯工程学院

[拼音]&#xff1a;chengdu dianxun gongcheng xueyuan[外文]&#xff1a;Chengdu Institute of Telecommunication中国一所以培养电子科学技术人才为主的多科性理工科高等学校。1956年9月创建于四川成都。建院初仅设4个专业。1984年&#xff0c;学校设12个系(26个专业)&#x…

Linux系统以源码方式安装软件的方法

以下内容源于网络资源的整理&#xff0c;如有侵权请告知删除。 Linux系统中安装软件的三种方法_馨若梦的博客-CSDN博客_linux怎么安装软件 Linux下源码编译安装详解_Zebul博的博客-CSDN博客_编译安装 Linux源码包的一般安装步骤_Kaiattrib的博客-CSDN博客_linux源码包安装步…