当前位置:文档之家› ffmpeg时间戳问题汇总

ffmpeg时间戳问题汇总

ffmpeg时间戳问题汇总
ffmpeg时间戳问题汇总

ffmpeg时间戳问题汇总

A:RFC3984 规定采用 90000 Hz 的时钟,因此如果编码帧频是 30,那么时间

戳间

隔就该是 90000 / 30 3000,根据抓包来看,似乎时间戳间隔的确是 3000。

时间戳

的间隔不固定,比如有的时间戳间隔是 2990 有的是 3002,会导致解析出来的视

频快播的效果么Q:各位大侠好:我现在正在开发视频实时流播放,简单的过程

下:采集视频流 - 视频流转换为 Sorenson H.263 编码格式 - 把编码的实时

流通过

RTMP 协议发送 - flash 客户端进行播放。现在我的时间戳颗粒是这样生成的:第

一帧的时间戳为 0;第二帧的时间戳的算法为:第一个字符编码的当前时间 -

上一

帧第一个字符编码的当前时间根据这个时间颗粒的算法,我在 flash 客户端

播放就

会产生延时。请问各位大侠有什么好的建议或是文档之类的,以前 firstime 管管建

议我看 RFC4629 文档,但是效果不太明显,谢谢~A;时间戳顺序累加就行了,每次加 1Q:最近做了一个捕捉摄像头并保存 FLV 的小东西,发现转换完毕后

FLV 文件,用播放器播放的时候,速度特别快,大概是正常速度的 4 倍。请问这

是怎么回事,网上搜了一下,说是时间戳的问题,可是 PTS 我跟了,AVPacket 的

PTS 是每帧增长 40,time_base 为: 25/s.。DTS 是个无效值。PTS 的计算是根据

ffmpeg 的例子写的。pkt.pts av_rescale_qoAcc-coded_frame-pts oAcc-time_base audio_st-time_base1. dts 到底需不需要自己计算,2. 还有播放速度过快的可能原

因,3. 还有 PTS 和 DTS 的具体含义,int64_t pts /// presentation time stamp in time_base unitsint64_t dts /// decompression time stamp in time_base units上面的意思

是不是说,播放器根据 PTS 进行播放。然后 DTS 是在编码的时候自己设置,刚

用 ffmpeg,好些东西不懂,还请大侠多多指教------刚才又试了一下,把time_base 降

为 10 帧每秒。播放速度和正常速度接近。但是不知道 FLV 文件的帧率该设置多

少合适。有没有一个权威的说法。A:我也做摄像头捕捉,跟你出现一样的问题,我

自己分析的话,应该是捕捉摄像头的图像的速度只有 10 帧每秒,但是保存成视频

25 帧每秒的话播放看起来就非常快,但是我摄像头捕捉设定的是 25 帧每秒,难道

是速度达不到,反正我还没解决,LZ 解决了的话告诉下,谢谢。暂时认为是摄像

头捕捉速率问题。换了一个高清无驱摄像头就好了Q:在每个音视频数据包中都含有

PTS 和 DTS,一个数据包中应该含有多个数据帧以及音频数据,那么这里的PTS

和 DTS 它是如何来标识数据帧的,PTS 和 DTS 的单位是什么,视频的最小单位是帧,可通过 PTS 来指定它何时播放,那音频的最小单位是什么,这里的PTS

对音频而言它标识的是什么,是这个时间点采样点吗,在网上找了很久关于音视频

编解码的资料,都没有合适的A:audio_timebase

av_q2dfmtctx-streamsaudio_index-time_basevideo_timebase

av_q2dfmtctx-streamsvideo_index-time_baselast_video_pts pts

video_timebaselast_audio_pts pts audio_timebasetimebase 就是单位以 audio 为基

准同步 video。只要设置好了 ao 的参数,如 sample rate channels sample size 等,

audio 驱动就能以正确的速度播放,所以只要程序里 write不出大问题的话,这种同

步是非常有效的。在 video out 里如下做:pre_time

av_gettimegl_vo-vo_displaypicafter_time av_gettimerest_time 10001000/fps -

after_time - pre_timeav_diff last_audio_pts - last_video_ptsif

av_diff 0.2 if

av_diff 0.5 rest_time - rest_time / 4 else rest_time - rest_time /

2else if av_diff

-0.2 if av_diff -0.5 rest_time rest_time / 4 else rest_time

rest_time / 2if rest_time

0 usleeprest_timeQ:谢谢 kf701 的回复,看后明白了不少这种同步是音频抽样一次

就与一帧图像去同步的吗,A:上面的代码是每 display 一个 picture就与audio 的

PTS 比较一下如果没有 audio只有 video那么 video 就会以 fps 显示靠的就是那

个 usleeprest_timeQ:如何利用 AVPacket 包里的 ptsdts 实现音视频同步,

声频播

放是只管自己播放,视频有一个初始化播放帧率,如何根据 AVPacket 里的ptsdts

还实现两者的同步,现在我的视频播放一直按原始播放帧率播放,声音有点卡

~哪

位知道,尽快告知小弟~A:DTS:decoding time stampPTS:presentation time stampGenerally the PTS and DTS will only differ when the stream we are playing has B

frames in it.Q: 关于 b 帧和时间戳的问题我从 mpeg2 视频中用

av_read_frame读

取视频帧并解码,顺序是IPBBPBB...它们的 pts 顺序是 1423756...现在我要把这个

视频再用 mpeg2 编码,最大 b帧数还是 2.那么我在编码时是否要将视频数据调整

为按显示时间先后的顺序,再交给 avcodec_encode_video编码,即把第 2 帧放在

3、4 帧之后,第 7帧放在 5、6 帧之后,A:你不能这么做,编码器会给你这么做的。

如果你有 B 帧,那么所有的 B 帧都会被放在缓冲区里直到下一个 I/P 帧到来例

如:你的输入序列是 IBBPBBPBBI那么输出的序列是输入 I,编码 I,输出 I 输入 B

输入 B输入 P,编码 P,输出 P编码 B,输出 B编码 B,输出 B输入 P编码P,

输出 P。。。。。。在解码端所有的 P 帧都会被放在缓冲力直到下一个 I/P 真的

到来如:解码 I,输出 I解码 P放入缓冲 P解码 B,输出 B解码 B,输出 B 解码 P,

输出上一次 P 帧Q:解码出来的图片的时间戳问题 MPEG 一个包中包含有时间戳

而可能几个包才能解码出一张图象也可能一个包能解码出几张图请问包中的时间

戳与解码出来的图象如何对应上A:在 ffmpeg 中通过 parser 部件把从avformat 部

件取下来的原始包重新“合成”为有仅包含一个完整帧的包。从 MPEG2 部份的代码

中看出,如果“几个包才能解码出一张图象”的话,会取第一个包的 PTS 和DTS,

如果“也可能一个包能解码出几张图”,则会跟据这个包的 PTS 和 DTS通过帧频推

算出其它帧的 DTS。Q: ffmpeg 的 avcodec_decode_video 函数解码时间戳问题,在

VLC 中调用 avcodec_decode_video 函数进行解码时,AVFrame-pts 时间戳不对,

导致我的图像不能够显示, 请问有谁知道它的解码原理,这个 PTS 怎么得出的

吗,还是外部传入的,A: / NOTE: ipts is the PTS of the _first_ picture beginning in this packet if any / is-video_st-codec-reordered_opaque pkt-pts len1 avcodec_decode_videois-video_st-codec frame got_picture pkt-data pkt-size if decoder_reorder_pts pkt-dts AV_NOPTS_VALUE frame-reordered_opaque AV_NOPTS_VALUE pts frame-reordered_opaque else ifpkt-dts AV_NOPTS_VALUE pts pkt-dts else pts 0 pts av_q2dis-video_st-

time_baseQ:我贴下 VLC 的代码,

(vlc-0.9.8a/modules/codec/avcodec/video.c 文件中) i_used

avcodec_decode_video

p_sys-p_context p_sys-p_ff_pic b_gotpicture p_sys-i_buffer b_flush NULL :uint8_tp_sys-p_buffer p_sys- i_buffer 中间省略取得 PTS , if

p_sys-p_ff_pic-pts printf p_sys-p_ff_pic-pts Lxn p_sys-p_ff_pic-pts p_sys-i_pts p_sys-p_ff_pic-pts 从 AVFrame 结构中取得这个 PTS ,但是这个AVFrame 结构

中取得这个 PTS 从哪里取得的呢,A:时间戳一般是在编码的时候加入到媒体文

件中的,所以在解码时可以从中分析出 PTS。

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 https://www.doczj.com/doc/3918104309.html,/downloads/xvidcore-1.1.0.tar.gz tar zvxf xvidcore-1.1.0.tar.gz cd xvidcore-1.1.2/build/generic ./configure --prefix=/usr --enable-shared make make install x264的获取用git: git clone git://https://www.doczj.com/doc/3918104309.html,/x264.git cd x264 ./configure --prefix=/usr --enable-shared make make install3 d. AC3和dts编码的支持

linux下x264库ARM交叉编译

linux下x264库ARM交叉编译 一、准备工作 1、x264库源码下载地址:http://videolan/developers/x264l 作者目前的版本是x264-snapshot-20160511-2245 2、编译器arm-none-Linux-gnueabi-gcc 二、编译步骤 1、解压安装包 tar -xzvf last_x264.tar.bz2 cd x264-snapshot-20160511-2245 2、修改配置文件 ./configure --disbale-asm 注意:这里加了--disable-asm选项是因为arm-none-linux-gnuabi工具链是没有汇编器,所以禁止此选项 由于未指定--prefix,所以程序会默认安装/usr/local/bin目录下 3、修改config.mak 主要是将相关选项修改为arm-none-linux-gnuabi相关的配置,修改内容如下: SYS_ARCH=ARM CC=arm-none-linux-gnueabi-gcc CFLAGS=-Wno-maybe-uninitialized -Wshadow -O3 -ffast-math -Wall -I. -I$(SRCPATH) -std=gnu99 -D_GNU_SOURCE -fomit-frame-pointer -fno-tree-vectorize LD=arm-none-linux-gnueabi-gcc -o 4、make 5、make install 我的本意是想生成lib264.a静态库的,很奇怪,在x264-snapshot-20160511-2245目录下可以找到lib264.a和lib264.so及相关的头文件,但是没有在/usr/lib/local目录下找到libx264.a,但是有x264。 有点不太理解,而且很多过程基本上按照的网上提供的方式参考操作的,很纳闷哪里出

MATLAB常用函数大全

一、MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数ceil(x):天花板函数,即加入正小数至最近整数rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开 sign(x):符号函数 (Signum function)。 当x<0时,sign(x)=-1; 当x=0时,sign(x)=0; 当x>0时,sign(x)=1。 rem(x,y):求x除以y的馀数 gcd(x,y):整数x和y的最大公因数 lcm(x,y):整数x和y的最小公倍数 exp(x):自然指数 pow2(x):2的指数 log(x):以e为底的对数,即自然对数或 log2(x):以2为底的对数 log10(x):以10为底的对数 二、MATLAB常用的三角函数 sin(x):正弦函数 cos(x):余弦函数

tan(x):正切函数 asin(x):反正弦函数 acos(x):反馀弦函数 atan(x):反正切函数 atan2(x,y):四象限的反正切函数 sinh(x):超越正弦函数 cosh(x):超越馀弦函数 tanh(x):超越正切函数 asinh(x):反超越正弦函数 acosh(x):反超越馀弦函数 atanh(x):反超越正切函数 三、适用於向量的常用函数有: min(x): 向量x的元素的最小值 max(x): 向量x的元素的最大值 mean(x): 向量x的元素的平均值 median(x): 向量x的元素的中位数 std(x): 向量x的元素的标准差 diff(x): 向量x的相邻元素的差 sort(x): 对向量x的元素进行排序(Sorting)length(x): 向量x的元素个数 norm(x): 向量x的欧氏(Euclidean)长度sum(x): 向量x的元素总和 prod(x): 向量x的元素总乘积 cumsum(x): 向量x的累计元素总和 cumprod(x): 向量x的累计元素总乘积 dot(x, y): 向量x和y的内积 cross(x, y): 向量x和y的外积 四、MATLAB的永久常数

matlab 常用函数汇总

matlab 常用函数汇总 编程2008-07-10 21:45:20 阅读46 评论0 字号:大中小订阅matlab常用函数 图形注释 Title 图形标题 Xlabel X轴标记 Ylabel Y轴标记 Text 文本注释 Gtext 用鼠标放置文本 Grid 网格线 MATLAB编程语言 Function 增加新的函数 Eval 执行由MA TLAB表达式构成的字串 Feval 执行由字串指定的函数 Global 定义全局变量 程序控制流 If 条件执行语句 Else 与if命令配合使用 Elseif 与if命令配合使用 End For,while和if语句的结束 For 重复执行指定次数(循环) While 重复执行不定次数(循环) Break 终止循环的执行 Return 返回引用的函数 Error 显示信息并终止函数的执行 交互输入 Input 提示用户输入 Keyboard 像底稿文件一样使用键盘输入 Menu 产生由用户输入选择的菜单 Pause 等待用户响应 Uimenu 建立用户界面菜单 Uicontrol 建立用户界面控制 一般字符串函数 Strings MATLAB中有关字符串函数的说明 Abs 变字符串为数值 Setstr 变数值为字符串 Isstr 当变量为字符串时其值为真 Blanks 空串 Deblank 删除尾部的空串 Str2mat 从各个字符串中形成文本矩阵 Eval 执行由MA TLAB表达式组成的串 字符串比较 Strcmp , , , 比较字符串 Findstr 在一字符串中查找另一个子串

Upper 变字符串为大写 Lower 变字符串为小写 Isletter 当变量为字母时,其值为真 Isspace 当变量为空白字符时,其值为真 字符串与数值之间变换 Num2str 变数值为字符串 Int2str 变整数为字符串 Str2num 变字符串为数值 Sprintf 变数值为格式控制下的字符串 Sscanf 变字符串为格式控制下的数值 十进制与十六进制数之间变换 Hex2num 变十六进制为IEEE标准下的浮点数Hex2dec 变十六制数为十进制数 Dec2hex 变十进制数为十六进制数 建模 Append 追加系统动态特性 Augstate 变量状态作为输出 Blkbuild 从方框图中构造状态空间系统Cloop 系统的闭环 Connect 方框图建模 Conv 两个多项式的卷积 Destim 从增益矩阵中形成离散状态估计器Dreg 从增益矩阵中形成离散控制器和估计器Drmodel 产生随机离散模型 Estim 从增益矩阵中形成连续状态估计器Feedback 反馈系统连接 Ord2 产生二阶系统的A、B、C、D Pade 时延的Pade近似 Parallel 并行系统连接 Reg 从增益矩阵中形成连续控制器和估计器Rmodel 产生随机连续模型 Series 串行系统连接 Ssdelete 从模型中删除输入、输出或状态ssselect 从大系统中选择子系统 模型变换 C2d 变连续系统为离散系统 C2dm 利用指定方法变连续为离散系统 C2dt 带一延时变连续为离散系统 D2c 变离散为连续系统 D2cm 利用指定方法变离散为连续系统 Poly 变根值表示为多项式表示 Residue 部分分式展开 Ss2tf 变状态空间表示为传递函数表示 Ss2zp 变状态空间表示为零极点表示

opencv移植到arm详细过程

Opencv-2.1.0 的arm移植 我的环境 Host:Ubuntu 14.04 Target:tq2410 with Linux 2.6.30.4 Crossing Compiler:arm-linux-gcc 4.3.2 一交叉编译链的安装 1# cd /usr/local 解压,即可得到arm-none-linux-gnueabi 目录 # tar xzvf arm-none-linux-gnueabi-4.3.2.tgz -C ./ 2 编辑/etc/bash.bashrc文件添加把编译器路径到环境变量PA TH中, 只要在这个文件中添加下面这2 个语句即可: PATH=/usr/local/arm/4.3.2/bin:$PA TH export PA TH 3 编辑完毕后使用source /etc/bash.bashrc 命令执行以下这个文件,让设置生效,之后再输入: # arm-none-linux-gnueabi-gcc -v 如果输出下面的信息则表面设置成功: Using built-in specs. Target: arm-none-linux-gnueabi Configured with:/scratch/julian/lite-respin/linux/src/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --enable-shared --enable-symvers=gnu

MATLAB常用指令

MATLAB常用指令 1.常用命令-->管理命令和函数 addpath 添加目录到MATLAB搜索路径 doc 在Web浏览器上现实HTML文档 help 显示Matlab命令和M文件的在线帮助 helpwin helpdesk help lookfor 在基于Matlab搜索路径的所有M文件中搜索关键字partialpath 部分路径名 path 所有关于路径名的处理 pathtool 一个不错的窗口路径处理界面 rmpath 删除搜索路径中指定目录 type 显示指定文件的内容 ver 版本信息 version 版本号 web 打开web页 what 列出当前目录吓所有的M文件Mat文件和Mex文件whatsnew 显示readme文件 which 显示文件位置 (返回) 2.常用命令-->管理变量和工作区(输入输出、内存管理等) clear 从内存中删除 disp 显示文本或数组内容 length 数组长度(最长维数) load 重新载入变量(从磁盘上) mlock 锁定文件,防止文件被错误删除 munlock 解锁文件 openvar 在数组编辑器中打开变量 pack 整理内存空间 save 保存变量到文件8*) size 数组维数 who 列出内存变量 whos 列出内存变量,同时显示变量维数 workspace 显示工作空间窗口 (返回) 3.常用命令-->管理命令控制窗口(command窗口) clc 清空命令窗口 echo 禁止或允许显示执行过程 format 设置输出显示格式 home 光标移动到命令窗口左上角 more 设置命令窗口页输出格式 (返回)

如何用FFmpeg编写一个简单播放器详细步骤介绍

如何用FFmpeg编写一个简单播放器详细步骤介绍(转载) FFmpeg, 播放器, 编写 FFMPEG是一个很好的库,可以用来创建视频应用或者生成特定的工具。FFMPEG 几乎为你把所有的繁重工作都做了,比如解码、编码、复用和解复用。这使得多媒体应用程序变得容易编写。它是一个简单的,用C编写的,快速的并且能够解码几乎所有你能用到的格式,当然也包括编码多种格式。 唯一的问题是它的文档基本上是没有的。有一个单独的指导讲了它的基本原理另外还有一个使用doxygen生成的文档。这就是为什么当我决定研究 FFMPEG来弄清楚音视频应用程序是如何工作的过程中,我决定把这个过程用文档的形式记录并且发布出来作为初学指导的原因。 在FFMPEG工程中有一个示例的程序叫作ffplay。它是一个用C编写的利用ffmpeg来实现完整视频播放的简单播放器。这个指导将从原来Martin Bohme写的一个更新版本的指导开始(我借鉴了一些),基于Fabrice Bellard的ffplay,我将从那里开发一个可以使用的视频播放器。在每一个指导中,我将介绍一个或者两个新的思想并且讲解我们如何来实现它。每一个指导都会有一个C源文件,你可以下载,编译并沿着这条思路来自己做。源文件将向你展示一个真正的程序是如何运行,我们如何来调用所有的部件,也将告诉你在这个指导中技术实现的细节并不重要。当我们结束这个指导的时候,我们将有一个少于1000行代码的可以工作的视频播放器。 在写播放器的过程中,我们将使用SDL来输出音频和视频。SDL是一个优秀的跨平台的多媒体库,被用在MPEG播放、模拟器和很多视频游戏中。你将需要下载并安装SDL开发库到你的系统中,以便于编译这个指导中的程序。 这篇指导适用于具有相当编程背景的人。至少至少应该懂得C并且有队列和互斥量等概念。你应当了解基本的多媒体中的像波形一类的概念,但是你不必知道的太多,因为我将在这篇指导中介绍很多这样的概念。 更新:我修正了在指导7和8中的一些代码错误,也添加-lavutil参数。欢迎给我发邮件到dranger@https://www.doczj.com/doc/3918104309.html,,讨论关于程序问题、疑问、注释、思路、特性等任何的问题 指导1:制作屏幕录像 源代码:tutorial01.c

ffmpeg之参数详解29

本文讲述参数详解 1. ffmpeg.exe -i F:\闪客之家\闪客之 歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpe g -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\tes t.flv 使用-ss参数作用(time_off set the start time offset),可以从指定时间点开始转换任务。如: 转换文件格式的同时抓缩微图: ffmpeg -i "test.avi " -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg ' 对已有flv抓图: ffmpeg -i "test.flv " -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg ' -ss后跟的时间单位为秒Ffmpeg转换命令 ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 17 6x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp 或者 ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp ffmpeg参数设定解说 -bitexact 使用标准比特率 -vcodec xvid 使用xvid压缩 -s 320x240 指定分辨率 -r 29.97 桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97) 画面部分,选其一 -b <比特率> 指定压缩比特率,似乎ffmpeg是自动VBR的,指定了就大概是平均比特率,比如768,1500这样的就是原来默认项目中有的 -qscale <数值> 以<数值> 质量为基础的VBR,取值0.01-255,约小质量越好 -qmin <数值> 设定最小质量,与-qmax(设定最大质量)共用,比如-qmin 10 -qmax 31 -sameq 使用和源同样的质量声音部分 -acodec aac 设定声音编码 -ac <数值> 设定声道数,1就是单声道,2就是立体声,转换单声道的TVrip可以用1(节省一半容量),高品质的DVDrip就可以用2 -ar <采样率> 设定声音采样率,PSP只认24000 -ab <比特率> 设定声音比特率,前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换君默认比特率都较小,要听到较高品质声音的话建议设到160kbps(80)以上 -vol <百分比> 设定音量,某些DVDrip的AC3轨音量极小,转换时可以用这个提高音量,比如200就是原来的2倍这样,要得到一个高画质音质低容量的MP4的话,首先画面最好不要用固定比特率,而用VBR参数让程序自己去判断,而音质参数可以在原来的基础上提升一点,听起来要舒服很多,也不会太大(看情况调整例子:ffmpeg -y -i "1.avi " -title "Test

视频解码中用到的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编译环境有多种可选择方案。这里我们使用MinGW+MSYS。 1.下载mingw+msys并安装 https://www.doczj.com/doc/3918104309.html,/projects/mingw/ mingw,默认安装,在choose components时选择g++ compiler及MinGW Make Msys,默认安装, Do you wish to continue with the post install【yn】,y! Do you have mingw installed?【yn】,y Where is your mingw installation? C:/mingw

用ffmpeg转换视频格式

用?mpeg转换视频格式deanraccoon@https://www.doczj.com/doc/3918104309.html, 2011年5月9日 目录

1实用?fmpeg命令 转自 https://www.doczj.com/doc/3918104309.html,/blog/19-ffmpeg-commands-for-all-needs 转自 https://www.doczj.com/doc/3918104309.html,/spip.php?article36 1.1查看视频文件信息 ffmpeg-i video.avi 1.2N个图片转化视频 ffmpeg-f image2-i image%d.jpg video.mpg 这个命令把当前文件夹下所有图片转成视频文件 1.3视频转化图片 ffmpeg video.mpg image%d.jpg 图片格式包括:PGM,PPM,PAM,PGMYUV,JPEG,GIF,PNG,TIFF,SGI 1.4视频转为iphone可播放的格式 ffmpeg source_video.avi input-acodec aac-ab128kb-vcodec mpeg4-b1200kb-mbd2-flags +4mv+trell-aic2-cmp2-subcmp2-s320x180-title X final_video.mp4 参数含义: ?源文件:source video.avi ?音频编码:aac ?音频的比特率:128kb/s ?视频编码:mpeg4 ?视频比特率:1200kb/s ?视频大小:320px par180px ?结果文件:?nal video.mp4 1.5视频转换成psp格式 ffmpeg-i source_video.avi-b300-s320x240-vcodec xvid-ab32-ar24000-acodec aac final_video.mp4参数含义: ?源文件:source video.avi

linux编译ffmpeg支持x264,x265

linux 编译ffmpeg 支持x264, x265 1. 前言 本教程涉及的ffmpeg, x264, x2652. 环境依赖 2.1 删除系统中安装的ffmpeg等库 [plain] view plain copy sudo apt-get --purge remove ffmpeg mplayer x264 x265 2.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-dev pkg-config texi2html zlib1g-dev 注: 服务器版本可忽略 libsdl1.2-dev libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev2.3 下载源代码 (1) ffmpeg [plain] view plain copy git clone git://https://www.doczj.com/doc/3918104309.html,/ffmpeg.git ffmpeg

(2) x264[plain] view plain copy <pre name="code" class="plain"><pre name="code" class="plain">git clone git://https://www.doczj.com/doc/3918104309.html,/x264.git (3) x265[plain] view plain copy hg clone https://https://www.doczj.com/doc/3918104309.html,/multicoreware/x265 (4) yasm yasm 是x86平台的一个汇编优化器, 能够加快ffmpeg x264的编译 [plain] view plain copy wget https://www.doczj.com/doc/3918104309.html,/projects/yasm/releases/yasm-1.3.0.ta r.gz tar xzvf yasm-1.3.0.tar.gz 3. 编译 3.1 配置编译输出目录 [plain] view plain copy export FFMPEG_PATH="YOUR_PATH" export PATH="$FFMPEG_PATH/bin:$PATH" 例如我输出目录为$HOME/ffmpeg_2.6.3/build_out 那么: [plain] view plain copy export

ffmpeg用法

ffmpeg.exe -i F:\闪客之家\闪客之歌.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\11.flv ffmpeg -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv 使用-ss参数作用(time_off set the start time offset),可以从指定时间点开始转换任务。如: 转换文件格式的同时抓缩微图: ffmpeg -i "test.avi " -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg ' 对已有flv抓图: ffmpeg -i "test.flv " -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg ' -ss后跟的时间单位为秒Ffmpeg转换命令 ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x1 44 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp 或者 ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp ffmpeg参数设定解说 -bitexact 使用标准比特率 -vcodec xvid 使用xvid压缩 -s 320x240 指定分辨率 -r 29.97 桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97) 画面部分,选其一 -b <比特率> 指定压缩比特率,似乎ffmpeg是自动VBR的,指定了就大概是平均比特率,比如768,1500这样的就是原来默认项目中有的 -qscale <数值> 以<数值> 质量为基础的VBR,取值0.01-255,约小质量越好 -qmin <数值> 设定最小质量,与-qmax(设定最大质量)共用,比如-qmin 10 -qmax 31 -sameq 使用和源同样的质量声音部分 -acodec aac 设定声音编码 -ac <数值> 设定声道数,1就是单声道,2就是立体声,转换单声道的TV rip可以用1(节省一半容量),高品质的DVDrip就可以用2 -ar <采样率> 设定声音采样率,PSP只认24000 -ab <比特率> 设定声音比特率,前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换君默认比特率都较小,要听到较高品质声音的话建议设到160kbps (80)以上 -vol <百分比> 设定音量,某些DVDrip的AC3轨音量极小,转换时可以用这个提高音量,比如200就是原来的2倍这样,要得到一个高画质音质低容量的MP4的话,首先画面最好不要用固定比特率,而用VBR参数让程序自己去判断,而音质参数可以在原来的基础上提升一点,听起来要舒服很多,也不会太大(看情况调整例子:ffmpeg -y -i "1.avi " -title "Test " -vcodec xvid -s 368x208 -r 29.97 -b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "1.*** "

linphone语音版移植

Linphone在Linux X86下的编译 (一) Linphone依赖库准备: libogg-1.1.3.tar.gz(https://www.doczj.com/doc/3918104309.html,/releases/ogg/libogg-1.1.3.tar.gz) speex-1.2beta3.tar.gz(依赖于libogg) libosip2-3.3.0.tar.gz(https://www.doczj.com/doc/3918104309.html,/gnu/osip/libosip2-3.3.0.tar.gz) libeXosip2-3.3.0.tar.gz(https://www.doczj.com/doc/3918104309.html,/Unix/NonGNU/exosip/libeXosip2-3.3.0.tar.gz) 依赖库打包下载地址:https://www.doczj.com/doc/3918104309.html,/source/1743975 readline(optional) intltool-0.35.0.tar.gz(optional) ffmpeg(提供Linphone视频支持,如不需视频功能可不要) Linphone版本:linphone-3.2.0.tar.gz O S: Fedora9(VmWare下) (二) 在Linux的/home/cena/目录下新建目录linphone在其中建立sources、build、x86_target、arm_target ;注:这里cena为用户名,以下类同![root @BCD cena]# mkdir –p /home/cena/linphone/sources,/home/cena/linphone/build \ /home/cena/linphone/x86_target, /home/cena/linphone/arm_target 将相应的库与Linphone源码拷贝到sources目录下 |soureces --| libogg-1.1.3.tar.gz --| libosip2-3.3.0.tar.gz

linphone分析

目录 1 LINP HONE 的编译3 1.1 LINPHONE 在ARM 上的编译环境说明3 1.2 LINPHONE 依赖的库3 1.3 LINPHONE 编译脚本3 1.4 编译过程中的问题4 2 LINP HONE 代码分析4 2.1 LINPHONE 的初始化分析4 2.1.1 LINPHONEC 的初始化5 2.1.2 LINPHONE_CORE 的初始化5 2.1.3 ORTP 的初始化5 2.1.4 MEDIASTREAM2 的初始化6 2.1.5 EXOSIP 的初始化6 2.2 LINPHONE 的通话过程分析6 2.2.1 LINPHONE 的命令处理分析7 2.2.2 LINPHONE 的呼叫过程分析7 2.2.3 LINPHONE 的通话过程分析8 2.2.4 LINPHONE 的响应过程分析8 2.3 LINPHONE 中创建以及应用自定义过滤器9 2.3.1 过滤器的基本功能9 2.3.2 过滤器的通用接口10 2.3.3 自定义过滤器10 Linphone 的编译与代码分析 1 Linphone 的编译 1.1 Linphone 在arm 上的编译环境说明 Linphone 在arm 上编译的时候,时常会碰到一些问题,有时候想办法解决了相关的问题,但编译出来的Linphone 在板子上的运行仍然不稳定,或者不能通话。 如果条件允许的话,当碰到这些问题之后,可以换其它的工具链进行编译。我最初编译Linphone 的时候采用的是xscale270 板子自带的工具链,GCC3.4.3 以及uclibc。经过很痛苦 的一番折腾之后,所以的代码最终都编译通过,但是编译出来的linphonec 在板子上运行在通话开始之后总是崩溃。通过GDB 调试,发现是多线程的问题引起的,于是编译了一个线程结构相当的程序,但是测试没有发现问题。 最后,我改用GCC4.0.0 以及Glibc-2.3.5 基本上没有碰到什么问题,直接编译通过,并 且在板子上正常运行。 1.2 Linphone 依赖的库 除了上面所提到的Gcc,Glibc 以及系统的基本库外我主要编译了下面的程序包。 序号库名称说明 1 ReadLine 一个终端显示库,Linphone 会用到它时里面的事件循环机制来读取会话事件。 2 ffmpeg 音视频编解码库 3 Speex 专为通话过程设计的音频编码库 4 libtheora 视频压缩编码库 5 libfaac mpeg4 的音频编码器 6 libfaad2 AAC 音频解码器

ARM视频监控系统投标书

海思工作室 杭州汇文教育咨询有限公司 ——ARM监控系统投标书 海思工作室

目录 一、公司介绍及优势 (2) 1.1公司简介 (2) 1.2系统定位和意义 (2) 1.3公司在本项目中的优势 (3) 二、项目技术方案 (3) 2.1系统框架 (3) 2.2项目目标 (4) 2.3技术路线 (4) 2.3.1 构建基于S3C2440的Linux平台 (4) 2.3.2 视频监控终端软件的设计 (5) 2.3.3 视频监控服务器软件的设计 (6) 2.4使用与维护 (8) 2.4.1 维护简介 (8) 2.4.2 承诺与服务 (9) 三、项目管理及实施计划 (10) 3.1实施计划 (10) 3.2项目管理方案 (10) 3.2.1 整体管理 (10) 3.2.2 会议制度 (11) 3.2.3 临时工作调配 (12) 3.3质量控制管理 (12) 3.3.1 质量基本规划 (12) 3.3.2 质量保证 (12) 3.3.3 质量检查 (13) 3.3.4 风险控制 (13) 四、资源列表及项目报价 (13) 4.1所需资源列表 (13) 4.1.1 硬件资源 (13) 4.1.2 软件资源 (14) 4.1.3 人力资源 (14) 4.2项目报价 (14)

ARM嵌入式视频监控系统投标书首先,感谢杭州汇文教育咨询有限公司的关注,以及提供我们参与此次项目的机会,让我们工作室的学员们能够更好地积累实战经验,为踏上社会之路做充分的准备。冀望于此次接触机会及交流过程,能够成为中国计量学院和杭州汇文教育咨询有限公司打开双方合作之门的良好基石。 在调查和理解ARM视频监控系统的目标,以及对视频监控系统相关背景分析的基础上,我们撰写本文。旨在向杭州汇文教育咨询有限公司介绍我们对此项目的思路及相关建议,且展示海思工作室在此次项目上的计划与执行能力。 一、公司介绍及优势 1.1 公司简介 海思工作室(HSS)于2010年3月12日于成立于中国计量学院,本着“happy 快乐、strive奋斗、solidarity团结”的宗旨,致力于嵌入式软件项目开发和制作。目前公司有12名优秀成员。 虽然,本公司成立时间不长,但是公司成员从大一开始就已经学习掌握C语言知识,距今已近三年,因此底蕴深厚,对于C语言和嵌入式也是非常了解。部分成员在校期间曾获多次奖学金和各类奖项。我们竭尽所能把一切资源投在产品开发上,力求高效、质优、价廉、款佳。傲视同仁,迎合市场所需,满足客户所求。锐意进取,精益求精。面对任何机遇与挑战,我们正以饱满的热情,坚定不移的信心,在嵌入式的道路上阔步前进。未来的日子里,我们将继续以最实惠的价格,最优质的产品、最完善的服务,回报新老客户。以一流的人才,一流的管理,一流的的服务,立足中国,面向世界,与您携手并肩,共创美好的明天。 1.2 系统定位和意义 图像与视频监控系统是应用计算机与通讯技术实现对目标区域信息监控的系统,常用于交通,能源,公安,电信,军事等部门。随着计算机技术及网络技术的迅猛发展,视频监控系统的发展趋势必然是全面数字化、网络化,即采用嵌入式网络摄像机,利用网络进行传输,利用嵌入式监控设备体积小巧、性能稳定、

MATLAB常用命令检索大全

MATLAB命令 MATLAB COMMANDS AND FUNCTIONS LIST A A ABS 绝对值、模、字符的ASCII码值 ACOS 反余弦 ACOSH 反双曲余弦 ACOT 反余切 ACOTH 反双曲余切 ACSC 反余割 ACSCH 反双曲余割 ALIGN 启动图形对象几何位置排列工具 ALL 所有元素非零为真 ANGLE 相角 ANS 表达式计算结果的缺省变量名 ANY 所有元素非全零为真 AREA 面域图 ARGNAMES 函数M文件宗量名 ASEC 反正割 ASECH 反双曲正割 ASIN 反正弦 ASINH 反双曲正弦 ASSIGNIN 向变量赋值 ATAN 反正切 ATAN2 四象限反正切 ATANH 反双曲正切 AUTUMN 红黄调秋色图阵 AXES 创建轴对象的低层指令 AXIS 控制轴刻度和风格的高层指令 B B BAR 二维直方图 BAR3 三维直方图 BAR3H 三维水平直方图 BARH 二维水平直方图 BASE2DEC X进制转换为十进制 BIN2DEC 二进制转换为十进制 BLANKS 创建空格串 BONE 蓝色调黑白色图阵 BOX 框状坐标轴 BREAK WHILE 或FOR 环中断指令

BRIGHTEN 亮度控制 C C CAPTURE (3版以前)捕获当前图形 CART2POL 直角坐标变为极或柱坐标 CART2SPH 直角坐标变为球坐标 CAT 串接成高维数组 CAXIS 色标尺刻度 CD 指定当前目录 CDEDIT 启动用户菜单、控件回调函数设计工具CDF2RDF 复数特征值对角阵转为实数块对角阵CEIL 向正无穷取整 CELL 创建元胞数组 CELL2STRUCT 元胞数组转换为构架数组CELLDISP 显示元胞数组内容 CELLPLOT 元胞数组内部结构图示 CHAR 把数值、符号、内联类转换为字符对象CHI2CDF 分布累计概率函数 CHI2INV 分布逆累计概率函数 CHI2PDF 分布概率密度函数 CHI2RND 分布随机数发生器 CHOL CHOLESKY分解 CLABEL 等位线标识 CLA 清除当前轴 CLASS 获知对象类别或创建对象 CLC 清除指令窗 CLEAR 清除内存变量和函数 CLF 清除图对象 CLOCK 时钟 COLORCUBE 三浓淡多彩交叉色图矩阵COLORDEF 设置色彩缺省值 COLORMAP 色图 COLSPACE 列空间的基 CLOSE 关闭指定窗口 COLPERM 列排序置换向量 COMET 彗星状轨迹图 COMET3 三维彗星轨迹图 COMPASS 射线图 COMPOSE 求复合函数 COND (逆)条件数 CONDEIG 计算特征值、特征向量同时给出条件数CONDEST 范-1条件数估计

语音模块使用说明(tmp)

语音模块使用说明 一、软件包 gsm-1.0-pl12 GSM编解码库 alsa-lib-1.0.14 ALSA用户层控制函数库,内核语音模块需要支持ALSA alsa-utils-1.0.14 ALSA工具集,依赖于alsa-lib,该工具集提供amixer进行音量调节 libogg-1.1.4 通用开源语音编解码库 speex-1..2rc1 SPEEX开源语音编码协议库,编译linphone需要该库 live555-20100409 livemedia 多媒体支持库,vlc需要该库支持语音多播功能 ffmpeg-0.5 多媒体编码支持库,支持多种格式语音、视频编解码,本项目中使用到该库的a-law, u-law 语音编解码用于语音多播功能 libosip2-3.3.0 SIP协议库 libeXosip2-3.3.0 基于libosip2的SIP协议扩展库,支持更方便的SIP协议API,编译linphone需要该库 linphone-3.2.1 SIP软件电话,需要语音编解码库libogg,gsm,speex的支持,以及SIP协议库libosip2,libeXosip2的支持 vlc VLC流媒体软件,支持流媒体播放功能,需要语音编解码库ffmpeg,流媒体广播库live555的支持 net-control 网络控制功能软件包,提供与语音控制相关的网络接口

二、语音功能与软件包对照列表 点对点呼叫功能: 该功能使用linphone软件包提供的linphonec配合linphonecsh命令接口实现,默认情况下所有需要支持该功能的终端在启动时自动运行linphonec,需要呼叫时由网络模块调用linphonecsh命令接口控制linphonec完成相关功能。 点对多点广播功能: 该功能使用vlc软件包提供的vlc完成,默认情况下vlc不运行,在需要进行网络广播时,由网络控制模块调用vlc加入指定的多播组实现语音广播功能,广播完成后网络控制模块终止vlc的运行。 三、语音模块软件包的编译 前置条件: 安装交叉编译工具链 设置编译环境: 根据编译主机目录环境及交叉编译工具链的安装路径,设定sip-phone/目录下的env.sh.sample中的参数,设置完成后使用 $source ./env.sh.sample 导入编译设定参数 开始编译: 完成编译环境的设置后,运行自动编译脚本 $./make_world.sh 将自动编译生成根文件系统 四、编译环境各目录及文件说明 packages/目录中存放语音模块相关软件包的源代码 skeleton/目录中存放参考根文件系统的目录结构框架及基本配置文件 tools/目录中存放编译各软件包以及生成根文件系统的脚本 env.sh.example参考的编译环境设置文件

相关主题
文本预览
相关文档 最新文档