ffmpeg源码编译

2023-05-16

编译

config配置

以下配置包含大部分需要使用的功能

./configure --prefix=./ --pkg-config-flags=--static --enable-shared --enable-pthreads --enable-version3 --enable-avresample --host-cflags= --host-ldflags= --enable-ffplay --enable-gpl --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack --enable-libzimg --enable-debug --disable-optimizations --disable-asm --extra-ldflags=-L/usr/local/lib

配置成功之后依次make && make install即可

一些问题

configure过程肯定不会一帆风顺,中间会很各种依赖包的缺失,需要自己手动安装。
mac用户:brew install xxx
linux用户:apt-get install xxx-dev

已安装依赖包,configure仍然出错:

  • 检查是否未安装pkg-config
  • 检查是否是是pkg-config未监测到相关包
    • pkg-config --libs libass // 如果没显示则需要手动添加依赖
    • pkg-config --cflags libass
    • brew ls xxx //检查xxx包的位置
    • export PKG_CONFIG_PATH="/usr/local/Cellar/srt/1.4.1/lib/pkgconfig" //添加srt包到pkg-config的检测路径

libzimg

–enable-libzimg 需要先安装z.lib库,源码安装参照: https://github.com/sekrit-twc/zimg

  • sudo ./autogen.sh
  • sudo ./configure
  • sudo make -j8
  • sudo make install

重要参考

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

使用vscode调试

在上面编译部分configure部分只要加上 --enable-debug 便会生成ffmpeg_g文件,可使用该文件进行代码调试,调试步骤很简单,只需要配置vscode的launch.json和task.json两个文件即可。两个文件的内容如下:

launch.json内容:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {          
            "name": "(lldb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/ffmpeg_g",
            "args": [
                "-i",
                "input.MOV",
                "-crf",
                "22",
                "-c:v",
                "libx265",
                "-vframes",
                "300",
                "-pix_fmt",
                "yuv420p",
                "-tag:v",
                "hvc1",
                "output.mp4",
                "-y"
            ],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "lldb"
        }
    ]
}

task.json

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",
			"label": "C/C++: clang build active file",
			"command": "${workspaceFolder}/make", //"/usr/bin/clang",
			"args": [
				// "-g",
				// "${file}",
				// "-o",
				// "${fileDirname}/${fileBasenameNoExtension}"
			],
			"options": {
				"cwd": "${workspaceFolder}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			}
		}
	]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ffmpeg源码编译 的相关文章

  • 如何从 Golang 访问 C 指针数组

    我正在使用 FFmpeg 为 Windows 平台编写一个应用程序 它是 golang 包装器 goav 但我无法理解如何使用 C 指针来访问数组 我试图获取存储在 AVFormatContext 类中的流以在 go 中使用 并最终将帧添加
  • 使用 imageio 和 Python 当帧率太低时视频是黑色的

    我有以下示例代码 import numpy as np writer imageio get writer test mp4 fps 1 max 800 resolution 256 for idx in range 1 max img n
  • ffmpeg strftime 对 Windows 没有影响

    我正在尝试使用 ffmpeg 自动标记输出文件的时间戳 这是我的测试命令 ffmpeg exe y loglevel 99 i test mp3 strftime 1 Y ogg 我期望一个名为2020 ogg 然而只得到了 Y ogg 换
  • 使用 Popen 替换 Python 中的 Bash 进程

    我试图通过从 python 子进程库调用 ffmpeg 来创建循环视频文件 这是给我带来问题的部分 import subprocess as sp sp Popen ffmpeg f concat i lt for f in Desktop
  • 使用 FFMPEG 播放音频

    我一直在尝试使用 NDK 将 FFMPEG 用于播放音频 移植到 Android 中 我取得了一些成功 我可以构建 FFMPEG 并通过 NDK 链接它 我可以打电话avcodec decode audio3 并解码给定的音频文件 所以这里
  • RTSP 帧抓取会产生拖尾、像素化和损坏的图像

    我正在尝试使用以下命令从 RTSP 流中每秒捕获一帧 ffmpeg i rtsp XXX q v 1 vf fps fps 1 strftime 1 ZZZZ H M S jpg But some of the frames are sme
  • 使用 ffmpeg 将带有 Alpha 的 .mov 转换为带有 alpha 的 .webm 时出现错误“使用 auto_alt_ref 进行透明度编码不起作用”

    我正在尝试将具有 alpha 透明度的 mov 文件转换为 webm 文件 并一直在关注此线程以寻求帮助 使用 ffmpeg 将带 Alpha 的 mov 转换为带 Alpha 的 VP9 Webm https stackoverflow
  • 将ffmpeg安装到虚拟环境中

    我正在尝试安装ffmpeg以便在 OpenAI 上使用它来录制视频 我已经使用它安装了brew install ffmpeg但不知怎的 当我编译我的代码时 我得到了同样的错误 就像我的包无法识别一样virtualenv我工作的地方 Pyth
  • 为 iOS6.0 ARMv7 处理器构建 FFMPEG 库

    WARNING 我刚刚被另一位用户告知 在 iOS 上使用 FFMPEG 存在一些法律问题 请在此处留下链接http multinc com 2009 08 24 compatibility Between the iphone app s
  • 如何使用ijkplayer库

    我要使用 ijkplayergithub链接 https github com bbcallen ijkplayer 我下载了这个 然后通过 文件 gt 导入 gt 常规 gt 现有项目到工作区 将其导入到 eclipse 中 之后我有三个
  • 在 FFmpeg 中使用 -filter_complex amerge 时混合流

    我目前遇到 ffmpeg 及其过滤器之一的问题 我正在尝试将视频的 2 个音频流合并为一个 为此我尝试了这个命令 ffmpeg i home maniaplanet Videos ManiaPlanet 2014 08 21 20 09 1
  • 防止 ffmpeg 在降低视频分辨率的同时改变颜色强度

    我有一个用例 我需要缩小规模716x1280mp4 视频到358x640 原件的一半 我使用的命令是 ffmpeg i input mp4 vf scale 640 640 force original aspect ratio decre
  • C# 从视频文件的一部分中提取帧

    使用 AForge ffmpeg 包装器 您可以使用 VideoFileReader 类从视频中提取帧并将其保存为位图 请参阅以下示例 提取 avi 文件的帧 https stackoverflow com questions 178256
  • ffmpeg创建RTP流

    我正在尝试使用 ffmpeg 进行编码和流式传输 libavcodec libavformat MSVC x64 with Zeranoe builds 这是我的代码 很大程度上改编自编码示例 删除了错误处理 include stdafx
  • 将每分钟的 MP3 导出为单独的 WAV

    这绝对是一个奇怪的问题 但我正在寻找一种方法 将 60 分钟的 mp3 混合拆分为 60 个单独的 1 分钟长的 wav 文件 以便与 Echonest 等音频指纹识别 API 一起使用 这是否可以在单个 ffmpeg 命令中实现 或者我是
  • 使用 ffmpeg 在纯色背景上叠加延时视频

    我有很多名为的主页屏幕截图homescreen000001 png homescreen000002 png等 我正在尝试使用 ffmpeg 创建这些图像的延时视频 当我运行以下命令时 它通常可以正常工作 ffmpeg f image2 i
  • 合并来自 ffmpeg 的两个视频

    我想使用 ffmpeg 将两个 mp4 视频组合成一个 mp4 视频 到目前为止我尝试过的是 ffmpeg i input1 mp4 i input2 mp4 output mp4 但是 每次我获取带有第一个输入的视频编解码器的视频而不是另
  • 使用 MediaRecorder 录制屏幕特定视图

    我想录制特定的屏幕视频View链接只想记录里面执行的动作LinearLayout 现在 MediaRecorder正在录制整个屏幕 如何录制屏幕的特定部分 MediaRecorder 通过媒体投影API 记录整个屏幕 至少从 Android
  • Android 上的 GStreamer

    谁能给我一些关于让 GStreamer 在 Android 上工作的提示 我以前从未使用过它 我想将它与 FFmpeg 一起使用 我已经编译了 FFmpeg 并且在 Android 上运行良好 我只是想使用 GStreamer 来帮助完成一
  • VLC 和 ffmpeg 如何协同工作?

    我从源代码编译了VLC 它运行良好 当我执行 Vlc 时 vlc 运行 我还从源代码编译了 ffmpeg 它也运行良好 当我执行 ffmpeg i f toto flv mp3 vn acodec copy new toto mp3 时 会

随机推荐