ffmpeg
文章平均质量分 85
随风而去飘飘飘
这个作者很懒,什么都没留下…
展开
-
avformat_open_input using custom AVDictionary to set parameter
I'm producing MPEGTS streams (h264/aac) using ffmpeg, so I know exactly how they are coded, and I could modify that if needed.Now, when I receive them in my own code, I always have to run them throu转载 2014-02-27 16:51:52 · 6534 阅读 · 0 评论 -
FFPLAY的原理(一)
概要电影文件有很多基本的组成部分。首先,文件本身被称为容器Container,容器的类型决定了信息被存放在文件中的位置。AVI和Quicktime就 是容器的例子。接着,你有一组流,例如,你经常有的是一个音频流和一个视频流。(一个流只是一种想像出来的词语,用来表示一连串的通过时间来串连的数据元 素)。在流中的数据元素被称为帧Frame。每个流是由不同的编码 器来编码生成的。编解码器 描 述转载 2014-03-27 14:42:05 · 1143 阅读 · 0 评论 -
FFPLAY的原理(三)
播放声音现在我们要来播放声音。SDL也为我们准备了输出声音的方法。函数SDL_OpenAudio()本身就是用来打开声音设备的。它使用一个叫做SDL_AudioSpec结构体作为参数,这个结构体中包含了我们将要输出的音频的所有信息。在我们展示如何建立之前,让我们先解释一下电脑是如何处理音频的。数字音频是由一长串的样本流组成的。每个样本表示声音波形中的一个值。声音按照一个特定 的采样转载 2014-03-27 14:44:36 · 1591 阅读 · 0 评论 -
FFPLAY的原理(五)
创建线程Spawning ThreadsOverviewLast time we added audio support by taking advantage of SDL's audio functions. SDL started a thread that made callbacks to a function we defined every time it nee转载 2014-03-27 14:47:33 · 1430 阅读 · 0 评论 -
FFPLAY的原理(七)
同步音频现在我们已经有了一个比较像样的播放器。所以让我们看一下还有哪些零碎的东西没处理。上次,我们掩饰了一点同步问题,也就是同步音频到视频而不是其它的同 步方式。我们将采用和视频一样的方式:做一个内部视频时钟来记录视频线程播放了多久,然后同步音频到上面去。后面我们也来看一下如何推而广之把音频和视频 都同步到外部时钟。生成一个视频时钟现在我们要生成一个类似于上次我们的声音时钟转载 2014-03-27 14:50:52 · 3112 阅读 · 0 评论 -
ffmpeg 新老接口问题及对照集锦
fmpeg源码包里面有个apichangs文档,里面有各种接口改变的记录,如果你发现接口不能用了,可以去搜索那个文档,可以找到对应的新接口,然后到新接口对应的头文件中找到说明文字网上很多关于ffmpeg (libav)的资料都是N年以前的,而事实上ffmpeg数年来一直在“以时俱进”,因此无论是一些新手,或者号称为老手的人,有时候难免出头痛。。。。。。为了解决大家的转载 2014-03-19 17:42:40 · 6576 阅读 · 0 评论 -
FFmpeg and AAC Encoding Guide
= FFmpeg and AAC Encoding Guide = [[PageOutline(2-3, Contents)]] [[http://en.wikipedia.org/wiki/Advanced_Audio_Coding|Advanced Audio Coding (AAC)]] is the successor format to MP3, and is def转载 2014-05-04 09:26:24 · 4699 阅读 · 0 评论 -
ffmpeg中的sws_scale算法性能测试
经常用到ffmpeg中的sws_scale来进行图像缩放和格式转换,该函数可以使用各种不同算法来对图像进行处理。以前一直很懒,懒得测试和甄别应该使用哪种算法,最近的工作时间,很多时候需要等待别人。忙里偷闲,对ffmpeg的这一组函数进行了一下封装,顺便测试了一下各种算法。简单说一下测试环境,我使用的是Dell的品牌机,i5的CPU。ffmpeg是2010年8月左右的当时最新版本编译而成,我转载 2014-03-26 14:37:02 · 1007 阅读 · 0 评论 -
an introduction of ppm files
PPM is the portable pixel map format. It is a simple RGB color image description. The definition is as follows:A "magic number" for identifying the file type. A PPM file's magic number is the two转载 2014-03-27 09:19:19 · 972 阅读 · 0 评论 -
一个使用sws_scale封装的图像缩放函数
为了方便,可以自己写一个img_convert函数,然后函数内部用sws_scale来实现,只是对于一些错误的处理及返回值处理不太严格,但基本能用,代码如下:int img_convert(AVPicture *dst, int dst_pix_fmt, const AVPicture *src, int src_pix_fmt,转载 2014-03-26 14:40:21 · 3670 阅读 · 0 评论 -
FFPLAY的原理(六)
显示视频这就是我们的视频线程。现在我们看过了几乎所有的线程除了一个--记得我们调用schedule_refresh()函数吗?让我们看一下实际中是如何做的:static void schedule_refresh(VideoState *is, int delay) {SDL_AddTimer(delay, sdl_refresh_timer_cb, is);}转载 2014-03-27 14:49:12 · 1281 阅读 · 0 评论 -
FFPLAY的原理(四)
意外情况你们将会注意到我们有一个全局变量quit,我们用它来保证还没有设置程序退出的信号(SDL会自动处理TERM类似的信号)。否则,这个线程将不停地运 行直到我们使用kill -9来结束程序。FFMPEG同样也提供了一个函数来进行回调并检查我们是否需要退出一些被阻塞的函数:这个函数就是 url_set_interrupt_cb。int decode_interrupt_cb(vo转载 2014-03-27 14:45:23 · 1016 阅读 · 0 评论 -
ffmpeg 实现音频aac编码
1、编译ffmepg./configure --disable-yasm --enable-nonfree --enable-libfaac --prefix=/home/ffmpeg/1_ffmpeg-2.1.1/install2、编译audio_enc.cmakefile:12345678转载 2014-02-28 09:43:03 · 12580 阅读 · 0 评论 -
ffmpeg 中av_rescale_rnd 的含义
一、函数声明:[cpp] view plaincopyprint?int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd); 直接看代码, 它的作用是计算 "a * b / c" 的值并分五种方式来取整.用在FFmpeg中,则转载 2014-02-28 11:08:22 · 9603 阅读 · 3 评论 -
ffmpeg 通过通过组播发送本地TS流文件
命令:ffmpeg -re -i /media/1.mpg -r 1800 -c copy -f mpegts udp://239.1.1.1:7000环境:ffmpeg version 1.1.3 Copyright (c) 2000-2013 the FFmpeg developers built on Jul 17 2013 15:52:04转载 2014-02-19 10:51:27 · 10687 阅读 · 1 评论 -
ffmpeg教程五 —— 使用举例
1.1.1 截取一张352x240尺寸大小的,格式为jpg的图片:ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg1.1.2 把视频的前30帧转换成一个Animated Gifffmpeg -i test.asf -vframes 30 -y -f gif a.gif1.1.3 截取转载 2014-02-19 10:53:47 · 1543 阅读 · 0 评论 -
ubuntu下安装ffmpeg,ffplay问题
环境:ubuntu10.04问题1:编译不生成ffplay ffplay依赖sdl,安装之前要先安装SDL。 下载地址:http://www.libsdl.org/download-1.2.php 问题2:ffplay不可用,不能播放视频。 “SDL: 。。。。。。” x86下需要安转载 2014-02-20 10:26:52 · 3378 阅读 · 0 评论 -
在Ubuntu成功编译FFmpeg并生成ffplay
编译这个东西真的很纠结,也很辛苦啊,但总算成功了,相当高兴呵呵,下面的内容是参加一下网站上的博客,我根据我的实践补充一下:ffmpeg 是很强大的编解码库,可以编解码视频和音频。通俗的说是可以做播放器。我的是Ubuntu Linux 11.04(我觉得Linux版本没有什么关系,只不过是SDL库对ffplay的生成很重要)下面是安装步骤:我们从官方下载 FFmpeg 0.8.7 "转载 2014-02-20 12:42:48 · 2752 阅读 · 0 评论 -
ffmpeg命令行jpg转png出错求助
大家好,我想把jpg图片转成png,命令如下: ffmpeg -i a.jpg a.png 然后ffmpeg显示如下: /usr/local/lib/libavfilter.so.3: symbol sws_isSupportedEndiannessConversion, version LIBSWSCALE_2 not defined in file libswscale.so.2转载 2014-02-20 15:48:38 · 5227 阅读 · 0 评论 -
ffmpeg 从内存中读取数据
ffmpeg一般情况下支持打开一个本地文件,例如“C:\test.avi”或者是一个流媒体协议的URL,例如“rtmp://222.31.64.208/vod/test.flv”其打开文件的函数是avformat_open_input(),直接将文件路径或者流媒体URL的字符串传递给该函数就可以了。但其是否支持从内存中读取数据呢?这个问题困扰了我很长时间。当时在做项目的时候转载 2014-03-04 16:42:58 · 2343 阅读 · 0 评论 -
基于ffmpeg的Android播放器开源代码
博客分类:android多媒体http://www.cnblogs.com/mcodec/articles/1780598.html基于ffmpeg的Android播放器开源代码Posted on 2011-07-23 11:40 mcodec 阅读(1964) 评论(68) 编辑 收藏 本开源Android播放器基于ffmpeg开转载 2014-03-11 17:34:47 · 11989 阅读 · 3 评论 -
FFPLAY的原理(二)
关于包Packets的注释从技术上讲一个包可以包含部分或者其它的数据,但是ffmpeg的解释器保证了我们得到的包Packets包含的要么是完整的要么是多种完整的帧。现在我们需要做的是让SaveFrame函数能把RGB信息定稿到一个PPM格式的文件中。我们将生成一个简单的PPM格式文件,请相信,它是可以工作的。void SaveFrame(AVFrame *pFrame, i转载 2014-03-27 14:43:11 · 1250 阅读 · 0 评论 -
Compile FFmpeg on Ubuntu, Debian, or Mint
Compile FFmpeg on Ubuntu, Debian, or Mint ContentsGet the DependenciesCompilation & InstallationFinishUpdating FFmpegReverting Changes Made by This GuideIf You Need HelpAlso转载 2014-05-08 11:23:03 · 1663 阅读 · 0 评论 -
ubuntu下编译适合ndk的x264(arm和x86)
如下编译脚本为本人亲测,可用。下面带来编译步骤:1:下载x264并解压,这个可在x264官网去下2:在x264目录里新建一个build_android.sh脚本文件,内容如下: 1 2 3 4 5 6 7 8 910111213141516171819#x86架构NDK=/usr/softwa转载 2014-04-25 15:56:40 · 1065 阅读 · 0 评论 -
mpegts.c文件分析
1. 综述 ffmpeg框架对应MPEG-2 TS流的解析的代码在mpegts.c文件中,该文件有两个解复用的实例:mpegts_demuxer和mpegtsraw_demuxer,mpegts_demuxer对应的真实的TS流格式,也就是机顶盒直接处理的TS流,本文主要分析和该种格式相关的代码;mpegtsraw_demuxer这个格式我没有遇见过,本文中不做分析。本文针对的ffmpeg的转载 2014-07-29 15:30:45 · 1584 阅读 · 0 评论 -
DTS和PTS的解释(FFMPEG、HLS相关)
原由:近来在研究HLS(HTTP Live Streaming),以实现android上播放m3u8文件。由于TS段的切分不统一,每个视频网站给出的m3u8 playlists总有差别,在时间戳显示上有差异,所以对DTS和PTS进行了研究。DTS和PTS是音视频同步的关键技术,同时也是丢帧策略密切相关。dts/pts定义 dts: decoding time stamp pts: pr转载 2014-08-04 13:22:39 · 2572 阅读 · 0 评论 -
FFMPEG之TimeBase成员理解
FFMPEG的很多结构中有AVRational time_base;这样的一个成员,它是AVRational结构的typedef struct AVRational{ int num; /// int den; ///} AVRational;AVRational这个结构标识一个分数,num为分数,den为分母。 实际上time_base的意思就是时间的刻度转载 2014-08-05 15:53:33 · 2296 阅读 · 0 评论 -
从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题(如何解决编码 0 延时)
在看到这篇文章前我已经解决了这个问题,但是知其然不知其所以然,看到原作者写的文章很详细。于是转之,感谢原作者。原文链接:http://blog.csdn.net/ymsdu2004/article/details/8565822FFMPEG中如果你编码完一段视频发现视频变短了,那很有可能就是没有设置0延时的原因。近日在做一个分布式转码服务器,转载 2014-06-23 08:05:04 · 3777 阅读 · 0 评论 -
FFmpeg avio_reading.c文件解析
原doc/sample/avio_reading.c主要是如何自己处理文件,处理文件流,感觉用处不大最后输出基本信息extern "C"{#include #include #include #include };#pragma comment(lib,"avformat.lib")#pragma comment(lib,"avutil.lib")#pragma转载 2014-08-15 14:26:34 · 3419 阅读 · 0 评论 -
a tutorial/initiation for writing simple filters in libavfilter
Foreword: just like everything else in FFmpeg, libavfilter is monolithic, whichmeans that it is highly recommended that you submit your filters to the FFmpegdevelopment mailing-list and make sure it转载 2014-09-16 14:20:59 · 1329 阅读 · 0 评论 -
ffmpeg--StreamingGuide
LoginPreferencesHelp/GuideAbout TracRegisterWikiTimelineView TicketsSearchTagswiki:StreamingGuide+0Start PageIndexHistoryStreamingContentsThe -re flag转载 2014-10-22 15:01:55 · 4426 阅读 · 0 评论 -
ffmepg 指定RTSP网络连接模式UDP还是TCP
AVFormatContext *formatCtx = NULL; formatCtx = avformat_alloc_context(); AVDictionary* options = NULL; av_dict_set(&options, "rtsp_transport", "tcp", 0); avformat_open_input(&forma转载 2014-12-10 15:08:37 · 4442 阅读 · 0 评论 -
FFMPEG类库打开流媒体的方法(需要传参数的时候)
使用ffmpeg类库进行开发的时候,打开流媒体(或本地文件)的函数是avformat_open_input()。其中打开网络流的话,前面要加上函数avformat_network_init()。一般情况下,只要传入流媒体的url就可以了。但是在打开某些流媒体的时候,可能需要附加一些参数。例如在播放中央人民广播电台的声音信号的时候,其url为“rtsp://mms.cnr.cn/cnr0转载 2014-12-10 15:07:11 · 6076 阅读 · 0 评论 -
Android API教程:人脸检测(Face Detect)
摘要:通过两个主要的API,Android提供了一个直接在位图上进行脸部检测的方法,这两个API分别是 android.media.FaceDetector和android.media.FaceDetector.Face,已经包含在Android官方API中。通过两个主要的API,Android提供了一个直接在位图上进行脸部检测的方法,这两个API分别是 android.medi转载 2014-06-13 18:23:37 · 1999 阅读 · 0 评论 -
int av_dup_packet(AVPacket *pkt)
AVPacket 的data 在内存中buffer有两种情况: 1)由av_malloc申请的独立的buffer(unshared buffer); 2)是其他AVPacket或者其他reuseable 内存的一部分(shared buffer); av_dup_packet, 通过调用 av_malloc、memcpy、memset等函数, 将shared buffer转载 2014-06-12 10:06:22 · 4949 阅读 · 0 评论 -
ffmpeg 如何音视频同步
output_example.c 中AV同步的代码如下(我的代码有些修改),这个实现相当简单,不过挺说明问题。音视频同步方法:选择一个参考时钟,参考时钟上的时间是线性递增的,生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间)。在播放时,读取数据块上的时间戳,同时参考当前参考时钟上的时间来安排播放。数据流不会发生参考关系。 步转载 2014-06-05 22:44:29 · 1712 阅读 · 0 评论 -
ffmpeg转码MPEG2-TS的音视频同步机制分析
一、FFmpeg忽略了adaptation_field()数据FFmpeg忽略了包含PCR值的adaptation_filed数据;代码(libavformat/mpegts.c)分析如下:/* 解析TS包 */int handle_packet(MpegTSContext *ts, const uint8_t *packet){ ... pid = AV_转载 2014-06-05 23:07:13 · 1699 阅读 · 0 评论 -
音视频同步-时间戳
媒体内容在播放时,最令人头痛的就是音视频不同步。从技术上来说,解决音视频同步问题的最佳方案就是时间戳:首先选择一个参考时钟(要求参考时钟上的时间是线性递增的);生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间);在播放时,读取数据块上的时间戳,同时参考当前参考时钟上的时间来安排播放(如果数据块的开始时间大于当前参考时钟上的时间,则不急于播放该数据块,直到转载 2014-06-05 11:10:32 · 1392 阅读 · 0 评论 -
FFmpeg音视频同步的问题
音视频同步问题 音视频流里都包含了播放速率的信息,音频使用采样率来表示,而视频则采用f/s来表示,但是我们却不能简单地用这两个数据来对音视频进行同步,我们需要使用DTS(解码时间戳)和PTS(播放时间戳)这两个数据;我们知道影视数据在存储时,会存在多种帧形式,例如MPEG中就采用了I,B和P,由于B帧的存在使得PTS和DTS存在不同(原因见附录),如图1所示为一个简单的例子;当转载 2014-06-05 22:42:13 · 1766 阅读 · 0 评论 -
使用ffmpeg实现转码样例(代码实现)
使用ffmpeg实现转码样例(代码实现)使用ffmpeg转码主要工作如下:Demux -> Decoding -> Encoding -> Muxing其中接口调用如下:点击(此处)折叠或打开av_register_all();avformat_open_input转载 2014-06-08 18:07:21 · 3700 阅读 · 0 评论