如何用Android NDK编译FFmpeg

Android内置的编实在太少,于是我们需要FFmpeg。Android提供了NDK,为我们使用FFmpeg这种C语言代码提供了方便。

ffplay播放器 ffplay播放音频ffplay播放器 ffplay播放音频


ffplay播放器 ffplay播放音频


不过为了用NDK编译FFmpeg,还真的花费了不少时间,也得到了很多人的帮助,最应该谢谢hlenapetr。我觉得我现在这些方法算是比较简洁的了--

下面就尽量详细的说一下我include $(CLEAR_VARS)是怎么在项目中使用FFmpeg的,但是基于我混乱的表达能力,有不明白的就问我。

首先创建一个标准的Android项目vPlayer

android create project -n vPlayer -t 8 -p vPlayer -k me.abitno.vplayer -a PlayerView

mkdir jni && cd jni

wget //ffmpeg org/releases/ffmpeg-0.6.tar.bz2

tar xf ffmpeg-0.6.tar.bz2 && mv ffmpeg-0.6 ffmpeg && cd ffmpeg

在ffmpeg下新建一个config.sh,内容如下,注意把PREBUILT和PLATFORM设置正确。另外里面有些参数你也可以自行调整,我主要是为了配置一个播放器而这样设置的。

PREBUILT=/home/abitno/Android/android-ndk-r4/build/prebuilt/linux-x86/arm-eabi-4.4.0

./configure --target-os=linux

--en5、点击微信-拍照和录像,点击“允许”即可。able-version3

--enable-gpl

--enable-nonfree

--disable-stripping

--disable-ffmpeg

--disable-ffplay

--disable-ffserver

--disable-ffprobe

--disable-encoders

--disable-muxers

--disable-devs

--enable-protocol=file

--enable-filter

--disable-network

--disable-mpegaudio-hp

--disable-dev

--enable-cross-compile

--cc=$PREBUILT/bin/arm-eabi-gcc

--cross-prefix=$PREBUILT/bin/arm-eabi-

--nm=$PREBUILT/bin/arm-eabi-nm

--extra-cflags="-fPIC -DANDROID"

--disable-a

--enable-neon

--enable-armv5te

--extra-ldflags="-Wl,-T,$PREBUILT/arm-eabi/lib/ldscripts/armelf.x -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtbegin.o $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtend.o -lc -lm -ldl"

运行config.sh开始configure

chmod +x config.sh

./config.sh

configure完成后,编辑刚刚生成的config.h,找到这句

#define restriclibformat/Android.mkt restrict

Android的GCC不支持restrict关键字,于是修改成下面这样

#define restrict

编辑libutil/libm.h,把其中的static方法都删除。

分别修改libcodec、libfilter、libformat、libutil、libtproc和libswscale下的Makefile,把下面两句删除

include $(SUBDIR)../subdir.mak

在ffmpeg下添加一个文件.mk,内容如下

#include $(LOCAL_PATH)/../config-$(TARGET_ARCH).mak

include $(LOCAL_PATH)/../config.mak

OBJS :=

OBJS-yes :=

MMX-OBJS-yes :=

include $(LOCAL_PATH)/Makefile

OBJS-$(HAVE_MMX) += $(MMX-OBJS-yes)

OBJS += $(OBJS-yes)

FFLIBS := $(foreach,NAME,$(FFLIBS),lib$(NAME))

FFCFLAGS = -DHAVE_AV_CONFIG_H -Wno-sign-compare -Wno-switch -Wno-pointer-sign

FFCFLAGS += -DTARGET_CONFIG="config-$(TARGET_ARCH).h"

ALL_S_FILES := $(wildcard $(LOCAL_PATH)/$(TARGET_ARCH)/.S)

ALL_S_FILES := $(addprefix $(TARGET_ARCH)/, $(notdir $(ALL_S_FILES)))

ifneq ($(ALL_S_FILES),)

ALL_S_OBJS := $(patsubst %.S,%.o,$(ALL_S_FILES))

S_OBJS := $(filter $(ALL_S_OBJS),$(OBJS))

else

C_OBJS := $(OBJS)

S_OBJS :=

endif

C_FILES := $(patsubst %.o,%.c,$(C_OBJS))

S_FILES := $(patsubst %.o,%.S,$(S_OBJS))

include $(all-subdir-makefiles)

在ffmpeg目录下,Android.mk

LOCAL_STATIC_LIBRARIES := libformat libcodec libutil libtproc libswscale

include $(call all-makefiles-under,$(LOCAL_PATH))

LOCAL_SRC_FILES := $(FFFILES)

$(LOCAL_PATH)

LOCAL_CFLAGS += $(FFCFLAGS)

LOCAL_LDLIBS := -lz

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

include $(BUILD_STATIC_LIBRARY)

libcodec/Android.mk

LOCAL_SRC_FILES := $(FFFILES)

$(LOCAL_PATH)

LOCAL_CFLAGS += $(FFCFLAGS)

LOCAL_LDLIBS := -lz

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

include $(BUILD_STATIC_LIBRARY)

libfilter、libutil、libtproc和libswscale下的Android.mk内容如下

LOCAL_SRC_FILES := $(FFFILES)

$(LOCAL_PATH)

LOCAL_CFLAGS += $(FFCFLAGS)

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

include $(BUILD_STATIC_LIBRARY)

运行ndk-build,经过漫长的等待就编译完成了。至于具体怎么应用可能以后会写,我变得太懒了。。。

如何用Android NDK编译FFmpeg

主要参数:

Android内置的编实在太少,于是我们需要FFmpeg。Android提供了NDK,为我们使用FFmpeg这种C语言代码提供了方便。

接下来要添加一系列的Android.mk,在jni根目录下的内容如下

不过为了用NDK编译FFmpeg,还真的花费了不少时间,也得到了很多人的帮助,最应该谢谢hlenapetr。我觉得我现在这些方法算是比较简洁的了--

下面就尽量详细的说一下我是怎么在项目中使用FFmpeg的,但是基于我混乱的表达能力,有不明白的就问我。

首先创建一个标准的Android项目vPlayer

android create project -n vPlayer -t 8 -p vPlayer -k me.abitno.vplayer -a PlayerView

mkdir jni && cd jni

wget //ffmpeg org/releases/ffmpeg-0.6.tar.bz2

tar xf ffmpeg-0.6.tar.bz2 && mv ffmpeg-0.6 ffmpeg && cd ffmpeg

在ffmpeg下新建一个config.sh,内容如下,注意把PREBUILT和PLATFORM设置正确。另外里面有些参数你也可以自行调整,我主要是为了配置一个播放器而这样设置的。

PREBUILT=/home/abitno/Android/android-ndk-r4/build/prebuilt/linux-x86/arm-eabi-4.4.0

./configure --target-os=linux

--enable-version3

--enable-gpl

--enable-nonfree

--disable-stripping

--disable-ffmpeg

--disable-ffplay

--disable-ffserver

--disable-ffprobe

--disable-encoders

--disable-muxers

--disable-devs

--enable-protocol=file

--enable-filter

--disable-network

--disable-mpegaudio-hp

--disable-dev

--enable-cross-compile

--cc=$PREBUILT/bin/arm-eabi-gcc

--cross-prefix=$PREBUILT/bin/arm-eabi-

--nm=$PREBUILT/bin/arm-eabi-nm

--extra-cflags="-fPIC -DANDROID"

--disable-a

--enable-neon

--enable-armv5te

--extra-ldflags="-Wl,-T,$PREBUILT/arm-eabi/lib/ldscripts/armelf.x -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtbegin.o $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtend.o -lc -lm -ldl"

运行config.sh开始configure

chmod +x config.sh

./config.sh

configure完成后,编辑刚刚生成的config.h,找到这句

#define restrict restrict

Android的GCC不支持restrict关键字,于是修改成下面这样

#define restrict

编辑libutil/libm.h,把其中的static方法都删除。

分别修改libcodec、libfilter、libformat、libutil、libtproc和libswscale下的Makefile,把下面两句删除

include $(SUBDIR)../subdir.mak

在ffmpeg下添加一个文件.mk,内容如下

#include $(LOCAL_PATH)/../config-$(TARGET_ARCH).mak

include $(LOCAL_PATH)/../config.mak

OBJS :=

OBJS-yes :=

MMX-OBJS-yes :=

include $(LOCAL_PATH)/Makefile

OBJS-$(HAVE_MMX) += $(MMX-OBJS-yes)

OBJS += $(OBJS-yes)

FFLIBS := $(foreach,NAME,$(FFLIBS),lib$(NAME))

FFCFLAGS = -DHAVE_AV_CONFIG_H -Wno-sign-compare -Wno-switch -Wno-pointer-sign

FFCFLAGS += -DTARGET_CONFIG="config-$(TARGET_ARCH).h"

ALL_S_FILES := $(wildcard $(LOCAL_PATH)/$(TARGET_ARCH)/.S)

ALL_S_FILOCAL_MODULE := ffmpegLES := $(addprefix $(TARGET_ARCH)/, $(notdir $(ALL_S_FILES)))

ifneq ($(ALL_S_FILES),)

ALL_S_OBJS := $(patsubst %.S,%.o,$(ALL_S_FILES))

S_OBJS := $(filter $(ALL_S_OBJS),$(OBJS))

else

C_OBJS := $(OBJS)

S_OBJS :=

endif

C_FILES := $(patsubst %.o,%.c,$(C_OBJS))

S_FILES := $(patsubst %.o,%.S,$(S_OBJS))

include $(all-subdir-makefiles)

在ffmpeg目录下,Android.mk

LOCAL_STATIC_LIBRARIES := libformat libcodec libutil libtproc libswscale

include $(call all-makefiles-under,$(LOCAL_PATH))

LOCAL_SRC_FILES := $(FFFILES)

$(LOCAL_PATH)

LOCAL_CFLAGS += $(FFCFLAGS)

LOCAL_LDLIBS := -lz

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

include $(BUILD_STATIC_LIBRARY)

libcodec/Android.mk

LOCAL_SRC_FILES := $(FFFILES)

$(LOCAL_PATH)

LOCAL_CFLAGS += $(FFCFLAGS)

LOCAL_LDLIBS := -lz

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

include $(BUILD_STATIC_LIBRARY)

libfilter、libutil、libtproc和libswscale下的Android.mk内容如下

LOCAL_SRC_FILES := $(FFFILES)

$(LOCAL_PATH)

LOCAL_CFLAGS += $(FFCFLAGS)

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

include $(BUILD_STATIC_LIBRARY)

运行ndk-build,经过漫长的等待就编译完成了。至于具体怎么应用可能以后会写,我变得太懒了。。。

转载,仅供参考

安卓钉钉点击列表花屏

# collect objects

1、钉钉点击列表花屏要明白,黑屏、花屏、闪屏等问题,可能是推流端的问题,也可能PLATFORM=/home/abitno/Android/android-ndk-r4/build/platforms/android-8/arch-arm是播放器的问题,遇到这些现象,要时间用别的播放器(如VLC,ffplay)试试。

LOCAL_CFLAGS += -include "string.h" -Dipv6mr_intece=ipv6mr_ifindex

2、如果都出现同样的问题,那么多半是流本身的问题了,反之,则很可能是播放器的问题。

非凡影音 吉吉影音 西瓜影音哪个好

当然是非凡影音好点了。然后在vPlayer目录里毕竟速度快,还没有广告。

都不多,看你自己的FFFILES := $(sort $(S_FILES)) $(sort $(C_FILES))需要

不多:西瓜好点

朋友啊、恩你说的我懂的〃

我一开始也找不到漂亮的:ˇ

年纪很轻的大学女生·

乳,头可大了∧

她Q‐_ 7._0._7.~_1._0._5.﹢_0._0._9﹢

好好珍惜啊,很难找到的的。☆__~_

年轻的非常的有动感的的哦┗# LOCAL_PATH is one of libutil, libcodec, libformat, or libswscale

让我想想就硬的、太火热了∴

以后你有不错也要告诉我的;不客气了。∨

钉钉直播花屏怎么回事

#!/bin/bash

钉钉直播花屏首先要明白,黑屏、花屏、闪屏等问题,可能是推流端的问题,也可能是播放器的LOCAL_MODULE := ffmpeg问题,遇到这些现象,要时间用别的播放器(如VLC,ffplay)试试,如果都出现$(LOCAL_PATH)/..同样的问题,那么多半是流本身的问题了,反之,则很可能是播放器的问题。

如何用Android NDK编译FFmpeg

LOCAL_PATH := $(call my-dir)

Android内置的编实在太少,于是我们需要FFmpeg。Android提供了NDK,为我们使用FFmpeg这种C语言代码提供了方便。

LOCAL_MODULE := $(FFNAME)

不过为了用NDK编译FFmpeg,还真的花费了不少时间,也得到了很多人的帮助,最应该谢谢hlenapetr。我觉得我现在这些方法算是比较简洁的了--

include $(CLEAR_VARS)

下面就尽量详细的说一下我是怎么在项目中使用FFmpeg的,但是基于我混乱的表达能力,有不明白的就问我。

首先创建一个标准的Android项目vPlayer

android create project -n vPlayer -t 8 -p vPlayer -k me.abitno.vplayer -a PlayerView

mkdir jni && cd jni

wget //ffmpeg org/releases/ffmpeg-0.6.tar.bz2

tar xf ffmpeg-0.6.tar.bz2 && mv ffmpeg-0.6 ffmpeg && cd ffmpeg

在ffmpeg下新建一个config.sh,内容如下,注意把PREBUILT和PLATFORM设置正确。另外里面有些参数你也可以自行调整,我主要是为了配置一个播放器而这样设置的。

PREBUILT=/home/abitno/Android/android-ndk-r4/build/prebuilt/linux-x86/arm-eabi-4.4.0

./configure --target-os=linux

--enable-version3

--enable-gpl

--enable-nonfree

--disable-stripping

--disable-ffmpeg

--disable-ffplay

--disable-ffserver

--disable-ffprobe

--disable-encoders

--disable-muxers

--disable-devs

--enable-protocol=file

--enable-filter

--disable-network

--disable-mpegaudio-hp

--disable-dev

--enable-cross-compile

--cc=$PREBUILT/bin/arm-eabi-gcc

--cross-prefix=$PREBUILT/bin/arm-eabi-

--nm=$PREBUILT/bin/arm-eabi-nm

--extra-cflags="-fPIC -DANDROID"

--disable-a

--enable-neon

--enable-armv5te

--extra-ldflags="-Wl,-T,$PREBUILT/arm-eabi/lib/ldscripts/armelf.x -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtbegin.o $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtend.o -lc -lm -ldl"

运行config.sh开始configure

chmod +x config.sh

./config.sh

configure完成后,编辑刚刚生成的config.h,找到这句

#define restrict restrict

Android的GCC不支持restrict关键字,于是修改成下面这样

#define restrict

编辑libutil/libm.h,把其中的static方法都删除。

分别修改libcodec、libfilter、libformat、libutil、libtproc和libswscale下的Makefile,把下面两句删除

include $(SUBDIR)../subdir.mak

在ffmpeg下添加一个文件.mk,内容如下

#include $(LOCAL_PATH)/../config-$(TARGET_ARCH).mak

include $(LOCAL_PATH)/../config.mak

OBJS :=

OBJS-yes :=

MMX-OBJS-yes :=

include $(LOCAL_PATH)/Makefile

OBJS-$(HAVE_MMX) += $(MMX-OBJS-yes)

OBJS += $(OBJS-yes)

FFLIBS := $(foreach,NAME,$(FFLIBS),lib$(NAME))

FFCFLAGS = -DHAVE_AV_CONFIG_H -Wno-sign-compare -Wno-switch -Wno-pointer-sign

FFCFLAGS += -DTARGET_CONFIG="config-$(TARGET_ARCH).h"

ALL_S_FILES := $(wildcard $(LOCAL_PATH)/$(TARGET_ARCH)/.S)

ALL_S_FILES := $(addprefix $(TARGET_ARCH)/, $(notdir $(ALL_S_FILES)))

ifneq ($(ALL_S_FILES),)

ALL_S_OBJS := $(patsubst %.S,%.o,$(ALL_S_FILES))

S_OBJS := $(filter $(ALL_S_OBJS),$(OBJS))

else

C_OBJS := $(OBJS)

S_OBJS :=

endif

C_FILES := $(patsubst %.o,%.c,$(C_OBJS))

S_FILES := $(patsubst %.o,%.S,$(S_OBJS))

include $(all-subdir-makefiles)

在ffmpeg目录下,Android.mk

LOCAL_STATIC_LIBRARIES := libformat libcodec libutil libtproc libswscale

include $(call all-makefiles-under,$(LOCAL_PATH))

LOCAL_SRC_FILES := $(FFFILES)

$(LOCAL_PATH)

LOCAL_CFLAGS += $(FFCFLAGS)

LOCAL_LDLIBS := -lz

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

include $(BUILD_STATIC_LIBRARY)

libcodec/Android.mk

LOCAL_SRC_FILES := $(FFFILES)

$(LOCAL_PATH)

LOCAL_CFLAGS += $(FFCFLAGS)

LOCAL_LDLIBS := -lz

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

include $(BUILD_STATIC_LIBRARY)

libfilter、libutil、libtproc和libswscale下的Android.mk内容如下

LOCAL_SRC_FILES := $(FFFILES)

$(LOCAL_PATH)

LOCAL_CFLAGS += $(FFCFLAGS)

LOCAL_STATIC_LIBRARIES := $(FFLIBS)

include $(BUILD_STATIC_LIBRARY)

运行ndk-build,经过漫长的等待就编译完成了。至于具体怎么应用可能以后会写,我变得太懒了。。。

转载,仅供参考,祝你愉快,满意请采纳。

电脑上的什么播放器可以播放G.729音频谢谢

C_OBJS := $(filter-ouinclude $(LOCAL_PATH)/../.mkt $(ALL_S_OBJS),$(OBJS))

你可以试一下使用l做(播放器只要能支持调用l就行,如mpc-hc等),l是基于ffmpeg的,而ffmpeg有相应的,也许可以放。或者你可以试一下ffplay,不过需要命令行调用。

LOCAL_PATH := $(call my-dir)

企业微信直播为什么我是黑屏听不见也看不到?

$(LOCAL_PATH)/..

如果对方能看到你,这就说明不是你手机的问题,一般是对方网速太慢,加载不了,你只能看到黑屏,让对方用WiFi网络视频,另外要确保对方摄像头在微信中己正常开启。

--disable-protocols

检查手机相关设置是否打开微信应用摄像头的权限。

获得摄像头权限,设置方法如下:

1、首先找到安全中心,在应用程序中打开“安全中心“;

2、进入安全中心,点击“授权管理”;

3、在授权管理中打开应用权限管理;

4、应用权限管理--应用管理,滑动手机屏幕找到微信;

企业微信直播为什么我是黑屏听不见也看不到?企业微信直播黑屏有可能是硬件设备过于老旧,导致直播时黑屏,可以换一台设备,然后重新登录直播。另外,开启直播的时候尽量使用稳定的网络,不然也会被迫暂停。

微信(WeChat)是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,由张小龙所带领的腾讯广州研发中心产品团队打造。微信支持跨通信、跨作系统平台通过网络快速发送免费(需消耗少量网络流量)语音短信、视频、和文字,同时,也可以使用通过共享流媒体内容的资料和基于位置的社交插件“摇一摇”、“漂流瓶”、“朋友圈”、”公众平台“、”语音记事本“等服务插件。

截止到2016年第二季度,微信已经覆盖 94% 以上的智能手机,月活跃用户达到 8.06亿,用户覆盖 200 多个、超过 20 种语言。此外,各品牌的微信公众账号总数已经超过 800 万个,移动应用对接数量超过 85000 个,广告收入增至36.79亿,微信支付用户则达到了4亿左右。

应该是网速跟不上,画面跳转不过来

企业微信是include $(SUBDIR)../config.mak腾讯微信团队打造的企业通讯与办公工具,具有与微信一致的沟通体验,丰富的OA应用,和连接微信生态的能力,可帮助企业连接内部、连接生态伙伴、连接消费者。专业协作、安全管理、人即服务。具体作流程详询微信:95017。

我也是。。电脑微信这两天更新了,回看还是可以的,但直播进去就黑屏无声。

手机对着电脑屏幕直播怎样才不会花屏

这个可以推桌面+麦克风。

首先我们要明白,黑屏、花屏、闪屏等问题,可能是推流端的问题,也可能是播放器的问题,遇到这些现象,我们要时间用别的播放器(如 VLC,ffplay)试试,如果都出现同样的问题,那么多半是流本身的问题了,反之,则很可能是播放器的问题。

include $(BUILD_SHARED_LIBRARY)

播放黑屏

现象:画面是黑的,没有图像,但是有声音。

1.主播端摄像头权限问题

无论 Android 还是 iOS,App 使用摄像头都是需要申请授权的,特别是 Android 6.0 以后,如果 App 层面不做专门的处理的话,很可能出现摄像头权限被禁用的情况。

如果 App 没有获取到摄像头权限,视频就无法采集成功,从而导致推出来的流只有音频数据。

解决方案:App 层面肯定要小心处理权限问题,检测到未获取相应权限则禁止开播,或者反复提示主播授予权限。另外,可以询问出现问题的主播是否有摄像头预览画面,如果 App 没有获得权限的话,是没有预览画面的。

2.主播端编码失败

视频数据采集到后,下一步就是经过编码器,由于参数配置或者某些机型的硬编兼容性问题,很可能数据送入编码器后,编码失败,并无输出,从而导致没有视频数据送入到推流模块。

解决方案:一般推流 SDK 都会统计推流的实时视频帧率,CDN 服务端也会有一些帧率,因此,如果发现这些统计得到的推流帧率为 0,同时又确定不是没有采集到数据,那么多半是编码器的原因,可以想办法查看下该机型的日志看看具体的报错信息。

3.视频解码失败

前面的文章有提到过,当播放器遇到不支持的视频格式,或者数据内容/格式异常,则会解码失败,从而导致无解码视频输出。

针对不支持的格式:

要提前了解播放器本身支持哪些音视频格式,如 H.264,mp4v,aac 等等,避免播放不支持的格式

播放器本身遇到的硬解或者软解失败,应该有日志报错,或者抛出异常给应用层提示用户

针对视频数据内容错误FFNAME := lib$(NAME):

需要分析码流文件本身,常见的数据内容错误导致的解码失败有如下几种:

送入的帧数据不完整

H.264 的视频码流,缺失了 SPS,PPS 等必要的信息头

iOS 的 VideoToolbox 解码,只支持 cc 方式打包的 H.264 数据

部分 Android 机型硬编出来的数据有额外的 naul 头

其他等等

编译 ffmpge libtproc库没有

LOCAL_C_INCLUDES :=

ffmpeg是音视频的分离,转换,编码解码及流媒体的完全解决方案,其中最重要的就是libcodec库。它被mplayer或者xine使用作为。还有,国内比较流行的播放器影音风暴或MyMPC的后端ffdshow也最外层的jni/Android.mk和jni/ffmpeg/Android.mk我只是随便这样写的,你应该根据自己的需求改写。是使用ffmpeg的解码库的。

你得了解JNI和Android NDK的基本用法,若觉得我的文章还不错,可以看之前写的JNI简单入门和Android NDK入门

ffmpeg软件包经编译过后将生成三个可执行文件,ffmpeg,ffserver,ffplay。其中ffmpeg用于对媒体文件进行处理,ffserver是一个的流媒体,ffplay是一个基于SDL的简单播放器。

ffmpeg中有五个库文件,libcodec,libformat,libutil,libswscale,libtproc,其中库libcodec,libformat用于对媒体文件进行处理,如格式的转换;libutil是一个通用的小型函数库,该库中实现了CRC校验码的产生,128位整数数学,公约数,整数开方,整数取对数,内存分配,大端小端格式的转换等功能;libswscale,libtproc暂时不知道何用。