关键词:
一 ffmpeg简介
1.ffmpeg是一套可以用来进行音视频处理的工具和编解码库;
2.采用LGPL或GPL许可证(不能修改源码,只能使用so库,如果要修改源码,必须发布工程代码);
3.ffmpeg对与硬件平台、GPU做了很多优化,效率非常高;
4.包含库:
(1)avcodec 编解码(最重要的库)
(2)avformat 封装格式处理
(3)avfilter 滤镜特效处理
(4)avdevice 各种设备的输入输出
(5)avutil 工具库
(6)postproc 后加工
(7)swresample 音频采样数据格式转换
(8)swscale 视频像素数据格式转换
二 在qnx710环境编译ffmpeg源码
1.源码:
GitHub - FFmpeg/FFmpeg: Mirror of https://git.ffmpeg.org/ffmpeg.git
2.解压
tar jxvf ffmpeg-snapshot.tar.bz2
3.下载yasm(yasm是汇编编译器,ffmpeg为了提高效率使用了汇编指令,如MMX和SSE等,所以系统中未安装yasm时,就会报“nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.”)
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
#解压
tar zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
cp -f yasm ytasm vsyasm /home/zt/ffmpeg/ #将编译出来的yasm拷贝到ffmpeg目录
export PATH=../:$PATH #修改系统路径
4.编译ffmpeg
#! /bin/bash
g_root_path="$( cd "$( dirname "$0" )" && pwd )" #当前路径
function update_build_folder()
local build_dir=$1
if [[ -z $1 ]]
then
build_dir="build"
fi
if [[ ! -d $build_dir ]]
then
mkdir $build_dir
echo $build_dir
return 0
else
build_dir=$build_dir"1"
update_build_folder $build_dir
return 0
fi
function compile_ffmpeg()
local build_dir_name=$1
local ffmpeg_source_dir_path=$2
local qnx_sdp_source_dir_path=$3
if [[ -z build_dir_name ]] || [[ -z ffmpeg_source_dir_path ]] || [[ -z qnx_sdp_source_dir_path ]]
then
echo error should input 3 param
fi
path_build_dir=$(update_build_folder "$g_root_path/"$build_dir_name)
local pkgconfig_dir_path=$(update_build_folder $path_build_dir/pkg)
echo current establish build dir:$path_build_dir
echo current establish pkg dir:$pkgconfig_dir_path
source $qnx_sdp_source_dir_path/qnx710/qnxsdp-env.sh
cd $ffmpeg_source_dir_path
./configure \\
--cc=$qnx_sdp_source_dir_path/qnx710/host/linux/x86_64/usr/bin/aarch64-unknown-nto-qnx7.1.0-gcc-8.3.0 \\
--prefix=$path_build_dir \\
--pkgconfigdir=$pkgconfig_dir_path \\
--enable-pic \\
--enable-cross-compile \\
--disable-optimizations \\
--disable-stripping \\
--target-os=qnx \\
--arch=aarch64 \\
--enable-shared \\
--disable-static \\
--enable-gpl \\
--enable-nonfree \\
--enable-asm \\
--disable-avdevice \\
--disable-swresample \\
--disable-postproc \\
--disable-avfilter \\
--disable-programs \\
--disable-logging \\
--disable-everything \\
--enable-avformat \\
--enable-decoder=hevc \\
--enable-decoder=h264 \\
--enable-decoder=mpeg4 \\
--enable-decoder=aac \\
--disable-ffplay \\
--disable-ffprobe \\
--disable-doc \\
--disable-devices \\
--disable-network \\
--disable-hwaccels \\
--disable-parsers \\
--disable-bsfs \\
--disable-debug \\
--enable-protocol=file \\
--enable-demuxer=mov \\
--enable-demuxer=flv \\
--disable-indevs \\
--extra-cflags="-std=gnu99 -fPIC" \\
--disable-outdevs
make && make install
compile_ffmpeg \\
ffmpeg_build \\
/home/xx/ffmpeg/ffmpeg \\
/home/xx/qnx710
注意修改如下:
compile_ffmpeg \\
ffmpeg_build \\ #编译后相关库输出路径
/home/xx/ffmpeg/ffmpeg \\ #ffmpeg源码路径
/home/xx/qnx710 #qnx710环境路径
使用时,需要拷贝inclue和lib到自己的代码工程目录,添加相关库链接即可。
三 ffmpeg解码mp4流程
1.打开视频
|
2.寻找视频流
|
3.定位视频索引通道
|
4.寻找解码器
|
5.创建解码上下文
|
6.为解码上下文分配参数
|
7.配置解码线程数
|
8.打开解码器
|
四 ffmpeg解码mp4实例
1.功能:对指定mp4(1280✖800)文件进行解码,输出为(1280✖800)uyvy格式文件
2.代码
https://github.com/wangzhicheng2013/ffmpeg_decode_video
注意:替换I420转uyvy函数即可
win11环境下编译theia源码
1、安装gitbash\jdk\python\nodejs\yarn;2、安装windows下用于npm构建工具"npm×××tall--global--productionwindows-build-tools";3、屏蔽ffmpeg的构建"exportTHEIA_ELECTRON_SKIP_REPLACE_FFMPEG=1";4、在theia代码目录下执 查看详情
jni各种环境下编译方法及初期出错分析
转自 https://www.cnblogs.com/xyang0917/p/4172490.html 第五步、将C/C++代码编译成本地动态库文件 动态库文件名命名规则:lib+动态库文件名+后缀(操作系统不一样,后缀名也不一样)如: MacOSX:libH... 查看详情
opencv系列之ubuntu系统下编译python版本的opencv(指定特定的ffmpeg)(代码片段)
...好对应的ffmpeg准备将python版本的opencv,编译到conda的环境中,提前创建好自己的conda虚拟环境,我这里是cd_test,也可以编译到其他的python环境中,具体路径得配置正确。 查看详情
win7_32下编译ffmpeg
运行环境: VC2010软件; [附:本文所用软件安装包:http://download.csdn.NET/detail/sinat_36666600/9705438]1、下载mingw- 查看详情
ffmpeg之linux下编译与调试
...切都是在root模式下进行的,可以不再root模式下进行基础环境就是编译代码的基础库,Ubuntu联网安装软件很简单,一个语句即可搞定,这里列出语句如下:依赖库分两方面,参考以下网站列出的依赖库信息,本文选择的版本均参... 查看详情
windows下编译ffmpeg源码及常见问题
参考技术A由于公司项目中会用到ffmpeg,而且会用到h265转码h264的功能,想要学习ffmpeg,先从编译开始吧。我编译的过程主要是从以下博客中学习的,此文主要是记录中间遇到的问题及解决方法。https://blog.csdn.net/fan1102958151/article/d... 查看详情
window下编译cef内核加入mp3/mp4支持
下载depot_tools 解压,加入到环境变量进入cmd(管理员)运行 gclient获取 python和git,svn,设置python环境变量创建新文件夹mkdirchromium&&cdchromium把 automate-git.py 保存到文件夹根目录然后运行命令:setGYP_GENERATORS=... 查看详情
windows下编译及使用libevent
Libevent官网:http://libevent.org/windows7下编译:编译环境: windows7+VS2010(1)解压libevent到F:libeventlibevent-2.0.21-stable(2)打开Microsoftvisualstudio2010命令行工具(3)修改以下三个文件,添加宏定义:在以下3个文件开头添加“#define_... 查看详情
[转]windows下编译及使用libevent
http://www.cnblogs.com/luxiaoxun/p/3603399.html Libevent官网:http://libevent.org/windows7下编译:编译环境: windows7+VS2010(1)解压libevent到F:libeventlibevent-2.0.21-stable(2)打开Microsoftvisualstud 查看详情
在windows环境idea下编译运行elasticsearch7.14.1(代码片段)
文章目录在Windows环境中IDEA下编译运行Elasticsearch7.14.1环境准备操作步骤获取源码方式一:直接通过`gitbash`执行`gitclone`命令方式二:通过IDEA界面化操作编译源码本地运行遇到的问题1.权限问题2.版本问题3.geoip报... 查看详情
mac平台androidffmpeg编译与集成实践(代码片段)
文章目录FFmpeg是什么为什么要学FFmpeg开发FFmpeg编译1.编译环境准备2.FFmpeg环境配置3.完整的脚本4.FQA编译小结在AndroidStudio中的集成集成问题记录写在最后FFmpeg是什么FFmpeg既是一款音视频编解码工具,同时也是一组音视频编解码... 查看详情
mac平台androidffmpeg编译与集成实践(代码片段)
文章目录FFmpeg是什么为什么要学FFmpeg开发FFmpeg编译1.编译环境准备2.FFmpeg环境配置3.完整的脚本4.FQA编译小结在AndroidStudio中的集成集成问题记录写在最后FFmpeg是什么FFmpeg既是一款音视频编解码工具,同时也是一组音视频编解码... 查看详情
ffmpeg-linux下编译ffmpeg(代码片段)
文章目录1.下载源码2.编译安装1.下载源码地址:https://ffmpeg.org/download.html2.编译安装./configure--prefix=/usr/local/ffmpeg--enable-debug=3--disable-static--enable-sharedmake-j4makeinstall以上,其中–enable-debug=3能用来调试,–disable-s... 查看详情
关于在ubuntu14.04下编译安装ffmpeg
首先下载ffmpeg-2.4.3.tar.bz2和last_x264.tar.bz2,可以见附件。cd~mkdirffmpeg&&cdffmpeglibx264需要yasm,所以先安装yasmsudoapt-getinstallyasm然后安装libx264sudoaptitude-yinstall libx264-dev把两个附件拷贝到当前路径下并解压进入到x264-s 查看详情
ubuntu下编译hadoop(代码片段)
Ubuntu下编译Hadoop-2.9.2系统环境系统:ubuntu-18.10-desktop-amd64maven:ApacheMaven3.6.0jdk:jdk_1.8.0_201ProtocolBuffer:portoc-2.5.0OpenSSL:OpenSSL1.1.1cmake:cmake3.12.1hadoop:hadoop-2.9.2安装所需环境#安装各种所需依赖库$sudoapt 查看详情
msys2环境下编译x265
HEVC(HighEfficiencyVideoCoding),是一种新的视频压缩标准。可以替代H.264/AVC编码,使得保持相同质量的情况下,体积减少40%左右。目前有多种实现版本,x265则是其中之一。常用网站:x265官网 http://www.x265.org/代码托管 https://bitbucket.o... 查看详情
ffmpeg命令行实践二(代码片段)
1FFmpeg命令参数1.1主要参数-i设定输入流-f设定输出格式(format)-ss开始时间-t时间长度#修改音视频容器格式为flv,拷贝编码格式,复制0-20s数据ffmpeg-itest.mp4-ss0-t20-codeccopy-fflvout.flv#-f参数可以省略,自动识别输出格式ffmpeg-i... 查看详情
ffmpeg移植android编译生成多库
...是介绍将FFmpeg音视频编解码库移植到Android中的编译过程环境准备Ubuntu14.04android-ndk-r9d-linux-x86_64.tar.bz2第一步:下载FFmpeg源码到FFmpeg官网下载FFmpeg源码,该文档编译的源码版本是FFmpeg3.0.2第二步:在Linux环境下编译FFmpeg... 查看详情