FFmpeg开发笔记(二):ffmpeg在ubuntu编译以及开发环境搭建

简介: FFmpeg开发笔记(二):ffmpeg在ubuntu编译以及开发环境搭建


前言

      本篇章介绍ffmpeg在ubuntu18.04上的编译以及开发环境搭建,相关交叉编译也可参考本章节。

 

FFmpeg下载

      本篇章使用当前用的多的版本,上一篇章编译的是ffmpeg4,实际4比3改了一些东西,具体这些笔者不赘述。

      本章节使用3.2.14版本。

官方下载地址:http://ffmpeg.org/download.html#releases

      CSND下载地址:https://download.csdn.net/download/qq21497936/12104638

QQ群:1047134658(点击“文件”搜索“ffmpeg-3.2.14.tar”,群内与博文同步更新)

      3.2系列最新的版本。

 

编译ffmpeg

步骤一:下载,放置到编译文件夹

步骤二:配置,缺少yasm(貌似是一个支持汇编指令优化,不用管)

      (注意:没有指定prefix参数,默认直接装到系统中去)

./configure

      改参数继续配置,改成动态库:

./configure --disable-yasm --enable-shared

步骤三:编译make

make

 

步骤四:安装sudo make install

sudo make install

步骤五(补充):对于开发安装完后需要重新加载

ldconfig

 

命令行测试

版本查看

Yuv转mpeg4格式并封装为mp4

ffmpeg -s 176x144 -pix_fmt yuv420p -i 176_144.yuv -vcodec mpeg4 176_144.mp4

 

Qt+FFmpeg环境ubuntu搭建以及工程模板

添加库(头文件默认包含在系统的include中)

添加FFmpeg搜索路径和配置,搭建步骤也参考《FFmpeg开发笔记(一):ffmpeg介绍、windows开发环境搭建(mingw和msvc)》 中的“新建FFmpeg工程”,主要是配置文件存在区别,如下:

FFmpegServer.pri(笔者使用系统头文件和库文件,此处无需额外引入了)

LIBS +=  \
        -lavcodec \
        -lavdevice \
        -lavfilter \
        -lavformat \
        -lavutil \
        -lpostproc \
        -lswscale

FFmpegMnager.h

#ifndef FFMPEGMANAGER_H
#define FFMPEGMANAGER_H
#include <QObject>
extern "C" {
    #include <libavcodec/avcodec.h>
    #include <libavformat/avformat.h>
    #include <libswscale/swscale.h>
    #include <libavdevice/avdevice.h>
    #include <libavformat/version.h>
    #include <libavutil/time.h>
    #include <libavutil/mathematics.h>
}
class FFmpegManager : public QObject
{
    Q_OBJECT
public:
    explicit FFmpegManager(QObject *parent = nullptr);
signals:
public:
    void testEnv();
};
#endif // FFMPEGMANAGER_H

FFmpegManager.cpp

#include "FFmpegManager.h"
#include <QDebug>
FFmpegManager::FFmpegManager(QObject *parent) : QObject(parent)
{
}
void FFmpegManager::testEnv()
{
    qDebug() << __FILE__ << __LINE__ << avcodec_configuration();
}

 

测试运行输出

 

工程模板v1.0.0

      工程模板v1.0.0:

  • 使用系统ffmpeg库;
  • 使用系统ffmpeg头文件;
  • 模板不带ffmpeg库(使用系统库文件);
  • 不单独带ffmpeg头文件(使用系统头文件);
  • 包含一个测试函数测试环境是否搭建成功。

入坑

入坑一:播放器播放不出yuv格式,专用播放器可以播放yuv(需要设置w、h,甚至是格式:yuv420p,yuv444等等)

原因:

yuv格式用播放器是播放不出来的,因为yuv是原始数据格式,需要设置播放的宽度和高度才能正确解析,大部分播放器不会这么智能。

解决方法:

不播放,直接使用ffmpeg命令进行转换

ffmpeg -s 176x144 -pix_fmt yuv420p -i 176_144.yuv -vcodec mpeg4 176_144.mp4

入坑二:安装ffmpeg后,工程编译成功,但是运行提示失败

原因:

      安装完ffmpeg,但是库的路径没有更新。

解决方法:

需要重启计算机或者使用命令ldconfig进行库路径更新,当然也可以设置

QT_LIBRARY_PATH=/usr/local/lib

直接引入。


相关文章
|
6天前
|
Ubuntu 数据可视化 开发工具
【VTK】ubuntu手动编译VTK9.3 Generating qmltypes file 失败
通过以上步骤,您可以成功解决在Ubuntu上编译VTK 9.3时遇到的 `Generating qmltypes file`失败的问题。关键在于确保系统正确安装了所需的Qt库,并通过CMake配置正确的路径。编译完成后,您将拥有一个功能完备的VTK库,可以用于各种可视化任务。
35 14
|
5月前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
8255 3
|
2月前
|
Ubuntu 开发工具 git
Ubuntu编译ffmpeg解决错误:ERROR: avisynth/avisynth_c.h not found
通过本文的详细指导,您可以顺利地在Ubuntu系统上配置和编译FFmpeg,并解决Avisynth头文件缺失的问题。
144 27
|
2月前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
91 43
|
2月前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
92 30
|
2月前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
44 12
|
3月前
|
JSON Ubuntu 开发者
ubuntu 22安装lua环境&&编译lua cjson模块
通过上述步骤,可以在 Ubuntu 22.04 系统上成功安装 Lua 环境,并使用 LuaRocks 或手动编译的方式安装 lua-cjson 模块。本文详细介绍了每一步的命令和操作,确保每一步都能顺利完成,适合需要在 Ubuntu 系统上配置 Lua 开发环境的开发者参考和使用。
287 13
|
5月前
|
监控 Ubuntu Linux
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
这篇文章介绍了如何在Ubuntu和Windows系统中通过设置相同的时区并使用ntp服务来解决时间同步问题。
136 4
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
|
5月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
373 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
5月前
|
Ubuntu Linux C语言
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
本文介绍了在Ubuntu 18.04系统上编译安装OpenCV 3.4.0及其扩展包opencv_contrib 3.4.0的详细步骤,包括下载源码、安装依赖、配置CMake和编译安装,以及常见问题的解决方法。
662 1
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0