hi3518e的sdk提供了h264的例程,如果用户需要查看录像,那么需要使用普遍的格式,mp4便是目前最好的格式之一。
将h264转为mp4,有很多方法,本文使用的是mp4v2。
步骤如下:
1、下载mp4v2.0.0。
2、在Ubuntu中解压,进入到mp4v2-2.0.0,在本目录中新建一个install目录。
3、在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=/home/aston/sambashare/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
4、make
5、make install
6、生成的lib加到mpp lib里面
7、include下文件添加到mpp/include中去
8、lib/*so*加到开发板lib目录下(如果flash空间不够,在cp的时候,只需将libmp4v2.so.2.0.0拷贝到开发板的lib目录下,使用ln生成libmp4v2.so、libmp4v2.so.2)
ln -s libmp4v2.so.2.0.0 libmp4v2.so.2
ln -s libmp4v2.so.2.0.0 libmp4v2.so
9、在sample_venc.c加上头文件#include <../../include/mp4v2/mp4v2.h>
10、在main函数中,加入代码,目的是验证mp4v2是否移植和部署成功,代码如下:
static MP4FileHandle hMP4File = NULL;
if(hMP4File == NULL)
{
hMP4File = MP4CreateEx("test.mp4",0, 1, 1, 0, 0, 0, 0); //文件存储路径
if (hMP4File == MP4_INVALID_FILE_HANDLE)
{
printf("open file fialed.\n");
return -1;
}
MP4SetTimeScale(hMP4File, 90000);
}
MP4Close(hMP4File, 0);
hMP4File = NULL;
11、修改venc下的Makefile
由原来的:
$(CC) $(CFLAGS) -lpthread -lm -o $@ $^ $(MPI_LIBS) $(AUDIO_LIBA) $(SENSOR_LIBS)
改为:
CURRENT=$(shell pwd)
$(CC) $(CFLAGS) -lpthread -lm -o $@ $^ $(MPI_LIBS) $(AUDIO_LIBA) $(SENSOR_LIBS) -lmp4v2 -lstdc++ -lm -L $(CURRENT)/../../lib
如果不修改Makefile,则会报找不到libmp4v2。
12、make编译,在开发板上执行编译好的文件,执行后会在该目录下生成一个test.mp4的文件。
13、用MP4 Reader打开test.mp4:
可以看到不完整的文件结构,但是这就算第一步成功了,接下来会将h264封装到mp4中。