当前位置: 首页 > news >正文

怎样做网站的快捷方式最新天气预报最新消息

怎样做网站的快捷方式,最新天气预报最新消息,做一个游戏app要多少钱,网络营销到底是个啥文章目录 前言前提须知为什么要自己编译 FFmpeg前提软件包与工具的安装编译ffmpeg写CMakeList.txt包含ffmpeg到我们项目中 总结 前言 FFmpeg 是一个领先的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有人类和机器创造的内容。FFmpeg 包…

文章目录

  • 前言
    • 前提须知
    • 为什么要自己编译 FFmpeg
    • 前提软件包与工具的安装
    • 编译ffmpeg
    • 写CMakeList.txt包含ffmpeg到我们项目中
  • 总结


前言

FFmpeg 是一个领先的多媒体框架,能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有人类和机器创造的内容。FFmpeg 包含 libavcodec,这是一个可以用来处理音频和视频数据的强大库。本文将介绍如何在 Ubuntu 上编译 FFmpeg,并创建一个使用 CMake 的示例项目,以验证 FFmpeg 库的正确安装和配置。


前提须知

其实我们不必自己编译ffmpeg,如果你的ubuntu已经安装了ffmpeg的话,你可以在/usr/include/x86_64-linux-gnu找到ffmpeg的头文件。在/usr/lib/x86_64-linux-gnu里面可以找到.a静态库

如果你使用这种方式,你可以有下面这个CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.10)
project(ffmpeg_test)# 设置C标准
set(CMAKE_C_STANDARD 99)# 查找FFmpeg库
find_package(PkgConfig REQUIRED)
pkg_check_modules(AVFORMAT REQUIRED libavformat)
pkg_check_modules(AVCODEC REQUIRED libavcodec)
pkg_check_modules(AVUTIL REQUIRED libavutil)# 包含FFmpeg头文件路径
include_directories(${AVFORMAT_INCLUDE_DIRS})
include_directories(${AVCODEC_INCLUDE_DIRS})
include_directories(${AVUTIL_INCLUDE_DIRS})# 添加可执行文件
add_executable(ffmpeg_test main.c)# 链接FFmpeg库
target_link_libraries(ffmpeg_test ${AVFORMAT_LIBRARIES} ${AVCODEC_LIBRARIES} ${AVUTIL_LIBRARIES})

并有这样的main文件:

#include <stdio.h>
#include "include/libavcodec/avcodec.h"
#include "include/libavformat/avformat.h"
#include "include/libavutil/avutil.h"int main() {printf("FFmpeg version: %s\n", av_version_info());return 0;
}

我们可以通过cmake ..+make的操作来得到可执行文件:

ubuntu@ubuntu-virtual-machine:~/MyFFMPEG/template_c$ ls
build  CMakeLists.txt  include  lib  main.c
ubuntu@ubuntu-virtual-machine:~/MyFFMPEG/template_c$ cd build/
ubuntu@ubuntu-virtual-machine:~/MyFFMPEG/template_c/build$ cmake ..
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ubuntu/MyFFMPEG/template_c/build
ubuntu@ubuntu-virtual-machine:~/MyFFMPEG/template_c/build$ make
Consolidate compiler generated dependencies of target ffmpeg_test
[100%] Built target ffmpeg_test
ubuntu@ubuntu-virtual-machine:~/MyFFMPEG/template_c/build$ ./ffmpeg_test 
FFmpeg version: 7.0.1
ubuntu@ubuntu-virtual-machine:~/MyFFMPEG/template_c/build$ 

为什么要自己编译 FFmpeg

自己编译 FFmpeg 而不是使用预编译包,有几个主要原因:

  1. 最新版本

    • 预编译包通常与发行版的发布周期一致,可能并不是最新的。通过自己编译,可以确保使用最新的 FFmpeg 版本,获取最新的特性和修复。
  2. 自定义配置

    • 编译 FFmpeg 时可以指定各种配置选项,例如启用或禁用特定的编码器、解码器、滤镜或其他组件。这对于需要定制功能的项目尤为重要。
  3. 优化性能

    • 可以根据目标硬件的架构进行特定的编译优化,例如启用高级的 CPU 指令集(如 AVX、SSE)以提高性能。
  4. 减少依赖

    • 预编译包可能包含不需要的功能和依赖项,通过自己编译,可以仅包含项目所需的功能,从而减少不必要的依赖和潜在的安全风险。
  5. 集成第三方库

    • 有时需要与其他第三方库集成,例如 NVIDIA CUDA、Intel Quick Sync Video 等,通过自己编译可以轻松实现这些集成。

通过自己编译 FFmpeg,可以更好地控制其功能和性能,满足特定项目的需求。

前提软件包与工具的安装

首先,你需要在ffmpeg code download下载ffmpeg源码,如果你需要其他版本可以在More releases里面找到
在这里插入图片描述
然后你需要使用下面这个命令安装SDL2:

sudo apt install libsdl2-dev

之后,你需要安装aptitude

sudo apt install aptitude

yasmnasm是两个汇编器,编译 FFmpeg 需要用到。

sudo aptitude install yasm nasm

最后,你需要安装这些:
FFmpeg 的安装依赖许多库(如,音频编码库,音频解码库,视频编解码库等),这里不介绍每个库的具体作用,按照命令安装即可。

sudo apt-get install libgmp3-dev
sudo apt install pkg-config
sudo apt install gnutls-bin
sudo aptitude install libaom-dev
sudo aptitude install libass-dev
sudo aptitude install libbluray-dev
sudo aptitude install libfdk-aac-dev
sudo aptitude install libmp3lame-dev
sudo aptitude install libopencore-amrnb-dev
sudo aptitude install libopencore-amrwb-dev
sudo aptitude install libopenmpt-dev
sudo aptitude install libopus-dev
sudo aptitude install libshine-dev
sudo aptitude install libsnappy-dev
sudo aptitude install libsoxr-dev
sudo aptitude install libspeex-dev
sudo aptitude install libtheora-dev
sudo aptitude install libtwolame-dev
sudo aptitude install libvo-amrwbenc-dev
sudo aptitude install llibvpx-dev
sudo aptitude install libwavpack-dev
sudo aptitude install libwebp-dev
sudo aptitude install libx264-dev
sudo aptitude install libx265-dev
sudo aptitude install libxvidcore-dev
sudo aptitude install liblzma-dev

编译ffmpeg

首先,你需要先新建一个文件夹,用来保存编译后存放的内容

然后终端打开ffmpeg源码文件夹

./configure --prefix=/home/ubuntu/runffmpeg/FFMPEG --enable-shared

输出:

ubuntu@ubuntu-virtual-machine:~/runffmpeg/ffmpeg-7.0.1$ ./configure --prefix=/home/ubuntu/runffmpeg/FFMPEG --enable-shared
install prefix            /home/ubuntu/runffmpeg/FFMPEG
source path               .
C compiler                gcc
C library                 glibc
ARCH                      x86 (generic)
big-endian                no
runtime cpu detection     yes
standalone assembly       yes
x86 assembler             nasm
MMX enabled               yes
MMXEXT enabled            yes
3DNow! enabled            yes
3DNow! extended enabled   yes
SSE enabled               yes
SSSE3 enabled             yes
AESNI enabled             yes
AVX enabled               yes
AVX2 enabled              yes
AVX-512 enabled           yes
AVX-512ICL enabled        yes
XOP enabled               yes
FMA3 enabled              yes
FMA4 enabled              yes
i686 features enabled     yes
CMOV is fast              yes
EBX available             yes
EBP available             yes
debug symbols             yes
strip symbols             yes
optimize for size         no
optimizations             yes
static                    yes
shared                    yes
postprocessing support    no
network support           yes
threading support         pthreads
safe bitstream reader     yes
texi2html enabled         no
perl enabled              yes
pod2man enabled           yes
makeinfo enabled          yes
makeinfo supports HTML    yes
xmllint enabled           noExternal libraries:
alsa                    libxcb_shape            lzma                    xlib
iconv                   libxcb_shm              sdl2                    zlib
libxcb                  libxcb_xfixes           sndio
//省略.....................................
External libraries providing hardware acceleration:
libdrm                  v4l2_m2m                vaapi                   vdpauLibraries:
avcodec                 avfilter                avutil                  swscale
avdevice                avformat                swresamplePrograms:
ffmpeg                  ffplay                  ffprobe
//省略............................................
Enabled indevs:
alsa                    kmsgrab                 oss                     v4l2
fbdev                   lavfi                   sndio                   xcbgrabEnabled outdevs:
alsa                    oss                     sndio                   xv
fbdev                   sdl2                    v4l2License: LGPL version 2.1 or later

紧接着,你需要使用:

sudo make-jxx

其中xx是你Ubuntu cpu核心数
比如我是12,则是sudo make-j12
如果不这样写,就会编译的很慢
在这里插入图片描述

最后使用:

sudo make install

即可完成

ubuntu@ubuntu-virtual-machine:~/runffmpeg/FFMPEG$ tree -L 2
.
├── bin
│   ├── ffmpeg
│   ├── ffplay
│   └── ffprobe
├── include
│   ├── libavcodec
│   ├── libavdevice
│   ├── libavfilter
│   ├── libavformat
│   ├── libavutil
│   ├── libswresample
│   └── libswscale
├── lib
│   ├── libavcodec.a
│   ├── libavcodec.so -> libavcodec.so.61.3.100
│   ├── libavcodec.so.61 -> libavcodec.so.61.3.100
│   ├── libavcodec.so.61.3.100
│   ├── libavdevice.a
│   ├── libavdevice.so -> libavdevice.so.61.1.100
│   ├── libavdevice.so.61 -> libavdevice.so.61.1.100
│   ├── libavdevice.so.61.1.100
│   ├── libavfilter.a
│   ├── libavfilter.so -> libavfilter.so.10.1.100
│   ├── libavfilter.so.10 -> libavfilter.so.10.1.100
│   ├── libavfilter.so.10.1.100
│   ├── libavformat.a
│   ├── libavformat.so -> libavformat.so.61.1.100
│   ├── libavformat.so.61 -> libavformat.so.61.1.100
│   ├── libavformat.so.61.1.100
│   ├── libavutil.a
│   ├── libavutil.so -> libavutil.so.59.8.100
│   ├── libavutil.so.59 -> libavutil.so.59.8.100
│   ├── libavutil.so.59.8.100
│   ├── libswresample.a
│   ├── libswresample.so -> libswresample.so.5.1.100
│   ├── libswresample.so.5 -> libswresample.so.5.1.100
│   ├── libswresample.so.5.1.100
│   ├── libswscale.a
│   ├── libswscale.so -> libswscale.so.8.1.100
│   ├── libswscale.so.8 -> libswscale.so.8.1.100
│   ├── libswscale.so.8.1.100
│   └── pkgconfig
└── share├── doc├── ffmpeg└── man15 directories, 31 files

这里面是我们需要的东西了,我们需要includelib(*.a)里面的东西

写CMakeList.txt包含ffmpeg到我们项目中

下面就是我们的CMakeLists.txt文件了,你需要把includelib文件夹放到CMakeLists.txt同级目录下

cmake_minimum_required(VERSION 3.10)
project(ffmpeg_test C)# 设置 C 标准
set(CMAKE_C_STANDARD 99)# 指定 FFmpeg 的头文件和库文件目录
set(FFMPEG_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/include)
set(FFMPEG_LIB_DIR ${CMAKE_SOURCE_DIR}/lib)# 包含 FFmpeg 头文件目录
include_directories(${FFMPEG_INCLUDE_DIR})# 查找 FFmpeg 库
link_directories(${FFMPEG_LIB_DIR})# 添加可执行文件
add_executable(ffmpeg_test main.c)# 链接 FFmpeg 库
target_link_libraries(ffmpeg_testavcodecavformatavutil
)# 为了支持动态库,可以添加 `-Wl,-rpath=${FFMPEG_LIB_DIR}` 选项
set_target_properties(ffmpeg_test PROPERTIESLINK_FLAGS "-Wl,-rpath,${FFMPEG_LIB_DIR}"
)

总结

通过本文的步骤,我们成功地在 Ubuntu 系统上编译并安装了 FFmpeg。我们还创建了一个简单的 CMake 项目,使用 FFmpeg 库实现了一个基础的应用程序,验证了库的安装和配置。本文提供的方法不仅适用于 FFmpeg,也可以作为其他 C/C++ 库的编译和集成的参考。通过这样的实践,开发者能够更好地掌握库的使用和项目构建的技巧,为后续开发打下坚实的基础。

http://www.hkea.cn/news/723941/

相关文章:

  • web集团网站建设广告投放平台有哪些
  • 大连做网站建设广告资源对接平台
  • 做网站怎么写工作日志泉州网站seo公司
  • wordpress外链站内打开搜索引擎是什么意思啊
  • 做论坛网站需要什么备案新站seo优化快速上排名
  • 动漫网站html百度网盘搜索
  • 怎么看一个网站什么语言做的宝鸡seo培训
  • 数据库网站建设公司他达拉非片
  • 英文商城网站建设搜索引擎营销的特点
  • 易优建站系统图片百度搜索
  • 网站开发不用框架web网站设计
  • 技能网站建设项目需求武汉网络推广外包公司
  • 安卓市场下载手机版优化网站排名技巧
  • 建设网站平台哪个好互联网营销外包推广
  • 工商注册企业名称查询广东seo网站推广代运营
  • 中纪委网站两学一做征文资源平台
  • java高端网站建设现在广告行业好做吗
  • wordpress 制作下载优化关键词怎么做
  • 宁波网站建设哪个公司好百度爱采购推广怎么入驻
  • 重庆市建设工程信息网特种作业企业网站seo多少钱
  • 域名备案做电影网站制作免费个人网站
  • 公司网络营销方案优化设计七年级上册数学答案
  • 网站建设策划方案网址搜索引擎
  • 艺术培训学校系统网站怎么做百度优化是什么
  • 自己的网站做飘窗百度推广账号登录入口
  • 国内好的网站建设国内外十大免费crm软件推荐
  • 淄博品质网站建设百度销售推广
  • 网站建设学习内容网站模板哪家好
  • 建立b2b网站成本微信营销平台系统
  • 学做衣服网 缤纷网站手机百度ai入口