飞道的博客

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

651人阅读  评论(0)

若该文为原创文章,未经允许不得转载
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/104081729

目录

前言

FFmpeg下载

编译ffmpeg

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

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

步骤三:编译make

步骤四:安装sudo make install

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

命令行测试

版本查看

Yuv转mpeg4格式并封装为mp4

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

测试运行输出

工程模板v1.0.0

入坑

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

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


FFmpeg开发专栏

FFmpeg开发笔记(一):ffmpeg介绍、windows开发环境搭建(mingw和msvc)

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

《FFmpeg开发笔记(三):ffmpeg编码yuv420p存储为avi/mp4》:待发布

《FFmpeg开发笔记(四):ffmpeg解码avi/mp4播放》:待发布

持续补充中…

 

    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

       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(笔者使用系统头文件和库文件,此处无需额外引入了)


  
  1. LIBS += \
  2.         -lavcodec \
  3.         -lavdevice \
  4.         -lavfilter \
  5.         -lavformat \
  6.         -lavutil \
  7.         -lpostproc \
  8.         -lswscale

FFmpegMnager.h


  
  1. #ifndef FFMPEGMANAGER_H
  2. #define FFMPEGMANAGER_H
  3. #include <QObject>
  4. extern "C" {
  5. #include <libavcodec/avcodec.h>
  6. #include <libavformat/avformat.h>
  7. #include <libswscale/swscale.h>
  8. #include <libavdevice/avdevice.h>
  9. #include <libavformat/version.h>
  10. #include <libavutil/time.h>
  11. #include <libavutil/mathematics.h>
  12. }
  13. class FFmpegManager : public QObject
  14. {
  15. Q_OBJECT
  16. public:
  17. explicit FFmpegManager(QObject *parent = nullptr);
  18. signals:
  19. public:
  20. void testEnv();
  21. };
  22. #endif // FFMPEGMANAGER_H

FFmpegManager.cpp


  
  1. #include "FFmpegManager.h"
  2. #include <QDebug>
  3. FFmpegManager::FFmpegManager(QObject *parent) : QObject(parent)
  4. {
  5. }
  6. void FFmpegManager::testEnv()
  7. {
  8. qDebug() << __FILE__ << __LINE__ << avcodec_configuration();
  9. }

 

测试运行输出

 

 

工程模板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

直接引入。


原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/104081729


转载:https://blog.csdn.net/qq21497936/article/details/104081729
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场