摘要: ffmpeg源码分析之数据流本文主要介绍ffmpeg的数据流,在ffmpeg中主要分有三个主要用途用于媒体流的解码播放,媒体流的转换(解码之后再编码)和媒体流录制。媒体流的解码播放在ffmpeg中媒体流的解码播放流程如下图: 其主要流程为从媒体文件中读取出媒体流,然后送入媒体格式解码器(demuxer)中去除多余的外衣--媒体格式。然后送入ffmpeg的codec的decode中进行解码,最终生成显示需要的YUV格式的图片,然后再送入类似SDL中进行渲染。ffmpeg中媒体流的解码播放流程相对比较来说其最大的难点在于pts的同步,在ffmpeg的ffplay中有很好的例子。例子中是启动了多个线 阅读全文
posted @ 2011-08-29 22:05 博水 阅读(16338) 评论(2) 推荐(2) 编辑
摘要: FFMPEG基本概念:ffmpeg是一个开源的编解码框架,它提供了一个音视频录制,解码和编码库。FFMPEG是在linux下开发的,但也有windows下的编译版本。 ffmpeg项目由以下几部分组成: ffmpeg 视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件. ffserver 基于HTTP(RTSP正在开发中)用于实时广播的多媒体服务器.也支持时间平移 ffplay 用 SDL和FFmpeg库开发的一个简单的媒体播放器 libavcodec 一个包含了所有FFmpeg音视频编解码器的库.为了保证最优性能和高可复用性,大多数编解码器从头开发的... 阅读全文
posted @ 2011-08-24 22:21 博水 阅读(15173) 评论(0) 推荐(0) 编辑
摘要: 本来是应该先写一个媒体文件格式的简单讲解的,还没来得及写,以后再写。今天就先根据ffmpeg的flv.c的flv_demux这个结构体来讲解一下当前比较流行的媒体格式flv.FLV 是FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能.当前主流的媒体网站像国内的优酷、国外youtube其标清格式的文件均采用flv的格式。FLV文件结构解析FLV是一个二进制文件,其文件格式如下图 ,由文件头(FLV header)和很多tag组成。tag又可以分成三类:audio,video,script 阅读全文
posted @ 2011-08-11 21:58 博水 阅读(25311) 评论(5) 推荐(3) 编辑
摘要: 一、SDP协议介绍SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议是也是基于文本的协议,这样就能保证协议的可扩展性比较强,这样就使其具有广泛的应用范围。SDP 不支持会话内容或媒体编码的协商,所以在流媒体中只用来描述媒体信息。媒体协商这一块要用RTSP来实现.二、SDP协议格式SDP描述由许多文本行组成,文本行的格式为<类型>=<值>,<类型>是一个字母,<值>是 阅读全文
posted @ 2011-08-02 22:42 博水 阅读(61194) 评论(1) 推荐(3) 编辑
摘要: 概述:实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它一开始被设计为一个多播协议,但后来被用在很多单播应用中。RTP协议常用于流媒体系统(配合RTCP协议或者RTSP协议)。因为RTP自身具有Time stamp所以在ffmpeg 中被用做一种formate.RTP协议格式: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 阅读全文
posted @ 2011-07-28 22:59 博水 阅读(84418) 评论(13) 推荐(7) 编辑
摘要: 基本概念:I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。P frame: 前向预测编码帧 又称predictive-frame,通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧;B frame: 双向预测内插编码帧 又称bi-directional interpolated prediction frame,既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时 阅读全文
posted @ 2011-07-27 22:27 博水 阅读(54035) 评论(8) 推荐(13) 编辑
摘要: strace 简介strace 命令是一种强大的工具, 能够显示任何由用户空间程式发出的系统调用. strace 显示这些调用的参数并返回符号形式的值. strace 从内核接收信息, 而且无需以任何特别的方式来构建内核. strace 的每一行输出包括系统调用名称, 然后是参数和返回值.调用方法为:调用: strace [ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] ... [ -ofile ] [ -ppid ] ... [ -sstrsize ] [ -uusername ] [ command [ arg ... ] ] strace -c [ 阅读全文
posted @ 2011-07-18 22:58 博水 阅读(5482) 评论(0) 推荐(0) 编辑
摘要: 以下是某省IPTV的RTSP协商过程:DESCRIBE rtsp://118.122.89.27:554/live/ch10083121594790060557.sdp?playtype=1&boid=001&backupagent=118.122.89.27:554&clienttype=1&time=20100929182111+08&life=172800&ifpricereqsnd=1&vcdnid=001&userid=123&mediaid=ch10083121594790060557&ctype=2& 阅读全文
posted @ 2011-07-15 22:57 博水 阅读(31241) 评论(2) 推荐(0) 编辑
摘要: RTSP 协议分析1.概述:RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。类似HTTP协议的流控制协议。它们都使用纯文本来发送信息,而且rtsp协议的语法也和HTTP类似,和HTTP协议相比RTSP协议所不同的地方是,RTSP协议是有状态的协议,而HTTP是无状态的协议。RTSP通过维护一个session来维护其状态的转换。RTSP协议的默认端口是554,默认的承载协议为T 阅读全文
posted @ 2011-07-14 22:20 博水 阅读(80224) 评论(4) 推荐(8) 编辑
摘要: 前一段一直处于装修和新的项目上手的时期,没有闲下来总结反思。长长有一种猴子掰玉米的感觉。从今天开始简单总结一下之前的东西。今天暂时列一个提纲出来,之后会逐个章节补充上来:1.流媒体基本知识---- RTSP RTP RTCP2.开源的编解码框架 ----FFMPEG3.video codec: MPEG4 DIVX H2644.audio codec : AAC AMR MP2 MP35.Format FLV MPEG4 VP6 阅读全文
posted @ 2011-07-12 21:21 博水 阅读(5328) 评论(3) 推荐(1) 编辑