linux下编译ffmpeg工程,和使用ffmpeg库
ffmpeg编译、使用与常见问题
FFMPEG编译、使用与常见问题一. Linux下FFMPEG的安装与测试 (1)二. FFMPEG编译中出现的一些问题与解决方法 (4)三. FFMpeg简介及命令选项参数 (8)四. FFMPEG与x264的编译 (13)一.Linux下FFMPEG的安装与测试a. 先装mp3在linux下的包:lame-3.97.tar.gz;tar -xvzf lame-3.97.tar.gz;cd lame-3.97;./configure --enable-shared --prefix=/usr/;make;make install;b. 支持Ogg Vorbis:as4自带相应的rpm包,你可以安装一下如下rpm包:libvorbis, libvorbis-devel,libogg, libogg-devel 一般情况下as4都会安装c. 支持xvid x264,现在最流行的两种高质量的压缩格式xvid的编译安装wget /downloads/xvidcore-1.1.0.tar.gztar zvxf xvidcore-1.1.0.tar.gzcd xvidcore-1.1.2/build/generic./configure --prefix=/usr --enable-sharedmakemake installx264的获取用git:git clone git:///x264.gitcd x264./configure --prefix=/usr --enable-sharedmakemake install3d. AC3和dts编码的支持as4系统似乎已经支持ac3编码,编译的时候只要加--enable-a52 --enable-gpl参数就行libdts编译参数tar zxvf libdts-0.0.2.tar.gz./configure --prefix=/usrmakemake installe. mpg4 aac格式支持,由于服务器还针对手机用户服务,所以,类似aac,mpg4铃声格式的支持,我们也得做。
FFMPEG的移植与使用
FFMPEG的移植与使用FFmpeg是一个自由软件,可以进行音频和视频的录制、转换和流传输。
它提供了许多功能丰富的库和命令行工具,可以在各种平台上使用。
本文将介绍如何进行FFmpeg的移植和使用。
首先,我们需要了解FFmpeg的移植过程。
FFmpeg可以在多个平台上移植,包括Windows、macOS、Linux和Android等。
移植过程可以分为以下几个步骤:2. 配置编译环境:根据所使用的平台选择合适的编译环境,例如Windows下可以使用MinGW或MSYS23. 配置编译选项:进入源代码目录,运行`./configure`命令来配置编译选项。
可以根据需求选择需要的库和功能,例如支持的编解码器、格式和协议等。
4. 编译和安装:运行`make`命令编译源代码,根据所使用的平台可能还需要运行其他命令进行安装。
完成了FFmpeg的移植后,我们可以开始使用它进行音频和视频处理。
FFmpeg提供了许多命令行工具,可以进行各种操作,例如转码、剪切、合并和抽取等。
以下是一些常用的FFmpeg命令示例:1.转码:将一个视频文件转换为另一种格式。
`ffmpeg -i input.mp4 output.avi`2.剪切:截取视频的一部分。
`ffmpeg -ss 00:00:10 -i input.mp4 -t 00:00:20 output.mp4`3.合并:将多个视频文件合并为一个。
4.抽取音频:从视频中抽取音频文件。
`ffmpeg -i input.mp4 -vn output.mp3`5.转换音频格式:将音频文件转换为另一种格式。
`ffmpeg -i input.mp3 output.wav`通过使用这些命令和其他一些选项,我们可以实现各种音频和视频处理需求。
FFmpeg还提供了强大的API,可以在自己的应用程序中使用。
API提供了各种功能和选项,可以进行更复杂的音视频处理。
总结起来,FFmpeg是一个功能强大的音视频处理工具,可以进行音频和视频的录制、转换和流传输等。
Linux源码安装ffmpeg
cd /usr/local/src/a52dec-0.7.4/
./configure --enable-shared
make && make install
##### 如果出现以下错误提示 #####
wget https:///project/opencore-amr/opencore-amr/opencore-amr-0.1.5.tar.gz
tar -zxvf opencore-amr-0.1.5.tar.gz -C /usr/local/src/
cd /usr/local/src/lame-3.99.5/
./configure --enable-shared
make && make install
cd -
二、安装libogg
#/downls/ogg/libogg-1.3.2.tar.gz
yum install unzip patch -y
tar -jxvf amrnb-11.0.0.0.tar.bz2 -C /usr/local/src/
cp 26104-610.zip /usr/local/src/amrnb-11.0.0.0/
cd /usr/local/src/amrnb-11.0.0.0/
Linux下ffmpeg的完整安装
首先要安装各种解码器
一、安装lame(MP3音频编码器)
wget https:///project/lame/lame/3.99/lame-3.99.5.tar.gz
tar -zxvf lame-3.99.5.tar.gz -C /usr/local/src/
linux编译ffmpeg支持x264,x265
linux 编译ffmpeg 支持x264, x2651. 前言本教程涉及的ffmpeg, x264, x2652. 环境依赖2.1 删除系统中安装的ffmpeg等库[plain] view plain copy sudo apt-get --purge remove ffmpeg mplayer x264 x2652.2 安装依赖库[plain] view plain copy sudo apt-get update sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev \ libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \ libxcb-xfixes0-devpkg-config texi2html zlib1g-dev注: 服务器版本可忽略libsdl1.2-dev libva-dev libvdpau-dev libxcb1-devlibxcb-shm0-dev libxcb-xfixes0-dev2.3 下载源代码(1) ffmpeg[plain] view plain copy git clonegit:///ffmpeg.git ffmpeg(2) x264[plain] view plain copy <pre name="code"class="plain"><pre name="code" class="plain">git clone git:///x264.git (3) x265[plain] view plain copy hg clonehttps:///multicoreware/x265(4) yasmyasm 是x86平台的一个汇编优化器, 能够加快ffmpegx264的编译[plain] view plain copy wget/projects/yasm/releases/yasm-1.3.0.ta r.gz tar xzvf yasm-1.3.0.tar.gz3. 编译3.1 配置编译输出目录[plain] view plain copy exportFFMPEG_PATH="YOUR_PATH" exportPATH="$FFMPEG_PATH/bin:$PATH" 例如我输出目录为$HOME/ffmpeg_2.6.3/build_out那么:[plain] view plain copy exportFFMPEG_PATH="$HOME/ffmpeg_2.6.3/build_out"3.1 yasm[plain] view plain copy cd yasm-1.3.0 ./configure--prefix="$HOME/" make make install或者安装已有的库(yasm version ≥ 1.3.0)[plain] view plain copy sudo apt-get install yasm 3.2 x264 在配置ffmpeg config时需要加入--enable-gpl和--enable-libx264[plain] view plain copy cd x264* ./configure--prefix="$FFMPEG_PATH" --enable-shared--enable-static make -j4 make install make clean 或者安装已有的库(yasm version ≥ 1.3.0)[plain] view plain copy sudo apt-get install libx264-dev 3.3 x265[plain] view plain copy cd x265/build/linux cmake -G "Unix Makefiles"-DCMAKE_INSTALL_PREFIX="$FFMPEG_PATH"-DENABLE_SHARED:bool=off ../../source make -j4 make install make clean </tt></span>3.4 aac在配置ffmpeg config时需要加入--enable-libfdk_aac(如果开启--enable-gpl同时需要开启--enable-nonfree ) [plain] view plain copyPKG_CONFIG_PATH="$FFMPEG_PATH/lib/pkgconfig" ./ configure \ --prefix="$FFMPEG_PATH" \--pkg-config-flags="--static" \--extra-cflags="-I$FFMPEG_PATH/include" \--extra-ldflags="-L$FFMPEG_PATH/lib" \ --enable-gpl \ --enable-libass \ --enable-libfaac \--enable-libfreetype \ --enable-libmp3lame \--enable-libtheora \ --enable-libvorbis \--enable-libx264 \ --enable-libx265 \--enable-nonfree \ --enable-shared \--enable-postproc \ --enable-x11grab \--enable-bzlib \ --enable-libxvid \ --enable-zlib \--disable-debug4. 将ffmpeg添加到环境变量4.1 将ffmpeg添加到环境变量[plain] view plain copy vim ~/.bashrc 在最后添加[plain] view plain copy exportFFMPEG_PATH="/home/guohe/workspace/ffmpeg_2.6.3/ build_out" export PATH="$FFMPEG_PATH/bin:$PATH"4.2 添加链接库编译完成之后调用ffmpeg 会出现errorwhile loading shared libraries: xxx解决这种问题有2中方法:(1) 修改/etc/ld.so.conf[plain] view plain copy vim /etc/ld.so.conf在最后添加[plain] view plain copy $FFMPEG_PATH/lib然后执行[plain] view plain copy sudo ldconfig (2) 修改LD_LIBRARY_PATH[plain] view plain copy vim ~/.bashrc 在最后添加[plain] view plain copy exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:$FFMPEG_P ATH/ib。
视频解码中用到的ffmpeg交叉编译技巧
视频解码中用到的ffmpeg交叉编译技巧一、简介FFmpeg是一个集录制,转换,音/视频编码解码功能为一体的完整的开源解决方案。
FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。
由于ffmpeg是基于linux开发的,源代码和windows下最常见的visual studio提供的c/c++编译器不兼容,因此不能直接使用msvc++编译,想要使用ffmpeg,需要在windows下配置一个类似Linux 的编译环境,并将ffmpeg编译为二进制库以后,再利用其进行进一步开发。
目前,windows下可直接使用的最新版本是由ffmpeg工程组,于2008年4月份发布的ffmpeg full sdk v3.2。
该sdk尽可能的集成了更多的编解码器。
在应用中,使用该开发包存在2个缺陷,第一,该sdk编译基于ffmpeg r12790,编解码效率上,当前已经有了较大的提升;第二,该开发包包含了很多不需要的编解码器,需要尽可能减少开发包的体积及关联的库的个数。
基于以上需求,需要自己编译出windows下可用动态库及静态库。
使用到的库文件有4个,libavcodec,libavformat,libavutil,libswscale,其中库libavcodec,libavformat用于对媒体文件进行处理,如编解码;libavutil是一个通用的小型函数库,该库中实现了CRC校验码的产生,128位整数数学,最大公约数,整数开方,整数取对数,内存分配,大端小端格式的转换等功能,libswscale主要用于图像格式转换及缩放。
因效率的需要,我们选择了ffmpeg-mt版本,同时通过配置编译尽量减少相关文件的体积。
网上类似编译过程说明较多,但实际编译过程中碰到一些问题,这些问题的解决花费了不少时间,本文档对这一过程进行记录,以便后续维护及学习。
二、编译环境搭建windows下ffmpeg编译环境有多种可选择方案。
ffmpeg 6.0使用手册
文章内容:一、介绍ffmpeg是一个广泛使用的开源多媒体工具包,可以用于录制、转换和流化音频和视频。
在本文中,我们将详细介绍ffmpeg 6.0的使用手册,以便读者能够更好地了解和使用这一工具。
二、安装和运行要使用ffmpeg 6.0,首先需要进行安装。
在Linux系统中,可以通过包管理器进行安装;在Windows系统中,可以下载预编译的可执行文件。
安装完成后,可以通过命令行终端运行ffmpeg,进行音视频处理操作。
三、基本命令ffmpeg提供了丰富的命令,可以进行音视频处理、转码、剪辑等操作。
常用的命令包括:- `-i`:指定输入文件- `-c`:指定编解码器- `-f`:指定输出格式- `-ss`:指定起始时间- `-t`:指定持续时间- `filterplex`:复杂过滤器的使用四、高级功能除了基本命令外,ffmpeg还提供了许多高级功能,包括:- 多路转码:可以同时对多个音视频流进行转码处理- 实时流化:可以将音视频实时流化到网络- 视频编辑:可以对视频进行裁剪、拼接、滤镜等操作五、个人观点ffmpeg是一个功能强大、灵活多样的多媒体工具,可以满足各种音视频处理需求。
通过学习和使用ffmpeg 6.0,不仅可以提升音视频处理能力,还可以为个人和企业带来更多的创造和商业机会。
六、总结在本文中,我们详细介绍了ffmpeg 6.0的使用手册,包括安装和运行、基本命令、高级功能等内容。
通过阅读本文,希望读者能够更全面地了解和掌握ffmpeg 6.0,从而在音视频处理领域取得更好的成就。
以上就是我撰写的关于ffmpeg 6.0使用手册的文章。
希望对你有所帮助!七、应用场景ffmpeg 6.0在实际应用中有广泛的场景,包括但不限于以下几个方面:1. 视频编辑和制作:通过ffmpeg可以轻松实现视频的剪辑、拼接、添加滤镜、调整画面亮度、对比度等操作,是视频编辑和制作领域的利器。
2. 音频处理和转换:除了视频处理,ffmpeg也可以用于音频领域,包括音频格式转换、音频剪辑、音频合并等,满足了音频处理的需求。
ffmpeg的编译
ffmpeg的编译全文共四篇示例,供读者参考第一篇示例:FFmpeg是一个开源的跨平台音视频处理工具,它可以进行解码、编码、转码、流媒体处理等多种操作。
FFmpeg支持众多音视频格式,功能强大,使用广泛。
在实际应用中,可能会遇到需要对FFmpeg进行定制编译的情况,以满足自己的需求。
本文将介绍如何编译FFmpeg,并提供一些常见问题的解决方案。
第一步,准备开发环境在编译FFmpeg之前,首先需要准备好开发环境。
FFmpeg的编译过程需要依赖一些开发工具和库文件,这些工具和库文件可以通过包管理工具进行安装。
在不同的操作系统上,具体的安装方法可能有所不同。
在Ubuntu上,可以通过以下命令安装所需的开发工具和库文件:```bashsudo apt-get updatesudo apt-get install build-essentialsudo apt-get install git yasm libx264-dev libx265-dev```第二步,下载FFmpeg源代码接下来,我们需要下载FFmpeg的源代码。
FFmpeg的源代码托管在Git仓库中,可以通过Git工具进行下载。
在命令行中执行以下命令即可下载FFmpeg的源代码:```bashgit clone https:///ffmpeg.git``````bashcd ffmpeg```第三步,配置编译选项在编译FFmpeg之前,需要对其进行配置,配置编译选项。
FFmpeg的配置支持很多参数,可以根据需要进行定制。
通常情况下,我们可以使用以下命令进行配置:--prefix参数指定FFmpeg安装的路径,--enable-gpl参数表示开启GPL许可证的功能,--enable-libx264和--enable-libx265参数表示开启x264和x265编码器的支持。
在配置时,还可以根据实际需要添加其他参数,比如开启其他编码器的支持、开启特定格式的支持等。
linux下安装FFMPEG全纪录
怎样安装ffmpeg?1,cd /usr/local/src下载最新版本的ffmpeg:svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg2,cd ffmpeg./configuremake && make install以上是安装不带任何解码库的ffmpeg。
使用ffmpeg命令进行测试安装是否成功。
例如:ffmpeg --helpII,要加入则在./configure后面加上选项,前提是已经编译安装了这种编码库。
[root@ip-208-109-221-163 ffmpeg]# ffmpeg --helpffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory找不到libavdevice.so.52库。
解决方案:(成功解决问题的方案)首先到/usr/local/lib/目录下去查看是否有libavdevice.so.52,然后设置环境变量:export LD_LIBRARY_PA TH=/usr/local/lib/注意:这种方案经验证,关闭终端再打开终端,这个环境变量就失效了,也就是说只对当前终端有效最终解决方案://**********************************************因为找不到库文件。
编辑/etc/ld.so.conf,加入一行:/usr/local/lib执行ldconfig命令即可。
//**************************************然后添加软链接。
ln -s /usr/local/lib/libavdevice.so.52 /usr/lib/libavdevice.so.52安装成功后,测试:ffmpe g -i /home/admn/public_html/ConvertVedioT est/rjmj.mpeg -ab 56 -ar 22050 -b 500 -r 15 -qscale 4 -s 640*480 rjmj.flv转换成功。
ffmpeg编译、使用与常见问题
FFMPEG编译、使用与常见问题一. Linux下FFMPEG的安装与测试 (1)二. FFMPEG编译中出现的一些问题与解决方法 (4)三. FFMpeg简介及命令选项参数 (8)四. FFMPEG与x264的编译 (13)一.Linux下FFMPEG的安装与测试a. 先装mp3在linux下的包:lame-3.97.tar.gz;tar -xvzf lame-3.97.tar.gz;cd lame-3.97;./configure --enable-shared --prefix=/usr/;make;make install;b. 支持Ogg Vorbis:as4自带相应的rpm包,你可以安装一下如下rpm包:libvorbis, libvorbis-devel,libogg, libogg-devel 一般情况下as4都会安装c. 支持xvid x264,现在最流行的两种高质量的压缩格式xvid的编译安装wget /downloads/xvidcore-1.1.0.tar.gztar zvxf xvidcore-1.1.0.tar.gzcd xvidcore-1.1.2/build/generic./configure --prefix=/usr --enable-sharedmakemake installx264的获取用git:git clone git:///x264.gitcd x264./configure --prefix=/usr --enable-sharedmakemake install3d. AC3和dts编码的支持as4系统似乎已经支持ac3编码,编译的时候只要加--enable-a52 --enable-gpl参数就行libdts编译参数tar zxvf libdts-0.0.2.tar.gz./configure --prefix=/usrmakemake installe. mpg4 aac格式支持,由于服务器还针对手机用户服务,所以,类似aac,mpg4铃声格式的支持,我们也得做。
ffmpeg-编译
一、安装编译所需的工具和库:
(1)先可以执行命令:
sudo apt-get purge ffmpeg x264 libx264-dev
清除原来的安装包
(2)然后执行命令:
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libMP3lame-dev libsdl1.2-dev libtheora-dev libx11-dev libxvidcore4-dev zlib1g-dev
ftp:///pub/videolan/x264/snapshots/
安装方法如下:Java代码
bunzip2 x264-snapshot-20070913-2245.tar.bz2
tar xvf x264-snapshot-20070913-2245.tar
当启动成功后,就不用管了,我们另开启一个终端测试,是否配置成功
输入:
ffplay http://localhost:8090/Blue
或
ffplay http://localhost:8090/testflv
如果能正常播放的话,那说明已经配置成功了
现在我们要做的是通过ffmpeg来将,数据字入缓冲区feed1.ffm中
File "Blur.MP3"
Format flv
</Stream>
表示创建一个以当前文件所在目录下的Blur.MP3创建的流,Blue,并将他以flv格式播放
ffmpeg 源码编译
ffmpeg 源码编译FFmpeg是一种开源的跨平台音视频处理工具,可以对音视频进行转换、编辑、截取、合并等操作。
如果我们需要定制FFmpeg的功能,就需要对源码进行编译。
下面是FFmpeg源码编译的流程:1、获取源码FFmpeg源码可以从官网上下载,也可以通过Git Clone命令从Github上获取。
选择下载哪个版本的源码,取决于需要实现的具体功能。
2、安装编译工具编译FFmpeg需要一些编译工具的支持,如yasm、gcc、make等。
在Linux系统中,可以通过以下命令安装:sudo apt-get updatesudo apt-get install build-essential yasm3、配置编译选项在源码根目录下执行以下命令,配置编译选项:./configure --enable-shared其中,--enable-shared选项表示生成共享库。
如果需要开启某些功能,可以在configure命令中添加对应的选项,如:--enable-libmp3lame 表示支持LAME MP3编码器--enable-libfreetype 表示支持Freetype字体库--enable-libx264 表示支持x264编码器4、编译源码make编译过程可能会持续一段时间,取决于源码的大小和计算机性能。
如果出现编译错误,需要根据错误提示进行调试。
5、安装FFmpeg在编译完成后,执行以下命令安装FFmpeg:sudo make installffmpeg -version如果出现FFmpeg版本号,则表示安装成功。
总结通过以上几个步骤,就可以成功编译安装FFmpeg了。
当然,编译过程中可能会出现各种问题,需要仔细查看错误信息,并根据具体情况进行调试。
嵌入式Linux系统中图片解码和显示的跨平台支持技术
嵌入式Linux系统中图片解码和显示的跨平台支持技术在嵌入式Linux系统中,图片解码和显示的跨平台支持技术是一个关键的问题。
由于嵌入式系统的资源有限,加上不同硬件平台和操作系统的差异,如何有效地实现图片的解码和显示成为了一个挑战。
本文将介绍几种常用的跨平台支持技术,包括FFmpeg、GStreamer和SDL。
一、FFmpegFFmpeg是一个开源的跨平台多媒体解决方案,它包含了一系列处理音视频的库和工具。
对于图片解码和显示,FFmpeg提供了libavcodec和libavformat两个库来支持各种格式的图片解码和编码。
同时,FFmpeg还提供了libswscale库用于图片的缩放和转换,以及libavutil库用于处理音视频数据。
在嵌入式Linux系统中,我们可以使用FFmpeg的库函数来实现图片的解码和显示。
首先,我们需要使用libavformat库中的avformat_open_input函数打开图片文件,并通过avformat_find_stream_info函数获取图像流信息。
然后,我们可以使用libavcodec库中的avcodec_find_decoder函数查找合适的解码器,并通过avcodec_open2函数打开解码器。
接下来,我们可以使用avcodec_decode_video2函数对图像进行解码,并将解码得到的图像数据进行显示。
最后,我们需要释放相关资源,如关闭文件和释放内存。
二、GStreamerGStreamer是一个开源的多媒体框架,可以用于构建多媒体应用程序。
它提供了丰富的插件和管道,可以支持多种媒体格式的解码和编码。
对于图片解码和显示,GStreamer提供了gst-launch-1.0命令行工具和GstPlayer库来实现。
在嵌入式Linux系统中,我们可以使用GstPlayer库中的功能来实现图片的解码和显示。
首先,我们可以使用gst_player_new函数创建一个GstPlayer对象,并使用gst_player_set_uri函数设置要播放的图片文件的路径。
ffmpeg库编译
ffmpeg库编译FFmpeg库是一款功能强大的开源音视频处理工具,可以用于音视频采集、转码、合并、剪辑等各种操作。
本文将介绍如何编译FFmpeg 库,以及常用的编译选项和配置方法。
编译环境准备:1. 安装编译工具:gcc、g++、make等。
2. 安装相关库文件:libx264、libmp3lame、libopus等,这些库文件是FFmpeg常用的编解码器,需要提前安装好。
编译FFmpeg库:1. 下载FFmpeg源代码,并解压到指定目录。
2. 进入解压后的目录,运行以下命令进行配置:./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-gpl --enable-libx264 --enable-libmp3lame--enable-libopus其中,--prefix指定安装目录,--enable-shared表示编译为动态链接库,--enable-gpl表示使用GPL协议,--enable-libx264、--enable-libmp3lame、--enable-libopus表示启用对应的编解码库。
3. 配置完成后,运行make命令进行编译。
如果编译成功,会在当前目录下生成对应的库文件和可执行文件。
常用编译选项:1. --enable-shared:编译为动态链接库。
2. --enable-static:编译为静态链接库。
3. --enable-gpl:使用GPL协议。
4. --enable-nonfree:使用非自由协议。
5. --disable-encoders:禁用指定的编码器。
6. --disable-decoders:禁用指定的解码器。
7. --disable-protocols:禁用指定的协议。
编译FFmpeg库需要的相关库文件:1. libx264:H.264编码器。
2. libmp3lame:MP3编码器。
LINUX下编译ffmpeg-x264
LINUX下编译ffmpeg-x2641版本:X264.r663,ffmpeg.r94532yasm2.1 下载yasm新版本要安裝x264,就需要用yasm來編譯。
那就先裝個yasm吧。
yasm下載網址:/projects/yasm/releases/yasm-0.6.0.tar.gz2.2 编译安装#tar xzvf yasm-0.6.0.tar.gz#cd yasm-0.6.0#./configure --prefix=/usr/local/yasm#make#make instal l3x2643.1 编译3.1.1编译静态库3.1.2编译动态库3.2 安装由于一般ffmpeg采用静态连接x264,所以只需要编译安装x264静态库#cp libx264.a /usr/lib#cp x264.h /usr/include4ffmpeg4.1 下载到FFmpeg官方下载最新的FFmpeg版本。
CVS服务器地址如下:cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co ffmpeg。
现在已改成SVN下载:svn://svn.mplayerhq.hu/ffmpeg4.2 编译安装#./configure --enable-shared --disable-static --enable-memalign-hack --enable-libx264 --enable-gpl --enable-pthreads#make#make installmake install结果:1)头文件:/usr/local/include/ffmpeg-rw-r--r-- 1 root root 5180 7月 3 17:18 swscale.h-rw-r--r-- 1 root root 3053 7月 3 17:18 rtsp.h-rw-r--r-- 1 root root 1712 7月 3 17:18 rtspcodes.h-rw-r--r-- 1 root root 3797 7月 3 17:18 rtp.h-rw-r--r-- 1 root root 7647 7月 3 17:18 rgb2rgb.h-rw-r--r-- 1 root root 3062 7月 3 17:18 rational.h-rw-r--r-- 1 root root 2408 7月 3 17:18 random.h-rw-r--r-- 1 root root 3087 7月 3 17:18 opt.h-rw-r--r-- 1 root root 2044 7月 3 17:18 mem.h-rw-r--r-- 1 root root 1174 7月 3 17:18 md5.h-rw-r--r-- 1 root root 1767 7月 3 17:18 mathematics.h-rw-r--r-- 1 root root 1132 7月 3 17:18 lzo.h-rw-r--r-- 1 root root 3599 7月 3 17:18 log.h-rw-r--r-- 1 root root 1302 7月 3 17:18 intfloat_readwrite.h-rw-r--r-- 1 root root 2343 7月 3 17:18 integer.h-rw-r--r-- 1 root root 2943 7月 3 17:18 fifo.h-rw-r--r-- 1 root root 9315 7月 3 17:18 common.h-rw-r--r-- 1 root root 1223 7月 3 17:18 base64.h-rw-r--r-- 1 root root 6020 7月 3 17:18 avutil.h-rw-r--r-- 1 root root 2494 7月 3 17:18 avstring.h-rw-r--r-- 1 root root 9406 7月 3 17:18 avio.h-rw-r--r-- 1 root root 31796 7月 3 17:18 avformat.h-rw-r--r-- 1 root root 95102 7月 3 17:18 avcodec.h-rw-r--r-- 1 root root 993 7月 3 17:18 adler32.h2)库文件:/usr/local/libdrwxr-xr-x 2 root root 4096 7月 3 17:18 vhookdrwxr-xr-x 2 root root 4096 7月 3 17:18 pkgconfig-rwxr-xr-x 1 root root 29412 7月 3 17:18 libavutil.so.49.4.1lrwxrwxrwx 1 root root 19 7月 3 17:18 libavutil.so.49 -> libavutil.so.49.4.1lrwxrwxrwx 1 root root 19 7月 3 17:18 libavutil.so -> libavutil.so.49.4.1-rwxr-xr-x 1 root root 557856 7月 3 17:18 libavformat.so.51.12.1lrwxrwxrwx 1 root root 22 7月 3 17:18 libavformat.so.51 -> libavformat.so.51.12.1lrwxrwxrwx 1 root root 22 7月 3 17:18 libavformat.so -> libavformat.so.51.12.1-rwxr-xr-x 1 root root 4105568 7月 3 17:18 libavcodec.so.51.40.4lrwxrwxrwx 1 root root 21 7月 3 17:18 libavcodec.so.51 -> libavcodec.so.51.40.4lrwxrwxrwx 1 root root 21 7月 3 17:18 libavcodec.so -> libavcodec.so.51.40.44.3 合并libavcodec和libavutil1)新建一个目录make_my2)拷贝需要的.o文件a)#cp ffmpeg/libavcodec/*.o make_myb)#mkdir make_my/i386c)#cp ffmpeg/libavcodec/i386/*.o make_my/i386d)#cp ffmpeg/libavutil/*.o make_my3)合并libavcodec和libavutil成一个库(注意路径问题)gcc -shared -Wl,-soname,libavcodec.so.51 -pthread -rdynamic -export-dynamic -Wl,--warn-common -Wl,--as-needed -Wl,-rpath-link,"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavcodec-Wl,-rpath-link,"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavformat-Wl,-rpath-link,"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavutil -o libavcodec.so.51 bitstream.o utils.o allcodecs.o mpegvideo.o jrevdct.o jfdctfst.o jfdctint.o resample.o resample2.o dsputil.o motion_est.o imgconvert.o mpeg12.o simple_idct.o ratecontrol.o eval.o error_resilience.o raw.o faandct.o parser.o rangecoder.o h263.o opt.o bitstream_filter.o audioconvert.o imgresample.o i386/fdct_mmx.o i386/cputest.o i386/dsputil_mmx.o i386/mpegvideo_mmx.o i386/motion_est_mmx.oi386/simple_idct_mmx.o i386/idct_mmx_xvid.o i386/fft_sse.o i386/fft_3dn.o i386/fft_3dn2.o aasc.o ac3enc.o ac3tab.o ac3.o alac.o asv1.o atrac3.o mdct.o fft.o avs.o bethsoftvideo.o bmp.o bmpenc.o c93.o cavs.o cavsdsp.o golomb.o cinepak.o cljr.o cook.o cscd.o cyuv.o dca.o dnxhddec.o dsicinav.o dvbsubdec.o dvbsub.o dvdsubdec.o dvdsubenc.o dv.o dxa.o 8bps.o ffv1.o huffyuv.o flac.o flacenc.o flashsv.o flashsvenc.o flicvideo.o 4xm.o fraps.o gifdec.o lzw.o gif.o h261dec.o h261.o h261enc.o h263dec.o h264.o h264idct.o cabac.o idcinvideo.o imc.o indeo2.o indeo3.o interplayvideo.o dpcm.o jpeglsdec.o jpegls.o mjpegdec.o mjpeg.o jpeglsenc.o kmvc.o ljpegenc.o mjpegenc.o loco.o mace.o mjpegbdec.o mmvideo.o mpegaudiodec.o mpegaudiodecheader.o mpegaudio.o mpegaudiodata.o mpegaudioenc.o mpc.o msmpeg4.o msmpeg4data.o msrle.o msvideo1.o lcl.o nuv.o rtjpeg.o pnmenc.o pnm.o png.o ptx.o qdm2.o qdrw.o qpeg.o qtrle.o qtrleenc.o ra144.o ra288.o roqvideodec.o roqvideo.o roqvideoenc.o elbg.o roqaudioenc.o rpza.o rv10.o sgidec.o sgienc.o rle.o shorten.o smacker.o smc.o snow.o sonic.o sp5xdec.o svq1.o targa.o targaenc.o vp3.o xiph.o vp3dsp.o tiertexseqv.o tiff.o tiffenc.o lzwenc.o truemotion1.o truemotion2.o truespeech.o tscc.o tta.o txd.o s3tc.o ulti.o vc1.o vc1data.o vc1dsp.o vcr1.o vmdav.o vmnc.o vorbis_dec.o vorbis.o vorbis_data.o vorbis_enc.o vp5.o vp56.o vp56data.o vp6.o vqavideo.o wavpack.o wmadec.o wma.o wmaenc.o wnv1.o ws-snd1.o xan.o xl.o zmbv.o zmbvenc.o pcm.o adpcm.o adx.o g726.o libx264.o aac_parser.o aac_ac3_parser.o ac3_parser.o cavs_parser.o dca_parser.o dvbsub_parser.o dvdsub_parser.o h261_parser.o h263_parser.o h264_parser.o mjpeg_parser.o mpeg4video_parser.o mpegaudio_parser.o mpegvideo_parser.o pnm_parser.o vc1_parser.o dump_extradata_bsf.o remove_extradata_bsf.o noise_bsf.o mp3_header_compress_bsf.o mp3_header_decompress_bsf.o mjpega_dump_header_bsf.o imx_dump_header_bsf.o pthread.o i386/idct_mmx.o i386/cavsdsp_mmx.o i386/snowdsp_mmx.o i386/vp3dsp_mmx.o i386/vp3dsp_sse2.o tree.o string.o rational.o random.o mem.o md5.o mathematics.o lzo.o log.o lls.o intfloat_readwrite.o fifo.o crc.o base64.o aes.o adler32.o -L"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavutil -lavutil -lm -lz -lx264 -ldl5问题1)configure时提示“bad interpreter”答:vi configure然后:set ff=unix2) configure时提示“某文件权限问题”答:chmod +x filename。
Linux下ffmpeg转换工具配置(MP3和AMR格式文件互转)
Linux下ffmpeg转换工具配置(MP3和AMR格式文件互转)修订记录:目录Linux下ffmpeg转换工具配置(MP3和AMR格式文件互转) (1)一、ffmpeg安装配置 (4)二、特殊说明 (5)一、ffmpeg安装配置1.首先安装系统基础环境RHEL & CentOS 系列# yum install -y automake autoconf libtool gcc gcc-c++2.下载并解压安装包yasm:/Download.html(汇编器,新版本的ffmpeg增加了汇编代码)lame:/download.php(Mp3音频解码)OpenCore AMR (fdk-aac-0.1.3 ):/projects/opencore-amr FFMpeg:/download.html使用tar命令解压相关包3.编译并安装所需源码包1)安装yasm# cd yasm-1.3.0# ./configure# make# make install2)安装lame# cd ../lame-3.99.5# ./configure# make# make install3)安装opencore# cd ../opencore-amr-0.1.3# ./configure# make# make install4)安装ffmpeg# cd ../ffmpeg-2.5.3# ./configure --enable-libmp3lame --enable-version3 --enable-shared# make# make install# ldconfig4.测试执行ffmpeg命令,如出现帮助信息则表示安装成功。
上传一个mp3文件,并执行如下命令,执行完后把test.amr下载下来,听下转换后是否跟mp3文件内容一致,一致则代表转换成功。
# ffmpeg -i test.mp3 test.amr二、特殊说明1.64位操作系统配置64位的操作系统运行ffmpeg命令时,可能会报找不到/usr/lib/libavdevice错误,这个时候就要创建一些文件链接。
ffmpeg库 使用方法
ffmpeg库使用方法ffmpeg 是一个开源的多媒体处理库,用于转换、编辑、录制、删除音频、视频和图像文件。
以下是 ffmpeg 库的一般使用方法:1. 安装 ffmpeg:在 Linux 系统中,可以使用包管理器 (如 apt-get、yum、pacman 等) 安装 ffmpeg。
在 Windows 系统中,可以使用 ffmpeg 的官方网站下载安装程序并按照提示安装。
2. 创建 ffmpeg 脚本:通过创建 ffmpeg 脚本,我们可以方便地自动化多媒体处理任务。
使用以下语法创建一个脚本:```ffmpeg -i <input_file> -acodec <codec_name> -vcodec<codec_name> -f <file_name> <output_file>```其中,`-i <input_file>` 用于指定输入文件,`-acodec<codec_name>` 用于指定音频编码器,`-vcodec <codec_name>` 用于指定视频编码器,`-f <file_name>` 用于指定输出文件名,`<output_file>` 是一个可选参数,指定输出文件路径。
3. 录制多媒体内容:通过使用 `ffmpeg` 的录制功能,我们可以录制屏幕上的多媒体内容。
使用以下语法创建一个录制脚本:```ffmpeg -i <input_file> -acodec <codec_name> -vcodec<codec_name> -f <file_name> -t <倒计时> out.mp4```其中,`-i <input_file>` 用于指定输入文件,`-acodec<codec_name>` 用于指定音频编码器,`-vcodec <codec_name>` 用于指定视频编码器,`-f <file_name>` 用于指定输出文件名,`-t <倒计时>` 用于指定录制时间,`out.mp4` 是一个可选参数,指定输出文件路径。
ffmpeg库 使用方法
ffmpeg库使用方法ffmpeg是一个开源的视频和音频编解码库,可用于转换、编辑、压缩和打包视频和音频文件。
以下是使用ffmpeg库的一般步骤:1. 安装ffmpeg库在命令行中使用FFmpeg库,可以使用以下命令在Linux或MacOS 上安装:```sudo apt-get install ffmpeg```或者```npm install ffmpeg```2. 定义要转换的文件格式在FFmpeg库中,可以使用“-f”选项指定要转换的文件格式,例如:```ffmpeg -i input.mp4 -f mp4 output.mp4```该命令将 input.mp4 文件转换为 .mp4 格式的输出文件。
3. 设置转换参数除了格式选项外,还有许多其他转换选项可用。
例如,可以使用“-v”选项来显示转换进度,使用“-a”选项来设置音频选项,使用“-t”选项来设置帧速率等。
```ffmpeg -i input.mp4 -v -acodec libx264 -t 30 output.mp4 ```该命令将 input.mp4 文件转换为 .mp4 格式,并使用 libx264编码器进行视频转换,同时设置转换时间为 30 秒。
4. 转换完成后,保存文件转换完成后,可以使用以下命令保存转换后的文件:```ffmpeg -f output.mp4 -i input.mp4 -t 30 output.mp4```该命令将文件保存到指定的位置,并在转换完成后设置文件大小为 30 秒。
这只是一个简单的例子,FFmpeg库还有许多其他功能和选项可用。
可以通过搜索FFmpeg库的文档和使用手册来了解更多信息。
Linux实现ffmpegH.265视频编码
Linux实现ffmpegH.265视频编码Linux实现ffmpeg H.265视频编码⼏乎所有观看的视频,数字地⾯电视,电缆,卫星或互联⽹上的压缩。
原始的,未压缩的视频太⼤,会浪费太多的带宽。
在DVD和Blu-ray 之前,有视频CD(VCD)。
这是⽤于在标准120mm(4.7英⼨)光盘。
光盘上的视频被编码为MPEG-1,⼀种⽤于在1处流式传输视频数据的有损压缩格式。
5 Mbit / s。
MPEG-1标准最有名的组件可能是⾳频压缩格式。
官⽅称之为MPEG-1⾳频层III,可能将其称为MP3.MPEG-1来源于MPEG-2,被选为DVD视频的视频压缩标准。
它还被⽤作数字卫星(DVB-S)和数字地⾯电视(DVB-T)的基础视频标准。
MPEG-2也被国际电信联盟(ITU)批准为H.262.DVD光盘后,⽀持MPEG-2编码的视频也⽀持H.264或MPEG-4第10部分,⾼级视频编码(MPEG-4 AVC)正式公布。
MPEG-1:⽤于视频CDsMP3: MPEG-1标准的⼀部分,普遍存在于今天MPEG-2 / H。
262:⽤于DVD和其他数字媒体MPEG-4 Part 10 / H。
264:⽤于Blu-rayMPEG-H / H。
265:下⼀代编码格式⽀持4K和8K分辨率After H.264来了265.它还有⼀些其他名称,最常见的是⾼效率视频编码(HEVC)或MPEG-H。
H。
265数据压缩⽐与H.264,可以⽀持⾼达8192×4320的分辨率。
这意味着相同质量的视频只需要⼀半的带宽(或⽂件⼤⼩)。
或者,这意味着可以以相同的⽐特率显着改善视频的质量,这对于⾮常⾼的清晰度是⾮常重要的(即,即4K和8K)显⽰。
Linux⽤户的好消息是,H.265编解码器在流⾏的编码套件中可⽤265编译获取最新和功能最强⼤的ffmpeg版本的最简单的⽅法是下载静态链接的构建。
下载32位或64位。
柏油。
xz⽂件。
ffmpeg二进制文件用法 -回复
ffmpeg二进制文件用法-回复FFmpeg是一个强大的开源多媒体框架,可以用于多种音频和视频处理任务。
在本文中,我们将详细介绍FFmpeg二进制文件的用法,并提供一步一步的指南帮助您正确地使用FFmpeg。
第一步:安装FFmpeg二进制文件要开始使用FFmpeg,您需要从官方网站(- 对于Windows用户,您可以下载一个静态编译版本的FFmpeg。
这个版本包含了所有必要的库和依赖项,可以直接运行,无需进一步配置。
- 对于Mac用户,您可以使用Homebrew作为包管理器来安装FFmpeg。
只需在终端中运行以下命令:brew install ffmpeg- 对于Linux用户,您可以使用包管理器(如apt、yum)或者从源代码编译来安装FFmpeg。
使用包管理器,只需在终端中运行适当的安装命令,例如:apt-get install ffmpeg。
如果您选择从源代码编译,请从FFmpeg 官方网站下载最新的源代码,并按照官方指南进行编译和安装。
第二步:熟悉FFmpeg基本用法一旦您成功安装了FFmpeg二进制文件,您就可以开始使用它来进行音频和视频处理任务。
FFmpeg的命令行界面相当强大且灵活,可以实现各种操作。
下面是一些常见的FFmpeg用法示例:- 转换媒体格式:您可以使用FFmpeg将一个媒体文件转换为另一种格式。
例如,要将一个MP4文件转换为AVI文件,可以使用以下命令:ffmpeg -i input.mp4 output.avi- 裁剪和拼接视频:您可以使用FFmpeg裁剪和拼接视频片段。
例如,要从一个视频中提取前10秒的片段,可以使用以下命令:ffmpeg -i input.mp4 -ss 00:00:00 -t 00:00:10 output.mp4- 调整音频和视频质量:您可以使用FFmpeg调整音频和视频的质量参数。
例如,要将一个视频的比特率设置为5000 kbps,可以使用以下命令:ffmpeg -i input.mp4 -b:v 5000k output.mp4- 添加字幕和水印:您可以使用FFmpeg添加字幕和水印到视频中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
./configure \
--arch=x86_64 --host-os=linux \
--extra-cflags="-fPIC" \
--disable-yasm \
--enable-static \
--disable-shared \
--enable-small \
原因
应用程序进行链接的时候,动态库中全局变量定义,将会被应用程序中同名的全局变量所覆盖。这样也就造成了,在动态库中修改A变量时,应用程序中的A也发生了变化。
解决方法
在创建动态链接库时,gcc/g++选项中添加编译选项
-Wl,-Bsymbolic.
其中 Wl 表示将紧跟其后的参数,传递给连接器 ld 。 Bsymbolic 表示强制采用本地的全局变量定义,这样就不会出现动态链接库的全局变量定义被应用程序/动态链接库中的同名定义给覆盖了!
在编译自己程序时, 链接过程中加入 Wl,-Bsymbolic
-Wl,-Bsymbolic /usr/local/ffmpeg2/lib/libavcodec.a
问题描述
回归正题,前段时间项目开发中,实现了一个动态库,封装了一些方法。然后基于这个动态库,实现了一个应用程序。应用程序中含有全局变量A,动态库中也含有全局变量A,当我调用动态库中函数后,发现应用程序的A发生了变化!!!O,My God!对于我这种还没在Linux下做过开发的人来说,一头雾水。。。。。。 于是我尝试着,将A中的变量名称改为B,这样问题也就没有了~~~
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--disable-ffprobe \
--prefix=/usr/local/ffmpeg2 \
--enable-pic \
--disable-symver
./configure --enable-shared --disable-yasm --prefix=/usr/local/ffmpeg --enable-pic --disable-symver
阿里云这坑爹的玩意,不再对32为系统支持,没办法,我们只能将我们的程序移植到64位下。
/usr/bin/ld: failed to set dynamic section sizes: Bad value
解决: ./configure --disable-symver
3. libavcodec.a: relocation R_X86_64_PC32 against symbol `ff_pw_9' can not be used when making a shared object; recompile with -fPIC, 参考problem compiling statically to make a shared lib
1. 静态库没有fPIC编译, 只要在configure时加上--enable-shared即可, 即: ./configure --enable-shared
2. 版本号问题, 参考 gcc linker error: version node not found for symbol
/usr/bin/ld: libgetfea.so: @LIBAVCODEC_55
我编译一个so文件这个文件应用了几个第三方静态库,当然,第三方已经为我们提供了64位的静态库,编译动态库需要使用-fPIC选项,但是我编译不通过,提示为:relocation R_x86_64_32 against 'a local symbol' can not be used when making a shared object; recompile whth -fPIC。这就奇怪了,我用了-fPIC啊。后来上网查找,可能引起问题的是静态库没有使用这个选项,当然静态库不是必须使用这个选项的,只是在64位下检查可能比较严格,让第三方使用-fPIC重新编译了一下,OK了