首页 > 其他分享 >FFmpeg的入门实践系列一

FFmpeg的入门实践系列一

时间:2024-08-20 17:58:19浏览次数:11  
标签:enable FFmpeg 启用 -- 实践 dev 音视频 入门

在这里插入图片描述

欢迎诸位来阅读在下的博文~
在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力!
江山如画,客心如若,欢迎到访,一展风采

文章目录

参考环境

  1. VMware Workstation Pro
  2. Ubuntu20.04(运行服务器)

本系列的适用人群

打算从事音视频行业的人士,如:音视频驱动工程师、音视频中间件开发、音视频算法工程师、音视频应用工程师、还有流媒体服务器开发工程师。

FFmpeg的简介

FFmpeg是一个开源项目,同时它也是一个非常流行的多媒体框架。它提供了一个完整的跨平台解决方案来记录、转换数字音视频,以及转换成不同的格式。FFmpeg可以捕捉、编码和转码多种视频和音频格式,它支持大量的音视频格式,包括但不限于H.264、H.265、VP8、VP9、AAC、MP3等。
FFmpeg由多个组件组成,包括:

  1. ffmpeg:用于处理音视频文件的工具,可以进行录制、转换格式、流化等操作。
  2. ffplay:一个简单的播放器,可以播放多媒体内容。
  3. ffserver:一个流媒体服务器,可以用来发布多媒体内容。
  4. libavcodec:包含大量的编解码器,用于处理音视频数据。
  5. libavformat:包含多种多媒体容器格式的支持。
  6. libavutil:包含了一些实用的工具,如随机数生成器、数据结构等。
  7. libavdevice:用于处理不同硬件设备的输入输出。
  8. libavfilter:提供了一系列的音视频过滤器。
  9. libswscale:用于执行图像缩放和颜色空间转换操作。
  10. libswresample:用于执行音频重采样和格式转换。
    FFmpeg因其强大的功能和灵活性,在视频处理领域被广泛使用,包括但不限于视频编辑、转换、流媒体传输和编码。由于其开源的特性,FFmpeg也经常被集成到其他项目中,如视频编辑软件、流媒体服务器和嵌入式设备中。

FFmpeg的下载与编译

FFmpeg的下载、编译与安装过程在不同的操作系统上可能会有所不同,但以下是一个通用的步骤指南:

1. 下载FFmpeg

可以从官方网站或其源代码仓库下载最新的源代码。

通过官方网站下载:

访问FFmpeg的官方网站(https://ffmpeg.org/download.html),选择合适的版本下载。通常会有一个.tar.bz2格式的压缩包。

通过Git克隆仓库:

获取最新的开发版本,可以通过Git克隆FFmpeg的源代码仓库:

git clone https://github.com/FFmpeg/FFmpeg.git

如果访问github的网络不良好,可以试试使用下面这个工具。使用方法很简单,直接解压,然后运行fastgithub.exe即可,注意在访问github期间要保持该进程运行。
链接
提取码:y8s7

2. 解压源代码

tar -xvjf ffmpeg-版本号.tar.bz2

3. 配置编译环境

在编译之前,需要安装一些依赖库和工具。

在Ubuntu/Debian系统上:
sudo apt-get update
sudo apt-get install -y build-essential libtool automake autoconf libfaac-dev libmp3lame-dev libopus-dev
在CentOS/RHEL系统上:
sudo yum install -y gcc make autoconf automake libtool
在macOS上:
brew install automake libtool

4. 编译FFmpeg

进入解压后的FFmpeg目录,执行以下命令来配置编译选项:

./configure --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libx264 --enable-libx265
./configure --prefix=/usr/local \
            --enable-gpl \
            --enable-version3 \
            --enable-nonfree \
            --enable-shared \
            --enable-libfdk-aac \
            --enable-libmp3lame \
            --enable-libopus \
            --enable-libvorbis \
            --enable-libvpx \
            --enable-libx264 \
            --enable-libx265 \
            --enable-libspeex \
            --enable-libass \
            --enable-libfreetype \
            --enable-libtheora \
            --enable-libopenjpeg \
            --enable-libxvid \
            --enable-libvidstab \
            --enable-libvmaf \
            --enable-libzimg \
            --enable-librtmp \
            --enable-libssh \
            --enable-libdrm \
            --enable-libaom

参数说明

  • --prefix=/usr/local: 安装路径,选择 /usr/local 以便系统和其他用户可以全局访问 FFmpeg。
  • --enable-gpl: 启用 GPL 许可证代码,这对于大部分自由和开源的音视频处理是必须的。
  • --enable-version3: 启用 LGPL 版本3的代码,这通常和 GPL 一起使用。
  • --enable-nonfree: 启用非自由的库,比如 libfdk-aac,这些库有一些使用限制,但功能强大。
  • --enable-shared: 构建动态链接库(.so 文件),便于在其他程序中共享和使用 FFmpeg。
  • --enable-libfdk-aac: 启用 libfdk-aac 库,提供高质量的 AAC 编码。
  • --enable-libmp3lame: 启用 MP3 编码支持。
  • --enable-libopus: 启用 Opus 音频编解码支持,适用于实时音频应用。
  • --enable-libvorbis: 启用 Vorbis 编解码支持,适用于开源音频格式。
  • --enable-libvpx: 启用 VP8/VP9 编解码支持,适用于 WebM 格式。
  • --enable-libx264: 启用 H.264 编码支持,广泛应用于视频压缩。
  • --enable-libx265: 启用 H.265 编码支持,提供更高效的视频压缩。
  • --enable-libspeex: 启用 Speex 编解码支持,适用于低比特率语音编码。
  • --enable-libass: 启用 ASS 字幕支持,适用于高级字幕渲染。
  • --enable-libfreetype: 启用 FreeType 字体库,用于渲染文本和字幕。
  • --enable-libtheora: 启用 Theora 视频编解码支持,适用于开源视频格式。
  • --enable-libopenjpeg: 启用 OpenJPEG 支持,用于 JPEG 2000 编解码。
  • --enable-libxvid: 启用 Xvid 编解码支持,适用于 MPEG-4 视频编码。
  • --enable-libvidstab: 启用视频稳定库 libvidstab,适用于去除视频抖动。
  • --enable-libvmaf: 启用 VMAF 质量评估模型,用于视频质量测量。
  • --enable-libzimg: 启用 libzimg,提供高质量的图像缩放和转换。
  • --enable-librtmp: 启用 RTMP 支持,适用于实时流媒体传输。
  • --enable-libssh: 启用 SSH 协议支持,用于通过 SSH 传输文件或流媒体。
  • --enable-libdrm: 启用 DRM (Direct Rendering Manager) 支持,用于硬件加速。
  • --enable-libaom: 启用 AV1 视频编码支持,适用于新一代视频格式。
    其他注意事项
  • 依赖库安装: 确保你已经安装了上述库的开发版本,例如 libx264-devlibx265-dev 等。可以使用 apt-get 命令安装所需的库。
    sudo apt-get install -y libfdk-aac-dev libmp3lame-dev libopus-dev libvorbis-dev libvpx-dev libx264-dev libx265-dev libspeex-dev libass-dev libfreetype6-dev libtheora-dev libopenjpeg-dev libxvidcore-dev libvidstab-dev libvmaf-dev libzimg-dev librtmp-dev libssh-dev libdrm-dev libaom-dev
    
  • FFmpeg 版本: 确保你使用的是 FFmpeg 的最新版本,以避免遇到兼容性问题或已知的错误。
  • 定制化需求: 如果你有特别的开发需求(例如只需要音频处理,或者只关注特定的编解码器),可以根据实际需要启用或禁用相关功能。
    通过上述配置,你可以构建一个功能全面的 FFmpeg,用于音视频开发的各种需求。

如果./configure报错文件不存在,可以这样解决:
这个错误通常是因为脚本文件使用了 Windows 风格的换行符(即 \r\n),而 Linux 系统期望的是 Unix 风格的换行符(即 \n)。Windows 和 Unix/Linux 系统在文本文件的换行符处理上存在差异,这就导致了这个问题。
解决办法:

  1. 安装 dos2unix 工具(如果系统中没有安装):
    sudo apt-get install dos2unix
    
  2. 转换脚本文件
    dos2unix configure
    
  3. 再次尝试运行 ./configure 命令

接下来,编译FFmpeg:

make

5. 安装FFmpeg

编译完成后,安装FFmpeg:

sudo make install

这将在/usr/local目录下安装FFmpeg及其相关工具。

6. 验证安装

安装完成后,你可以通过以下命令来验证FFmpeg是否正确安装:

ffmpeg -version

如果安装成功,这个命令将显示FFmpeg的版本信息。
请注意,这些步骤可能需要根据你的操作系统和FFmpeg版本进行调整。如果在编译或安装过程中遇到问题,请参考FFmpeg的官方文档或错误信息进行解决。

至此,结束~
在这里插入图片描述
望诸位不忘三连支持一下~

标签:enable,FFmpeg,启用,--,实践,dev,音视频,入门
From: https://blog.csdn.net/weixin_61503529/article/details/141342669

相关文章

  • 网络安全自学入门:(超详细)从入门到精通学习路线&规划,学完即可就业
     很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样。算上从学校开始学习,已经在网安这条路上走了10年了,无论是以前在学校做安全研究,还是毕业后在百度、360从事内核安全产......
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!
     一、CTF简介CTF(CaptureTheFlag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛......
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!
     一、CTF简介CTF(CaptureTheFlag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛......
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!
     一、CTF简介CTF(CaptureTheFlag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛......
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!
     一、CTF简介CTF(CaptureTheFlag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛......
  • CTF入门教程(非常详细)从零基础入门到竞赛,看这一篇就够了!
     一、CTF简介CTF(CaptureTheFlag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛......
  • 一汽集团数据专家分享:实时数据技术在汽车行业的应用与实践经验
    【导读】在当今快速变化的商业环境中,数据的实时性和准确性是企业制胜的关键。然而,数据孤岛、数据分散、处理时效差等难题却成为制约企业发展的瓶颈。本文将围绕实时数据技术在汽车行业的应用与实践经验分享展开。本次分享主要涵盖三个方面展开。第一,关于数据技术的起源以及其与......
  • 银河麒麟V10入门学习随笔(一)
    操作系统:银河麒麟高级服务器操作系统V10  1.前置学习资料1.1.基本的linux的命令~cd:https://blog.csdn.net/2302_76410765/article/details/1297665921.2.防火墙配置指令:https://blog.csdn.net/weixin_43829023/article/details/132623979 2.Todesk远程工具安装2.1.......
  • 围观|微信小程序开发数据绑定最佳实践?
    在微信小程序开发中进行数据绑定时,遵循一些最佳实践可以帮助你编写更高效、可维护的代码。以下是一些数据绑定的最佳实践:1.保持数据简洁尽量保持data对象中的数据简洁明了,避免嵌套过深的数据结构。这样可以减少数据更新的复杂性,提高代码的可读性。Page({data:{......
  • 基于“日志审计应用”的 DNS 日志洞察实践
    作者:羿莉(萧羿)基础背景DNS(DomainNameSystem)[1]是任何网络活动的基础。它将易于记忆的域名转换为机器能够理解的IP地址。监控DNS服务可以帮助用户识别网络活动并保持系统安全。出于合规和安全性的考虑,公司通常要求对网络日志进行存储和分析。通过DNS日志,可以清晰......