在Ubuntu Server上编译FFmpeg

FFmpeg是最流行的开源视频转码工具包,在Ubuntu上可以直接通过apt-get安装,但是默认的编码器不提供x264这些non-free的编码器,所以需要自己编译。

FFmpeg官方给出了详细的编译步骤:

https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

本文和官方指南相比,主要在于改进了以下几处:

  1. 编译的bin目录不放到某个用户目录下,而是放到/opt/bin下面;
  2. 不使用git/hg下载snapshot的源码版本,而是直接下载稳定版。

以下测试在Ubuntu Server 14.04下通过。

首先,用apt-get updateapt-get upgrade把系统升级到最新版,然后,安装以下软件包:

apt-get install autoconf automake build-essential libass-dev libfreetype6-dev  libtheora-dev libtool libvorbis-dev pkg-config texinfo zlib1g-dev unzip cmake yasm libx264-dev libmp3lame-dev libopus-dev

FFmpeg依赖的几个软件包有个最低版本要求:

yasm >= 1.2.0libx264-dev >= 0.118libmp3lame-dev >= 3.98.3libopus-dev >= 1.1

这几个包在Ubuntu 14.04上都符合FFmpeg的要求,所以可以直接用apt-get安装。如果是其它版本的Linux,就需要自己检查版本。

注意,因为这个FFmpeg是作为服务器使用的,所以不含ffplay的依赖包。如果想要在桌面使用,还需要安装以下软件包:

libsdl1.2-dev libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev

接下来需要下载并编译的是x265,fdk-aac,vpx和ffmpeg本身。

先创建如下目录结构:

/opt
  +- ffmpeg_sources/
  +- ffmpeg_build/
  +- bin/

然后,把源码包下载到/opt/ffmpeg_sources/目录下。

因为不采用snapshot版本,所以我们可以直接下载某个稳定版源码。下载地址如下:

x265: https://bitbucket.org/multicoreware/x265/downloads/x265_1.9.tar.gz

fdk-aac: https://github.com/mstorsjo/fdk-aac/archive/v0.1.4.zip

vpx: http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.5.0.tar.bz2

ffmpeg: http://ffmpeg.org/releases/ffmpeg-3.0.tar.bz2

编译x265

依次执行以下命令:

cd /opt/ffmpeg_sources
tar zxvf x265_1.9.tar.gz
cd x265_1.9/build/linux
PATH="/opt/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="/opt/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install
make distclean

编译fdk-aac

依次执行以下命令:

cd /opt/ffmpeg_sources
mv v0.1.4.zip fdk-aac-v0.1.4.zip
unzip fdk-aac-v0.1.4.zip
cd fdk-aac-0.1.4
autoreconf -fiv
./configure --prefix="/opt/ffmpeg_build" --disable-shared
make
make install
make distclean

编译vp8/vp9

依次执行以下命令:

cd /opt/ffmpeg_sources
tar xjvf libvpx-1.5.0.tar.bz2
cd libvpx-1.5.0
PATH="/opt/bin:$PATH" ./configure --prefix="/opt/ffmpeg_build" --disable-examples --disable-unit-tests
PATH="/opt/bin:$PATH" make
make install
make clean

编译ffmpeg

最后一步就是编译FFmpeg了:

cd /opt/ffmpeg_sources
unzip FFmpeg-release-3.0.zip
cd FFmpeg-release-3.0
PATH="/opt/bin:$PATH" PKG_CONFIG_PATH="/opt/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="/opt/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I/opt/ffmpeg_build/include" \
  --extra-ldflags="-L/opt/ffmpeg_build/lib" \
  --bindir="/opt/bin" \
  --enable-gpl \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libtheora \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree
PATH="/opt/bin:$PATH" make
make install
make distclean
hash -r

编译时间很长很长,一切顺利的话,在/opt/bin目录下会编译出ffmpegffprobeffserver三个程序。最后,创建几个软连接,便于任意用户在任意目录下直接调用ffmpeg:

ln -s /opt/bin/ffmpeg /usr/bin/ffmpeg
ln -s /opt/bin/ffprobe /usr/bin/ffprobe
ln -s /opt/bin/ffserver /usr/bin/ffserver

ffmpeg是转码程序,ffprobe可以用来分析视频文件,ffserver可以实现流媒体服务器。

<think>好的,用户想在Ubuntu系统上部署ZLMediakit,需要详细的安装配置教程。首先,我要回忆之前提供的引用内容,确保信息准确。 根据引用[2]和[4],安装步骤主要包括安装依赖库、获取源码、编译和配置。用户的环境应该是Ubuntu 22.04,gcc和g++版本11.4.0。需要确认依赖库是否正确,比如libsrtp2-dev、libusrsctp-dev这些是WebRTC功能必需的。然后源码获取部分,用户可能需要从gitee克隆,特别是国内用户,避免GitHub的延迟。 编译步骤方面,引用[4]提到创建build目录,执行cmake和make命令。这里需要注意是否要启用其他功能,比如在cmake时添加参数,但用户可能只需要基础功能,所以保持默认即可。编译完成后,启动服务的方式可能有不同,比如直接运行MediaServer,或者通过systemd管理。 配置部分,引用[3]提到修改config.ini文件,可能需要调整端口或日志路径。用户可能需要了解配置文件的位置和关键参数,比如http端口或ssl设置。此外,测试部分也很重要,比如使用ffmpeg推流,或者通过Web界面验证服务是否正常。 可能的问题包括依赖库安装失败、编译错误、配置文件路径错误等。需要提醒用户检查依赖版本,确保git submodule更新,以及编译时的权限问题。另外,如果用户需要Docker部署,引用[3]提到docker版zlmediakit,可能需要分情况说明源码部署和Docker部署两种方式。 最后,生成的相关问题要覆盖常见疑问,比如依赖安装问题、编译失败处理、配置文件修改、测试方法以及Docker部署选项。这样用户可以根据自己的需求进一步查阅。</think>### Ubuntu系统部署ZLMediaKit完整教程 #### 一、环境准备 1. 操作系统要求:Ubuntu 20.04/22.04 LTS(推荐使用22.04版本)[^2][^4] 2. 安装编译工具链: ```bash sudo apt update && sudo apt install -y build-essential cmake pkg-config ``` 3. 验证GCC版本: ```bash gcc --version # 要求≥7.0,推荐≥9.0 ``` #### 二、安装依赖库 ```bash # 核心依赖(必须安装) sudo apt install -y libssl-dev libsrtp2-dev libusrsctp-dev # 可选功能依赖 sudo apt install -y libsdl-dev libavcodec-dev libavutil-dev ffmpeg # 验证依赖版本 pkg-config --modversion libcrypto # 应≥1.1.1 pkg-config --modversion libsrtp2 # 应≥2.4.2 ``` #### 三、获取源码 ```bash git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit # 国内推荐镜像 cd ZLMediaKit git submodule update --init # 必须执行子模块初始化 ``` #### 四、编译项目 ```bash mkdir build && cd build cmake .. -DENABLE_WEBRTC=ON # 启用WebRTC功能 make -j$(nproc) # 根据CPU核心数并行编译 ``` 编译完成后生成的可执行文件位于`release/linux/Debug`目录 #### 五、配置与启动 1. 修改配置文件: ```bash vim ../conf/config.ini # 调整端口、日志路径等参数[^3] ``` 关键配置项: ```ini [http] port=80 # HTTP服务端口 sslport=443 # HTTPS服务端口 [rtmp] port=1935 # RTMP服务端口 ``` 2. 启动服务: ```bash ./MediaServer -d & # 后台运行 ``` #### 六、验证部署 1. 检查服务状态: ```bash netstat -tunlp | grep MediaServer ``` 2. 推流测试: ```bash ffmpeg -re -i test.mp4 -c copy -f flv rtmp://127.0.0.1/live/stream ``` 3. 播放测试: ```bash ffplay rtmp://127.0.0.1/live/stream ``` #### 七、Docker部署(可选) 参考docker-compose部署方式: ```bash docker run -d -p 1935:1935 -p 80:80 -p 443:443 \ -v /path/to/config.ini:/media/conf/config.ini \ zlmediakit/zlmediakit ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值