一、环境

1、操作系统版本

CentOS 6.2 64

uname -a的输出:

Linux localhost.localdomain 2.6.32-220.17.1.el6.x86_64 #1 SMP Wed May 16 00:01:37 BST 2012 x86_64 x86_64 x86_64 GNU/Linux

2mpeg4ip版本

版本:1.6.1

下载链接:

http://people.freebsd.org/~ahze/distfiles/mpeg4ip-1.6.1.tar.gz

二、编译

1、编译mpeg4ip需要的库

首先安装libtool库,命令如下:

yum install libtool

然后进入到mpeg4ip的目录,运行./bootstrap进行配置,如果出错,是因为bash版本及名称的问题,修改bootstrap文件中第一行,改sh bash.或运行 bash ./bootstrap

提示如下:

*** ffmpeg encoder is not installed *** xvid encoder is not installed *** x264 encoder is not installed *** lame encoder is not installed *** faac encoder is not installed *** twolame encoder is not installed

安装相应库:

yum install ffmpeg-devel xvidcore-devel twolame-devel x264-devel

编译:make

2、编译中的错误处理

2.1 报错内容:

In file included from config_opts.cpp:1: /include/mpeg4ip.h:126: error: new declaration 'char* strcasestr(const char*, const char*)' /usr/include/string.h:369: error: ambiguates old declaration 'const char* strcasestr(const char*,const char*)'

解决办法:

vi include/mpeg4ip.h

注释掉函数声明,如下所示:

2.2 报错内容:

cc1plus: warnings being treated as errors sys_decoder_blkdec.cpp:190: error: suggest parentheses around '&&' within '||' sys_decoder_blkdec.cpp:205: error: suggest parentheses around '&&' within '||'

如图所示:

解决办法:

vi common/video/iso-mpeg4/src/Makefile

去掉Werror

vi命令:%s/-Werror//

2.3 报错内容:

type_basic.cpp:320: error: '<anonymous>' has incomplete type type_basic.cpp:320: error: invalid use of 'Void' type_basic.cpp:320: error: prototype for 'Void CMotionVector::setToZero(<type error>)' does not match any in class 'CMotionVector' ./../include/basic.hpp:441: error: candidate is: Void CMotionVector::setToZero()

解决办法:

vi common/video/iso-mpeg4/src/type_basic.cpp

320行去掉括号内的Void,如图所示:

2.4 报错内容:

cc1: warnings being treated as errors config.c: In function 'enter_chn': config.c:636: error: array subscript is above array bounds config.c:637: error: array subscript is above array bounds

解决办法:

vi player/lib/audio/faad/Makefile

去掉2.5 报错内容:

/usr/local/include/libavutil/common.h: In function ‘int32_t av_clipl_int32(int64_t)’: /usr/local/include/libavutil/common.h:154: error: ‘UINT64_C’ was not declared in this scope ...

解决办法:

涉及到标准cc99的问题,在出问题的文件中加上下面三句话就好了

#ifndef UINT64_C #define UINT64_C(value)__CONCAT(value,ULL)
#endif

2.6 报错内容:

In file included from ffmpeg.cpp:26: ffmpeg.h:29:28: error: ffmpeg/avcodec.h: No such file or directory ...

解决办法:

版本遗留问题,修改下路径就行了。其实这是一类问题,接下来还会遇到好多次,以这个为例展例下,其它的照此修改就OK了。

vi player/plugin/audio/ffmpeg/ffmpeg.h

在第30行进行修改,替换成完整路径:

#include <ffmpeg-spice/libavcodec/avcodec.h>

2.7报错内容:

ffmpeg.cpp: In function 'codec_data_t* ffmpeg_create(const char*,const char*,int,format_list_t*,audio_info_t*,const uint8_t*,uint32_t,audio_vft_t*, void*)': ffmpeg.cpp:180: error: 'AVCODEC_MAX_AUdio_FRAME_SIZE' was not declared in this scope ffmpeg.cpp: In function 'int ffmpeg_decode(codec_data_t*,frame_timestamp_t*,int*,uint8_t*,void*)':

解决办法:

vi /usr/include/ffmpeg-spice/libavcodec/avcodec.h

查找 AVCODEC_MAX_AUdio_FRAME_SIZE,得到如下结果:

复制其值到文件player/plugin/audio/ffmpeg/ffmpeg.h,并把Q去掉:

vi player/plugin/audio/ffmpeg/ffmpeg.h

添加如下内容:

#define AVCODEC_MAX_AUdio_FRAME_SIZE 192000

2.8 报错内容:

media_utils.cpp: In function 'int create_media_for_iptv(CPlayerSession*, control_callback_vft_t*)': media_utils.cpp:613: error: invalid conversion from 'const char*' to 'char*'

解决办法:

vi player/src/media_utils.cpp

613行,对name变量进行强制类型转换,如图所示:

2.9 报错内容:

../server/mp4live/video_util_resize.h:93: error: conflicting declaration 'uint8_t* fV' ../server/mp4live/video_util_resize.h:91: error: 'fV' has a prevIoUs declaration as 'const uint8_t* fV' ../server/mp4live/video_util_resize.h:94: error: redeFinition of 'uint32_t tvStride' ../server/mp4live/video_util_resize.h:94: error: 'uint32_t tvStride' prevIoUsly declared here
解决办法:
这个就是函数声明的时候变量重名了,把名字修改的不同就OK了。这是我修改:
voidcopyYuv(constuint8_t*fY,constuint8_t*fU,constuint8_t*fV,uint32_tfyStride,uint32_tfuStride,uint32_tfvStride2,uint8_t*tY,uint8_t*tU,uint8_t*fV2,uint32_ttyStride,uint32_ttvStride,uint32_ttvStride2,uint32_tw,uint32_th); 
2.10 报错内容:
video_ffmpeg.cpp:124: error: 'struct AVCodecContext' has no member named 'frame_rate' video_ffmpeg.cpp:125: error: 'struct AVCodecContext' has no member named 'frame_rate_base' video_ffmpeg.cpp:136: error: 'struct AVCodecContext' has no member named 'aspect_ratio'
解决办法:
这几个错误影响不大,就直接注释掉了,我主要用mp4live
vi server/mp4live/video_ffmpeg.cpp

好,编译成功,make install 即可使用。

三、安装使用

1、安装

make install

2、使用mp4live

CentOS6.2下编译mpeg4ip的更多相关文章

  1. canvas绘制视频封面的方法

    这篇文章主要介绍了canvas绘制视频封面的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. HTML5 播放 RTSP 视频的实例代码

    目前大多数网络摄像头都是通过 RTSP 协议传输视频流的,但是 HTML 并不标准支持 RTSP 流。本文重点给大家介绍HTML5 播放 RTSP 视频的实例代码,需要的朋友参考下吧

  3. html5自定义video标签的海报与播放按钮功能

    这篇文章主要介绍了html5自定义video标签的海报与播放按钮功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  4. html5 移动端视频video的android兼容(去除播放控件、全屏)

    这篇文章主要介绍了html5 移动端视频video的android兼容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  5. Html5 video标签视频的最佳实践

    这篇文章主要介绍了Html5 video标签视频的最佳实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  6. 使用HTML5加载音频和视频的实现代码

    这篇文章主要介绍了使用HTML5加载音频和视频的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  7. HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧

    这篇文章主要介绍了HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧问题,需要的朋友可以参考下

  8. HTML5拍照和摄像机功能实战详解

    这篇文章主要介绍了HTML5拍照和摄像机功能实战详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  9. ios – 将视频分享到Facebook

    我正在编写一个简单的测试应用程序,用于将视频从iOS上传到Facebook.由于FacebookSDK的所有文档都在Objective-C中,因此我发现很难在线找到有关如何使用Swift执行此操作的示例/教程.到目前为止我有这个在我的UI上放置一个共享按钮,但它看起来已禁用,从我读到的这是因为没有内容设置,但我看不出这是怎么可能的.我的getVideoURL()函数返回一个NSURL,它肯定包含视

  10. ios8 – iOS 8上的ptrace

    我试图在ptrace上调用一个像thisptrace一样的函数;但是当我尝试使用#include导入它时,Xcode会给我一个错误’sys/ptrace.h’文件找不到.我错过了什么,我是否需要导入一个库,或者这在iOS上根本不可用?

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部