FFMPEG
文章平均质量分 71
马隆编辑
这个作者很懒,什么都没留下…
展开
-
rtmp协议简单解析以及用其发送h264的flv文件
http://blog.csdn.net/yeyumin89/article/details/8011362Adobe公司太坑人了,官方文档公布的信息根本就不全,如果只按照他上面的写的话,是没法用的。按照文档上面的流程,server和client连接之后首先要进行握手,握手成功之后进行一些交互,其实就是交互一些信息以确认大家都是用的同一个协议,交互成功之后就开始传数据了。转载 2014-05-17 10:03:49 · 882 阅读 · 1 评论 -
ffmpeg 时间戳问题汇总
问题是这样的 用一个 VLC(流媒体客户端) 去请求流媒体服务器上的数据, 但是获得的数据播放速度明显快于1倍速,大概是 timestamp 不对, 不知道是服务器的错误,还是客户端解码时出错, 总感觉服务器那边有问题, 由于服务器端是客户端提供的,客户说是我们的问题, 我还不知道如何证明是谁的错。A:RFC3984 规定采用 90000 Hz 的时钟,因此如果编码帧频是 30,那么时转载 2014-05-08 17:55:33 · 734 阅读 · 0 评论 -
使用librtmp库发布直播流
rtmp协议与flv封包格式基本相同(本来就是一家公司的嘛)将flv文件解析出类型,时间戳,数据大小,数据区对应写的rtmp包的位置进行发送即可rtmpdump官网:http://rtmpdump.mplayerhq.hu/这里是以flv文件做源,可以自己采集视频音频进行实时发送库版本 2.4下图,左边发送到服务器,右侧可正常观看(模拟的是实时流,发完该流也转载 2014-05-08 17:58:01 · 978 阅读 · 0 评论 -
rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)
无特殊说明编译环境VC6.0第三方库尽可能包含,环境搭好,也有可能需要手动的地方(如DShow库要自己将头文件提前)CRtmpserver篇CRtmpserver源码获取CRtmpserver在UNIX下编译CRtmpserver在VS2010下编译CRtmpserver简易测试(之后提供简单的工具,这个太复杂了)CRtmpserver其它问题R转载 2014-05-08 17:59:12 · 1217 阅读 · 0 评论 -
librtmp实时消息传输协议(RTMP)库代码浅析
没事碰到了librtmp库,这个库是ffmpeg的依赖库,用来接收,发布RTMP协议格式的数据。代码在这里:git clone git://git.ffmpeg.org/rtmpdump先看一段通过librtmp.so库下载RTMP源发布的数据的例子,从rtmpdump中抽取出来。使用的大体流程如下:RTMP_Init主要就初始化了一下RTMP*rtmp变量的成员。 RTMP_Se转载 2014-05-07 21:47:03 · 2478 阅读 · 0 评论 -
利用LIBRTMP直播时 更改发送数据的包大小
在用RTMP协议做视频直播时,协议默认的发送消息的大小是128字节。开源库librtmp中说可以更改这个大小,因为用128的包发送数据,效率太低了,网络上一般MTU都在1400左右,所以还是改大点的好。网上搜了半天也没有找到参考的代码,可能关键词写的不对。rtmpdump里面没有参考代码,只能自己试验了,最后还是找到了正确的办法。RTMP *r; //提前申请的RTM转载 2014-05-07 21:37:04 · 1283 阅读 · 0 评论 -
iOS 使用libx264编码视频
首先视频采集使用AVCaptureSession,输出参数设置如下AVCaptureVideoDataOutput *newVideoOutput = [[AVCaptureVideoDataOutputalloc]init]; [newVideoOutput setAlwaysDiscardsLateVideoFrames:YES]; NSDictio转载 2014-05-07 21:35:43 · 2341 阅读 · 0 评论 -
RTMP协议
RTMP协议RTMP协议封包 由一个包头和一个包体组成,包头可以是4种长度的任意一种:12, 8, 4, 1 byte(s).完整的RTMP包头应该是12bytes,包含了时间戳,AMFSize,AMFType,StreamID信息, 8字节的包头只纪录了时间戳,AMFSize,AMFType,其他字节的包头纪录信息依次类推 。包体最大长度默认为128字节,通过chunkSize转载 2014-05-07 21:33:49 · 489 阅读 · 0 评论 -
RTMP中FLV流到标准h264、aac的转换
一、分析FLV数据 我们先拿一个flv文件来简单分析一下flv数据的格式 flv标准文档下载地址http://www.cnblogs.com/chef/archive/2012/07/18/2597003.html flv文件分析器flvprase下载地址http://www.cnblogs.com/chef/archive/2012/07/18/2596转载 2014-05-07 21:30:28 · 641 阅读 · 0 评论 -
RTMP协议以及提取RTMP视频流组成H264视频文件
首先我们获得h264的流,在监听里,我们通过参数可以获得RTMP包IStreamPacket,调用getData()方法直接获得包数据 放入IOBuffer。以下是提取并修改数据存成h264文件的步骤1. 添加监听 IStreamListener2. 通过IOBuffer的put函数将每次获得的包数据放入新的IObuffer3. 在流结束时将IOBuffer存成文件4. 用工具转载 2014-05-07 21:23:57 · 714 阅读 · 0 评论 -
iOS编译librtmp xcode5.1
iOS编译librtmp xcode5.1原创 2014-05-07 15:04:08 · 629 阅读 · 0 评论 -
使用librtmp进行H264与AAC直播
libx264版本是128libfaac版本是1.281、帧的划分1.1 H.264帧对于H.264而言每帧的界定符为00 00 00 01或者00 00 01。比如下面的h264文件片断这就包函三帧数据00 00 00 01 67 42 C0 28 DA 01 E0 08 9F 96 10 0000 03 00 10 00 00 03 01 48 F1 83 2A 0转载 2014-05-07 21:42:06 · 1725 阅读 · 0 评论 -
h264中avc和flv数据的解析
计算 AVCDecoderConfigurationRecord 得到 CodecPrivateData 数据(只有第一帧需要);计算 NALUs 得到帧数据。计算 AVCDecoderConfigurationRecord 得到 CodecPrivateData 数据转载 2014-05-17 09:41:06 · 669 阅读 · 0 评论 -
iOS ffmpeg将音视频写入文件aac+h264
#define STREAM_DURATION 5.0#define STREAM_FRAME_RATE 25 /* 25 images/s */#define STREAM_NB_FRAMES ((int)(STREAM_DURATION * STREAM_FRAME_RATE))#define STREAM_PIX_FMT PIX_FMT_YUV420P /* default pi原创 2014-06-18 15:23:42 · 3100 阅读 · 0 评论 -
ffmpeg 写音视频文件并同步
output_example.c 中AV同步的代码如下(我的代码有些修改),这个实现相当简单,不过挺说明问题。音视频同步方法:选择一个参考时钟,参考时钟上的时间是线性递增的,生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间)。在播放时,读取数据块上的时间戳,同时参考当前参考时钟上的时间来安排播放。数据流不会发生参考关系。 步转载 2014-06-10 21:00:01 · 1982 阅读 · 0 评论 -
YUV420图像格式
YUV中的Y是指“灰度”或者“明亮度” ,英语表达为Luminance、Luma,luminance 表示为 Y, luma 表示为 Y'。Y与RGB的演算关系为:Y = 0.2126 R + 0.7152 G + 0.0722 B,Y' = 0.2126 R' + 0.7152 G' + 0.0722 B' ,符号' 表示使用了Gamma compression。(参见http://en.wik转载 2014-05-28 09:02:59 · 401 阅读 · 0 评论 -
AVPicture中data与linesize关系
AVPicture结构中data和linesize关系AVPicture里面有data[4]和linesize[4]其中data是一个指向指针的指针(二级、二维指针),也就是指向视频数据缓冲区的首地址,而data[0]~data[3]是一级指针,可以用如下的图来表示:data -->xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx转载 2014-06-07 16:13:25 · 425 阅读 · 0 评论 -
编译output-example.c
/* * Libavformat API example: Output a media file in any supported * libavformat format. The default codecs are used. * * Copyright (c) 2003 Fabrice Bellard * * Permission is hereby granted, fre转载 2014-06-06 19:35:04 · 553 阅读 · 0 评论 -
FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
FFMPEG中的swscale提供了视频原始数据(YUV420,YUV422,YUV444,RGB24...)之间的转换,分辨率变换等操作,使用起来十分方便,在这里记录一下它的用法。swscale主要用于在2个AVFrame之间进行转换。下面来看一个视频解码的简单例子,这个程序完成了对"北京移动开发者大会茶歇视频2.flv"(其实就是优酷上的一个普通视频)的解码工作,并将解码后的数转载 2014-06-06 11:36:05 · 1372 阅读 · 0 评论 -
从内存中读取数据到ffmpeg中
ffmpeg一般情况下支持打开一个本地文件,例如“C:\test.avi”或者是一个流媒体协议的URL,例如“rtmp://222.31.64.208/vod/test.flv”其打开文件的函数是avformat_open_input(),直接将文件路径或者流媒体URL的字符串传递给该函数就可以了。但其是否支持从内存中读取数据呢?这个问题困扰了我很长时间。当时在做项目的时候转载 2014-06-06 10:44:58 · 1129 阅读 · 0 评论 -
RTMP流媒体技术零基础学习方法
本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工程的源代码。看完本文的话应该会对RTMP流媒体技术有比较完整的了解。0.背景知识本章主要介绍一下RTMP流媒体技术都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了就是为了转载 2014-05-13 10:59:14 · 637 阅读 · 0 评论 -
[总结]FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者。在和大家探讨的过程中,我忽然发现了一个问题:在“大神”和初学者之间好像有一个不可逾越的鸿沟。“大神”们水平高超,探讨着深奥的问题;而初学者们还停留在入门阶段。究竟是什么原因造成的这种“两极分化”呢?最后,我发现了问题的关键:FFMPEG难度比较大,转载 2014-05-13 10:58:01 · 648 阅读 · 0 评论 -
最简单的基于FFmpeg的音频编码器 PCM 转AAC
ffmpegpcmaac编码音频本文介绍一个最简单的基于FFMPEG的音频编码器。该编码器实现了PCM音频采样数据编码为AAC的压缩编码数据。编码器代码十分简单,但是每一行代码都很重要。通过看本编码器的源代码,可以了解FFMPEG音频编码的流程。本程序使用最新版的类库(编译时间为2014.5.6),开发平台为VC2010。所有的配置都已经做好,只需要运行就可以了。下面直接上代码:转载 2014-05-13 21:11:18 · 1231 阅读 · 1 评论 -
iphone手机音频AAC视频H264推流(一) iphone手机推流最佳方案
这几个月一直在做iphone手机音视频的东西,由于个人比较懒,所以一直没整理,现在闲的蛋疼,并且以后项目要搁置了,在这里记录一下我做的iphone手机推流的东西。项目都是个人的调研与实验,可能很多不好或者不对的地方请多包涵。1 功能概况* 实现音视频的数据的采集* 实现音视频数据的编码,视频编码成h264,音频编码成aac* 实现音视频数据的发布,将编码好的音视转载 2014-05-07 21:38:53 · 2006 阅读 · 0 评论 -
ffmpeg 静态链接第三方库
动态(共享)链接库自是有诸多优于静态链接库的特点:如能共享内存空间; 节约整个系统的存储空间,从而使整个系统速度提高; 当只有某个动态链接库有更新时--便于维护--只用更新这个库。 但在有些情况下,如,服务器并不是你一个人独享;服务器上不止有一个版本的ffmpeg要用; 有一个集群的服务器需要你部署和维护,更新。这时能使用静态链接库就再好不过啦。 FFmpeg对第三方库通常是转载 2014-05-07 10:16:42 · 634 阅读 · 0 评论 -
ffmpeg里的结构关联
VideoState: |----AVFormatContext: |----AVInputFormat(具体数据源对象) |----AVIContext(size) |----ByteIOContext(用于获取数据源对象的代理)原创 2014-04-29 13:28:02 · 471 阅读 · 0 评论 -
FFMpeg编码MPEG-1,2视频
//STMPEG.h #include#include #include #pragma once #ifdef __cplusplusextern "C" {#endif#include #include#include #ifdef __cplusplus}#endif enum MPEG_TYPE{ VCD_PAL, VCD_NTSC, SVCD_PAL,原创 2014-04-29 13:26:12 · 818 阅读 · 0 评论 -
I,P,B帧和PTS,DTS的关系
基本概念:I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。P frame: 前向预测编码帧 又称predictive-frame,通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧;原创 2014-04-29 13:26:09 · 339 阅读 · 0 评论 -
RTSP 协议分析 (一)
RTSP 协议分析1.概述: RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。类似HTTP协议的流控制协议。它们都使用纯文本来发送信息,而且rtsp协议的语法也和HTTP类似,和原创 2014-04-29 13:26:02 · 386 阅读 · 0 评论 -
RTP 协议
概述:实时传送协议(Real-time Transport Protocol或简写RTP,也可以写成RTTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它一开始被设计为一个多播协议,但后来被用在很多单播应用中。RTP协议常用于流媒体系统(配合RTCP协议或者RTSP协议)。因为RTP自身原创 2014-04-29 13:26:00 · 343 阅读 · 0 评论 -
媒体格式分析之flv -- 基于FFMPEG
本来是应该先写一个媒体文件格式的简单讲解的,还没来得及写,以后再写。今天就先根据ffmpeg的flv.c的flv_demux这个结构体来讲解一下当前比较流行的媒体格式flv.FLV 是FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能.当前主流的媒体网站像国内的优酷、国外youtube其标清原创 2014-04-29 13:25:58 · 344 阅读 · 0 评论 -
SDP 协议分析
一、SDP协议介绍SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议是也是基于文本的协议,这样就能保证协议的可扩展性比较强,这样就使其具有广泛的应用范围。SDP 不支持会话内容或媒体编码的协商,所以在流媒体中只用来描原创 2014-04-29 13:25:56 · 367 阅读 · 0 评论 -
FFMPEG源码分析(二)
fmpeg源码分析之数据流本文主要介绍ffmpeg的数据流,在ffmpeg中主要分有三个主要用途用于媒体流的解码播放,媒体流的转换(解码之后再编码)和媒体流录制。媒体流的解码播放在ffmpeg中媒体流的解码播放流程如下图:其主要流程为从媒体文件中读取出媒体流,然后送入媒体格式解码器(demuxer)中去除多余的外衣--媒体格式。然后送入ffmpeg的codec的decode中进行解码,最终生成显示原创 2014-04-29 13:25:53 · 349 阅读 · 0 评论 -
FFMPEG 源码分析(-)
FFMPEG基本概念:ffmpeg是一个开源的编解码框架,它提供了一个音视频录制,解码和编码库。FFMPEG是在linux下开发的,但也有windows下的编译版本。 ffmpeg项目由以下几部分组成: ffmpeg 视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件. ffserver 基于HTTP(RTSP正在开发中)用于实时广播的多媒体服务器.也支持时间平移 ffplay 用原创 2014-04-29 13:25:51 · 372 阅读 · 0 评论 -
【转载】How to use libavformat and libavcodec
In case you're wondering why there are two libraries, libavformat and libavcodec: Many video file formats (AVI being a prime example) don't actually specify which codec(s) should be used to encode aud原创 2014-04-29 13:25:46 · 397 阅读 · 0 评论 -
【转载】FFMpeg SDK 开发手册
FFMpeg 中比较重要的函数以及数据结构如下: 1. 数据结构: (1) AVFormatContext (2) AVOutputFormat (3) AVInputFormat (4) AVCodecContext (5) AVCodec (6) AVFrame (7) AVPacket (8) AVPicture (9) AVStream 2. 初始化函数: (1)原创 2014-04-29 13:25:44 · 1283 阅读 · 1 评论 -
H.264 sequence_parameter_sets成员值含义学习笔记
H.264 sequence_parameter_sets成员值含义学习笔记 SPS: sequence parameter sets01. Profile_idc它指的是码流对应的profile. 1.1 基线profile(Baseline profile)遵循基线profile的码流应该遵循以下的约束: a) 只有I和P切片存在b) NAL单元流不应该有范围在2到4的nal_unit_ty原创 2014-04-29 13:28:05 · 322 阅读 · 0 评论 -
音视频参数解释
程序中常提到音频参数:采样位数(bit_sample):即采样值或取样值。它是用来衡量声音波动变化的一个参数,也就是声卡的分辨率或可以理解为声卡处理声音的解析度.它的数值越大,分辨率也就越高,录制和回放的声音就越真实.而声卡的位是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数,声卡的位客观地反映了数字声音信号对输入声音信号描述的准确程度.采样频率(sample_rate):即取样频率,原创 2014-04-29 13:28:07 · 1184 阅读 · 0 评论 -
将摄像头原始RGB数据流编码成H.264文件
查阅了很多资料,都是将YUV文件编码成H.264视频,几乎没有找到用摄像头数据直接存储为H.264文件的。以下是我的实现方法,借鉴了网上的一些做法,整合而成。需要先安装ffshowextern "C"{#include "avcodec.h"#include "avformat.h"#include "avio.h"#include "avutil.h"#include "common.h"#in原创 2014-04-29 13:30:11 · 1023 阅读 · 1 评论 -
h264 图像宽度与高度的获取
摘 要:H.264是新一代视频编码标准,具有广泛的应用前景。本文主要研究了H.264码流的问题。首先,介绍了H.264的简单框架;其次,对码流结构进行了分析,并概括出了码流结构图;最后,结合一个简单试验,给出了从H.264码流中取得图像宽度和高度的方法。关键词:H.264;NAL;码流结构Analysis on the structure of coding streaming in H.264G原创 2014-04-29 13:28:17 · 1353 阅读 · 0 评论