当前位置:文档之家› CUDA C GETTING STARTED GUIDE FOR MICROSOFT WINDOWS

CUDA C GETTING STARTED GUIDE FOR MICROSOFT WINDOWS

CUDA C GETTING STARTED GUIDE FOR MICROSOFT WINDOWS
CUDA C GETTING STARTED GUIDE FOR MICROSOFT WINDOWS

如何用FFmpeg编写一个简单播放器详细步骤介绍

如何用FFmpeg编写一个简单播放器详细步骤介绍(转载) FFmpeg, 播放器, 编写 FFMPEG是一个很好的库,可以用来创建视频应用或者生成特定的工具。FFMPEG 几乎为你把所有的繁重工作都做了,比如解码、编码、复用和解复用。这使得多媒体应用程序变得容易编写。它是一个简单的,用C编写的,快速的并且能够解码几乎所有你能用到的格式,当然也包括编码多种格式。 唯一的问题是它的文档基本上是没有的。有一个单独的指导讲了它的基本原理另外还有一个使用doxygen生成的文档。这就是为什么当我决定研究 FFMPEG来弄清楚音视频应用程序是如何工作的过程中,我决定把这个过程用文档的形式记录并且发布出来作为初学指导的原因。 在FFMPEG工程中有一个示例的程序叫作ffplay。它是一个用C编写的利用ffmpeg来实现完整视频播放的简单播放器。这个指导将从原来Martin Bohme写的一个更新版本的指导开始(我借鉴了一些),基于Fabrice Bellard的ffplay,我将从那里开发一个可以使用的视频播放器。在每一个指导中,我将介绍一个或者两个新的思想并且讲解我们如何来实现它。每一个指导都会有一个C源文件,你可以下载,编译并沿着这条思路来自己做。源文件将向你展示一个真正的程序是如何运行,我们如何来调用所有的部件,也将告诉你在这个指导中技术实现的细节并不重要。当我们结束这个指导的时候,我们将有一个少于1000行代码的可以工作的视频播放器。 在写播放器的过程中,我们将使用SDL来输出音频和视频。SDL是一个优秀的跨平台的多媒体库,被用在MPEG播放、模拟器和很多视频游戏中。你将需要下载并安装SDL开发库到你的系统中,以便于编译这个指导中的程序。 这篇指导适用于具有相当编程背景的人。至少至少应该懂得C并且有队列和互斥量等概念。你应当了解基本的多媒体中的像波形一类的概念,但是你不必知道的太多,因为我将在这篇指导中介绍很多这样的概念。 更新:我修正了在指导7和8中的一些代码错误,也添加-lavutil参数。欢迎给我发邮件到dranger@https://www.doczj.com/doc/0f7280283.html,,讨论关于程序问题、疑问、注释、思路、特性等任何的问题 指导1:制作屏幕录像 源代码:tutorial01.c

linux编译ffmpeg支持x264,x265

linux 编译ffmpeg 支持x264, x265 1. 前言 本教程涉及的ffmpeg, x264, x2652. 环境依赖 2.1 删除系统中安装的ffmpeg等库 [plain] view plain copy sudo apt-get --purge remove ffmpeg mplayer x264 x265 2.2 安装依赖库 [plain] view plain copy sudo apt-get update sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev \ libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \ libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev 注: 服务器版本可忽略 libsdl1.2-dev libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev2.3 下载源代码 (1) ffmpeg [plain] view plain copy git clone git://https://www.doczj.com/doc/0f7280283.html,/ffmpeg.git ffmpeg

(2) x264[plain] view plain copy <pre name="code" class="plain"><pre name="code" class="plain">git clone git://https://www.doczj.com/doc/0f7280283.html,/x264.git (3) x265[plain] view plain copy hg clone https://https://www.doczj.com/doc/0f7280283.html,/multicoreware/x265 (4) yasm yasm 是x86平台的一个汇编优化器, 能够加快ffmpeg x264的编译 [plain] view plain copy wget https://www.doczj.com/doc/0f7280283.html,/projects/yasm/releases/yasm-1.3.0.ta r.gz tar xzvf yasm-1.3.0.tar.gz 3. 编译 3.1 配置编译输出目录 [plain] view plain copy export FFMPEG_PATH="YOUR_PATH" export PATH="$FFMPEG_PATH/bin:$PATH" 例如我输出目录为$HOME/ffmpeg_2.6.3/build_out 那么: [plain] view plain copy export

视频解码中用到的ffmpeg交叉编译技巧

视频解码中用到的ffmpeg交叉编译技巧 一、简介 FFmpeg是一个集录制,转换,音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。 由于ffmpeg是基于linux开发的,源代码和windows下最常见的visual studio提供的c/c++编译器不兼容,因此不能直接使用msvc++编译,想要使用ffmpeg,需要在windows下配置一个类似Linux 的编译环境,并将ffmpeg编译为二进制库以后,再利用其进行进一步开发。 目前,windows下可直接使用的最新版本是由ffmpeg工程组,于2008年4月份发布的ffmpeg full sdk v3.2。该sdk尽可能的集成了更多的编解码器。 在应用中,使用该开发包存在2个缺陷,第一,该sdk编译基于ffmpeg r12790,编解码效率上,当前已经有了较大的提升;第二,该开发包包含了很多不需要的编解码器,需要尽可能减少开发包的体积及关联的库的个数。基于以上需求,需要自己编译出windows下可用动态库及静态库。 使用到的库文件有4个,libavcodec,libavformat,libavutil,libswscale,其中库 libavcodec,libavformat用于对媒体文件进行处理,如编解码;libavutil是一个通用的小型函数库,该库中实现了CRC校验码的产生,128位整数数学,最大公约数,整数开方,整数取对数,内存分配,大端小端格式的转换等功能,libswscale主要用于图像格式转换及缩放。因效率的需要,我们选择了 ffmpeg-mt版本,同时通过配置编译尽量减少相关文件的体积。 网上类似编译过程说明较多,但实际编译过程中碰到一些问题,这些问题的解决花费了不少时间,本文档对这一过程进行记录,以便后续维护及学习。 二、编译环境搭建 windows下ffmpeg编译环境有多种可选择方案。这里我们使用MinGW+MSYS。 1.下载mingw+msys并安装 https://www.doczj.com/doc/0f7280283.html,/projects/mingw/ mingw,默认安装,在choose components时选择g++ compiler及MinGW Make Msys,默认安装, Do you wish to continue with the post install【yn】,y! Do you have mingw installed?【yn】,y Where is your mingw installation? C:/mingw

linphone分析

目录 1 LINP HONE 的编译3 1.1 LINPHONE 在ARM 上的编译环境说明3 1.2 LINPHONE 依赖的库3 1.3 LINPHONE 编译脚本3 1.4 编译过程中的问题4 2 LINP HONE 代码分析4 2.1 LINPHONE 的初始化分析4 2.1.1 LINPHONEC 的初始化5 2.1.2 LINPHONE_CORE 的初始化5 2.1.3 ORTP 的初始化5 2.1.4 MEDIASTREAM2 的初始化6 2.1.5 EXOSIP 的初始化6 2.2 LINPHONE 的通话过程分析6 2.2.1 LINPHONE 的命令处理分析7 2.2.2 LINPHONE 的呼叫过程分析7 2.2.3 LINPHONE 的通话过程分析8 2.2.4 LINPHONE 的响应过程分析8 2.3 LINPHONE 中创建以及应用自定义过滤器9 2.3.1 过滤器的基本功能9 2.3.2 过滤器的通用接口10 2.3.3 自定义过滤器10 Linphone 的编译与代码分析 1 Linphone 的编译 1.1 Linphone 在arm 上的编译环境说明 Linphone 在arm 上编译的时候,时常会碰到一些问题,有时候想办法解决了相关的问题,但编译出来的Linphone 在板子上的运行仍然不稳定,或者不能通话。 如果条件允许的话,当碰到这些问题之后,可以换其它的工具链进行编译。我最初编译Linphone 的时候采用的是xscale270 板子自带的工具链,GCC3.4.3 以及uclibc。经过很痛苦 的一番折腾之后,所以的代码最终都编译通过,但是编译出来的linphonec 在板子上运行在通话开始之后总是崩溃。通过GDB 调试,发现是多线程的问题引起的,于是编译了一个线程结构相当的程序,但是测试没有发现问题。 最后,我改用GCC4.0.0 以及Glibc-2.3.5 基本上没有碰到什么问题,直接编译通过,并 且在板子上正常运行。 1.2 Linphone 依赖的库 除了上面所提到的Gcc,Glibc 以及系统的基本库外我主要编译了下面的程序包。 序号库名称说明 1 ReadLine 一个终端显示库,Linphone 会用到它时里面的事件循环机制来读取会话事件。 2 ffmpeg 音视频编解码库 3 Speex 专为通话过程设计的音频编码库 4 libtheora 视频压缩编码库 5 libfaac mpeg4 的音频编码器 6 libfaad2 AAC 音频解码器

语音模块使用说明(tmp)

语音模块使用说明 一、软件包 gsm-1.0-pl12 GSM编解码库 alsa-lib-1.0.14 ALSA用户层控制函数库,内核语音模块需要支持ALSA alsa-utils-1.0.14 ALSA工具集,依赖于alsa-lib,该工具集提供amixer进行音量调节 libogg-1.1.4 通用开源语音编解码库 speex-1..2rc1 SPEEX开源语音编码协议库,编译linphone需要该库 live555-20100409 livemedia 多媒体支持库,vlc需要该库支持语音多播功能 ffmpeg-0.5 多媒体编码支持库,支持多种格式语音、视频编解码,本项目中使用到该库的a-law, u-law 语音编解码用于语音多播功能 libosip2-3.3.0 SIP协议库 libeXosip2-3.3.0 基于libosip2的SIP协议扩展库,支持更方便的SIP协议API,编译linphone需要该库 linphone-3.2.1 SIP软件电话,需要语音编解码库libogg,gsm,speex的支持,以及SIP协议库libosip2,libeXosip2的支持 vlc VLC流媒体软件,支持流媒体播放功能,需要语音编解码库ffmpeg,流媒体广播库live555的支持 net-control 网络控制功能软件包,提供与语音控制相关的网络接口

二、语音功能与软件包对照列表 点对点呼叫功能: 该功能使用linphone软件包提供的linphonec配合linphonecsh命令接口实现,默认情况下所有需要支持该功能的终端在启动时自动运行linphonec,需要呼叫时由网络模块调用linphonecsh命令接口控制linphonec完成相关功能。 点对多点广播功能: 该功能使用vlc软件包提供的vlc完成,默认情况下vlc不运行,在需要进行网络广播时,由网络控制模块调用vlc加入指定的多播组实现语音广播功能,广播完成后网络控制模块终止vlc的运行。 三、语音模块软件包的编译 前置条件: 安装交叉编译工具链 设置编译环境: 根据编译主机目录环境及交叉编译工具链的安装路径,设定sip-phone/目录下的env.sh.sample中的参数,设置完成后使用 $source ./env.sh.sample 导入编译设定参数 开始编译: 完成编译环境的设置后,运行自动编译脚本 $./make_world.sh 将自动编译生成根文件系统 四、编译环境各目录及文件说明 packages/目录中存放语音模块相关软件包的源代码 skeleton/目录中存放参考根文件系统的目录结构框架及基本配置文件 tools/目录中存放编译各软件包以及生成根文件系统的脚本 env.sh.example参考的编译环境设置文件

windows下使用MinGW+msys编译ffmpeg

C++:windows下使用MinGW+msys编译ffmpeg FFmpeg是在Linux平台下开发的,但它同样也可以在其它操作系统环境中编译运行,本文介绍的就是在windowsXP下编译FFmpeg。 一准备环境: 1 下载mingw 和MSYS 去https://www.doczj.com/doc/0f7280283.html,/projects/mingw/ 下载 A 点击“DownLoad mingw-get-inst-...exe”; B 切换到页面:download? Check your browser's security bar, or try a direct link, or try another mirror. ; C 点击“direct link”下载类似:mingw-get-inst-20110802.exe 的文件。 提示:msys此处就不用下载了,mingw-get-inst-20110802.exe 中已经包含了msys1.0,后面安装的时候就可以看到该选项。 2 下载yasm ffmpeg编译里面的汇编代码需要yasm.exe 去官网:https://www.doczj.com/doc/0f7280283.html,/Download.html 下载 直接下载:Win32 .exe (for general use on 32-bit Windows) 文件名为:yasm-1.1.0-win32.exe 3 下载ffmpeg ffmpeg可以到https://www.doczj.com/doc/0f7280283.html,/releases/ 下载 本人选择的是最新版本:ffmpeg-0.8.5.tar.gz 文件名为:ffmpeg-0.8.5.tar.gz 4 下载SDL SDL下载可以到:https://www.doczj.com/doc/0f7280283.html,/download-1.2.php 选择:SDL-1.2.14.tar.gz - GPG signed 此版本需要自己编译,后面会解释为什么下载该版本,而不下载编译好的 SDL-devel-1.2.14-mingw32.tar.gz (Mingw32) 5 下载pthreadGC2.dll pthreadgc2.dll是功能强大的处理数字化影视作品编辑软件premiere6运行所需

ffmpeg、jrtp、SDL的交叉编译

ffmpeg、jrtp、SDL的交叉编译 https://www.doczj.com/doc/0f7280283.html,/weili8607/blog/item/b8c30a3c1ad80308baa16777.html 2009-05-26 10:33 因为需要,重新使用最新的交叉编译器arm-linux-gcc 4.3.2编译了所需要的SDL、ffmpeg、rtp库。其他交叉编译器过程类似,可能遇到不同的问题,视情况解决。 一、SDL的编译 SDL-1.2.13。 ./configure --prefix=/weili/SDL --disable-video-qtopia --disable-video-dummy --disable-video-fbcon --disable-video-dga --disable-arts --disable-esd --disable-alsa --disable-cdrom --disable-video-x11 --disable-nasm --target=arm-linux --host=arm-linux --enable-video-fbcon make make install 看情况改变prefix目录和各种选项。make install之后便在prefix目录下生成所需的动态库和include头文件等等。 二、jrtp的编译 编译rtp库要先编译jthread库,然后在编译jrtp库。我使用的是jthread-1.2.1.tar.gz jrtplib-3.7.1.tar.gz。 1. 进入jthread-1. 2.1 ./configure -host=arm-linux -prefix=/weili/jthread/ make make install 这样jthread库就安装在了/weili/jthread/lib下面了 libjthread.so 2.进入jrtplib- 3.7.1 ./configure --host=arm-linux -prefix=/weili/jrtp/

ffmpeg移植Android方法以及常见问题汇总

ffmpeg移植Android方法以及常见问题汇总: 1.在ffmpeg官网下载源码包,比如ffmpeg- 2.3。在ffmpeg目录下增加Android.mk 和av. mk config.sh三个文件。 2.config.sh用于配置ffmpeg环境脚本,可键入 #!/bin/sh PREBUILT=...android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/lin ux-x86 PLATFORM=...android-ndk-r7b/platforms/android-14/arch-arm export TMPDIR=.../ tmp ./configure --target-os=linux \ --arch=arm \ --enable-cross-compile \ --cc=$PREBUILT/bin/arm-linux-androideabi-gcc-4.4.3 \ --cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \ --nm=$PREBUILT/bin/arm-linux-androideabi-nm \ --extra-cflags="-fPIC -DANDROID" \ --enable-static \ --disable-shared \ --disable-asm \ --disable-yasm \ --extra-ldflags="-Wl,-T,$PREBUILT/arm-linux-androideabi/lib/ldscripts/armelf_li nux_eabi.x -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib $PRE BUILT/lib/gcc/arm-linux-androideabi/4.4.3/crtbegin.o $PREBUILT/lib/gcc/arm-linu x-androideabi/4.4.3/crtend.o -lc -lm -ldl" PREBUILT、PLATFORM、TMPDIR是需要修改的,配置自己的ndk路径,通常这一步出错概率极高。TMPDIR路径一定要存在且可以访问。 常见错误: arm-linux-androideabi-gcc is unable to create an executable file,一般是tmp文件没有设置。 Unknown C compiler /toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin / arm-linux-androideabi-gcc,一般是NDK配置错误。 ./config.sh: line 8: --arch: command not found,./configure每一个参数后的转行符号\,注意后面不要有空格符,另外也有可能是字符格式错误,要转为unix,在vim里 :se t ff=unix保存退出。 --cc、--cross-prefix、--nm、--extra-ldflags注意配置路径要正确,否则脚本执行失败。

ffmpeg开发指南(经典)

ffmpeg开发指南(使用 libavformat 和 libavcodec) Ffmpeg 中的Libavformat和 libavcodec库是访问大多数视频文件格式的一个很好的方法。不幸的是,在开发您自己的程序时,这套库基本上没有提供什么实际的文档可以用来作为参考(至少我没有找到任何文档),并且它的例程也并没有太多的帮助。 这种情况意味着,当我在最近某个项目中需要用到 libavformat/libavcodec 库时,需要作很多试验来搞清楚怎样使用它们。这里是我所学习的--希望我做的这些能够帮助一些人,以免他们重蹈我的覆辙,作同样的试验,遇到同样的错误。你还可以从这里下载一个demo程序。我将要公开的这部分代码需要0.4.8 版本的ffmpeg库中的 libavformat/libavcodec 的支持(我正在写最新版本)。如果您发现以后的版本与我写的程序不能兼容,请告知我。 在这个文档里,我仅仅涉及到如何从文件中读入视频流;音频流使用几乎同样的方法可以工作的很好,不过,我并没有实际使用过它们,所以,我没于办法提供任何示例代码。 或许您会觉得奇怪,为什么需要两个库文件 libavformat 和 libavcodec :许多视频文件格式(AVI就是一个最好的例子)实际上并没有明确指出应该使用哪种编码来解析音频和视频数据;它们只是定义了音频流和视频流(或者,有可能是多个音频视频流)如何被绑定在一个文件里面。这就是为什么有时候,当你打开了一个AVI文件时,你只能听到声音,却不能看到图象--因为你的系统没有安装合适的视频解码器。所以, libavformat 用来处理解析视频文件并将包含在其中的流分离出来,而libavcodec 则处理原始音频和视频流的解码。 1打开视频文件: 首先第一件事情--让我们来看看怎样打开一个视频文件并从中得到流。我们要做的第一件事情就是初始化libavformat/libavcodec: av_register_all(); 这一步注册库中含有的所有可用的文件格式和编码器,这样当打开一个文件时,它们才能够自动选择相应的文件格式和编码器。要注意你只需调用一次 av_register_all(),所以,尽可能的在你的初始代码中使用它。如果你愿意,你可以仅仅注册个人的文件格式和编码,不过,通常你不得不这么做却没有什么原因。 2下一步,打开文件: AVFormatContext *pFormatCtx; const char *filename="myvideo.mpg"; // 打开视频文件 if(av_open_input_file(&pFormatCtx, filename, NULL, 0, NULL)!=0) handle_error(); // 不能打开此文件

windows下基于MinGW编译ffmpeg之初级篇(release v1.0.2)

windows 下基于 MinGW 编译 ffmpeg 之初级篇
蓝海
文档密级
密级 公开 允许在网上共享与传阅
备注
版本历史
版本 1.0.0 1.0.1 1.0.2
时间 2013/12/06 2013/12/10 2014/3/21 初始版本 加上例子使用章节
备注
根据网友使用过程反馈,修改一些语句,同时加上更详细的 截图信息
Copyright ? 蓝海. All rights reserved.
- I -

目录
1. 2. 3. 4. 5. 6. 7. 8. 9. 前言........................................................................................................................................... 1 软件列表................................................................................................................................... 1 安装 MinGW ............................................................................................................................. 2 配置 PATH ................................................................................................................................. 4 安装 yasm ................................................................................................................................. 5 安装 LIB.EXE.............................................................................................................................. 5 安装 pkg-config......................................................................................................................... 5 安装 SDL.................................................................................................................................... 6 编译安装 FFMPEG .................................................................................................................... 7 10.1. 解码播放视频................................................................................................................ 10 10.2. 转换视频格式,MP4toTS ............................................................................................. 11 10.3. 解码前 1 分钟视频存为 YUV........................................................................................ 11 10.4. 解码并保存一帧为 JPG 图像 ........................................................................................ 11 10.5. 解码并保存一帧为 JPG 图像,带缩放 ........................................................................ 12 10.6. 解码前 30 帧并保存为 GIF 图像 .................................................................................. 12 10.7. 解码前 30 帧并保存为 GIF 图像,带缩放 .................................................................. 13 10.8. 解码播放音频................................................................................................................ 13 11. 参考资料................................................................................................................................. 14
10. FFMPEG 小试牛刀 .................................................................................................................... 9
Copyright ? 蓝海. All rights reserved.
- II -

ffmpeg绝对编译指南

编译集成ffmpeg指南 ###环境配置(centos/msys2) yum install autoconf automake cmake freetype-devel openssl-devel gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel ###参考地址 https://www.doczj.com/doc/0f7280283.html,/uid-23069658-id-4018842.html https://www.doczj.com/doc/0f7280283.html,/wanglx_/article/details/50786307 ###2.1 Yasm(git clone --depth 1 git://https://www.doczj.com/doc/0f7280283.html,/yasm/yasm.git) 汇编器,编译x264,ffmpeg会用到 autoreconf -fiv ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make make install make distclean ###libx264 (git clone --depth 1 git://https://www.doczj.com/doc/0f7280283.html,/x264) H264编码库,开启需要在FFmpeg的configure中指定:--enable-gpl 和--enable-libx264 ./configure --prefix="$HOME/ffmpeg_build" --enable-static --enable-shared make make install make distclean ###初始pkgconfig(必须) export PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ###libx265(hg clone https://https://www.doczj.com/doc/0f7280283.html,/multicoreware/x265) H265编码库,开启需要在FFmpeg的configure中指定:--enable-gpl 和--enable-libx265 cd 到/x265/build/msys目录下执行对应.sh文件,稍后在cmake弹框中编辑安装目录 make make install ###libfdk_aac(git clone --depth 1 git://https://www.doczj.com/doc/0f7280283.html,/p/opencore-amr/fdk-aac) AAC编码库,开启需要在FFmpeg的configure中指定:--enable-libfdk-aac autoreconf -fiv ./configure --prefix="$HOME/ffmpeg_build" --enable-shared --enable-static SPEEXDSP_CFLAGS="$HOME/ffmpeg_build/include" SPEEXDSP_LIBS="$HOME/ffmpeg_build/lib" OGG_CFLAGS="$HOME/ffmpeg_build/include" OGG_LIBS="$HOME/ffmpeg_build/lib" make make install make distclean

关于APP开发架构规划

App后台开发架构实践笔记 1 App后台入门 1.1 App后台的功能 (1)远程存储数据; (2)消息中转。 1.2 App后台架构 架构设计的流程 (1)根据App的设计,梳理出App的业务流程; (2)把每个业务流程可能会遇到的问题整理出来; (3)根据整理出来的问题,探讨可行的技术解决方案; (4)把所有的技术解决方案有机融合,就是一个App后台的初步架构。架构设计的特点 (1)架构是和业务紧密相关; (2)架构的演变是由业务驱动; (3)架构不是为了炫耀技术。 1.3 App和App后台的通信 (1)用HTTP协议还是私有协议; (2)用长连接还是短连接; (3)通信数据格式(JSON、XML)

1.4 选择服务器 (1)传统IDC; (2)云服务器。 1.5 选择开发语言 (1)不同语言有其擅长的业务场景和性能特性;(2)考虑开发效率和运行效率; (3)同一个项目不同业务逻辑可以用不同语言实现。 1.6 敏捷开发 (1)Sprint计划会议; (2)迭代开发; (3)每日例会; (4)评审会议; (5)回顾会议; (6)及时反馈。 2 App后台基础技术 2.1 从业务逻辑提炼API接口 从业务逻辑到提炼API可分为下面6个阶段: (1)业务逻辑思维导图; 根据需求抽象出业务逻辑。

(2)功能-业务逻辑思维导图; 支撑业务逻辑的功能模块, (3)基本功能模块关系; 功能模块设计; (4)功能模块设计UML; (5)设计API; (6)编写API文档。 Swagger-UI在线API测试文档,测试驱动开发(TDD)。 2.2 设计API的要点 (1)根据对象设计API; (2)API命名规范; (3)API安全性; (4)API返回数据; (5)图片处理方式; (6)返回的提示信息; (7)在线API测试文档; (8)API版本升级。 2.3 选择合适的数据库产品

FFMPEG的移植与使用

FFMPEG的移植与使用 前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了。今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家分享一下,顺便做了一下记录以备以后使用时参考。 本文(记录)与目前网上很多关于ffmpeg的文章相比有两个特点: 一、重点不在于ffmpeg的解码部分(这个本来是ffmpeg最大的亮点),为什么?前面说了,这是我以前工作的一个整理。况且关于ffmpeg的解码相关文章非常多了,如果大家感兴趣的话,可以后面第五部分增加吧。 二、本文是不采用其他第三方的开源多媒体框架而在嵌入式硬件上做多媒体播放项目。第三方的多媒体框架软件隐藏了一些扩展数据的关键处理,很多初学者可能不清楚这些细节问题,所以当ffmepg在自己的解码移植上没有问题,真正在用嵌入式硬件进行解码时会遇到这种问题。 下载最新版本的ffmpeg-3.1.1,解压 配置: 配置后会输出以下信息,有几点较为有用,列举如下: 分别是: 库安装的位置 不知道

所用c编译器 所用C库 主机的c编译器 主机的c库 库安装后所支持的平台 是否支持大端 是否支持shared 是否支持static 是否支持network 是否支持threading 是否支持SDL 生成的工具(注意没有生成ffplay,尚未找到解决方案) 支持的解码格式,图片仅截取一小部分) 支持的编码格式(图片仅截取一小部分) 支持的协议,如tcp,udp,ftp,http等 支持的输入设备 支持的输出设备 遵循的协议

然后进行make编译,再make install 在Linux目录下,编译成功,生成我们的动态库: 这样我们生产了我们需要的动态库和头文件。 将bin目录下的工具拷贝到开发板/bin目录下,修改权限,运行./ffmpeg,根据报错逐一复制lib目录下的库到开发板的/lib目录下,注意大部分库是链接,要复制原文件,然后创建链接 这个过程很繁琐,坚持下去 下面介绍ffmpeg的应用 1.录制视频 保存成.asf文件,可以直接在pc机播放(针对V4L2,当然ffmpeg也支持其他设备,如vfwcap,) 命令: ffmpeg -f video4linux2 -s 320*240 -r 10 -i /dev/video4 test.asf -f fmt force format -s size 指明大小,size=宽*高 set frame size (WxH or abbreviation) -r rate set frame rate (Hz value, fraction or abbreviation) -i 视频输入设备 最后接输出文件 由于摄像头分辨率较低,所以大小还是不要设置太大,不然视频很不清晰此,像素点都变成方块显示出来了,亲测 输出参数:包含大小,时间长度,帧数 其他有用选项 -fs limit_size set the limit file size in bytes,设置输出文件的大小 -ss time_off set the start time offset 设置启动录制视频事件 -sseof time_off set the start time offset relative to EOF 设置视频拍摄长度

arm环境下opencv编译

1、下载opencv的源文件当前是0.9.9,并解压缩 2、在工作路径运行配置命令 ./configure --host=arm-linux --without-gtk --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --disable-shared --disable-apps CXX=arm-linux-g++ CPPFLAGS=-I/opt/crosstools/gcc-3.4.6-glibc-2.3/ --prefix=/usr/opencv/ CPPFLAGS所指的头文件和库文件位置应当是arm编译器的所对应的路径,否则会出现编译异常,对宏FD_ZERO的识别问题。 3、执行make,make insatall,这时在/usr/opencv下生成相应的文件。 为了加入gtk的支持 使用下面的 ./configure --host=arm-linux --prefix=$PREFIX --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --disable-shared --disable-apps CXX=arm-linux-g++ CPPFLAGS=-I/opt/gtkdfb/usr/local/include 参数CPPFLAGS=-I/opt/gtkdfb/usr/local/include只要指明了gtk相关库的位置 GTHREAD_CFLAGS = -pthread -I/opt/gtkdfb/usr/local/include/glib-2.0 -I/opt/gtkdfb/usr/local/include/glib-2.0/glib GTHREAD_LIBS = -pthread -lgthread-2.0 -lglib-2.0 GTK_CFLAGS = -DXTHREADS -D_REENTRANT -DXUSE_MTSAFE_API -I/opt/gtkdfb/usr/local/include/gtk-2.0-I/opt/gtkdfb/usr/local/gtk-2.0/gtk -I/opt/gtkdfb/usr/local/gtk-2.0/gdk -I/opt/gtkdfb/usr/local/gtk-2.0/gdk-pixbuf -I/opt/gtkdfb/usr/local/include/atk-1.0/atk -I/opt/gtkdfb/usr/local/include/pango-1.0/pango -I/opt/gtkdfb/usr/local/include/freetype2/freetype -I/opt/gtkdfb/usr/local/include/freetype2/freetype/config -I/opt/gtkdfb/usr/local/include/glib-2.0 -I/opt/gtkdfb/usr/local/include/glib-2.0/glib GTK_LIBS = -Wl,--export-dynamic -lgtk-2.0 -lgdk-2.0 -latk-1.0 -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgdk_pixbuf-2.0 -lm -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 实际编译采用的过程 1、下载opencv的源文件当前是1.0.0,并解压缩 2、修改configure文件设置GTK的安装路径 3、export PERFIX=/用户的指定安装路径 4、./configure --host=arm-linux --prefix=$PREFIX --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --disable-static --enable-shared --disable-apps CXX=arm-linux-g++ CPPFLAGS=-I/opt/gtkdfb/usr/local/include 5、make 6、make install 7、拷贝opencv.pc到指定的PKG_CONFIG_PATH变量所指定的路径中 8、转到源程序路径/安装路径/share/opencv/samples/c,使用下面的命令编译程序 9、arm-linux-g++ `pkg-config --cflags --libs opencv gtk+-2.0 gthread-2.0 pangoft2 libxml-2.0` drawing.c -o drawing

相关主题
文本预览
相关文档 最新文档