![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多媒体
文章平均质量分 81
马隆编辑
这个作者很懒,什么都没留下…
展开
-
从内存中读取数据到ffmpeg中
ffmpeg一般情况下支持打开一个本地文件,例如“C:\test.avi”或者是一个流媒体协议的URL,例如“rtmp://222.31.64.208/vod/test.flv”其打开文件的函数是avformat_open_input(),直接将文件路径或者流媒体URL的字符串传递给该函数就可以了。但其是否支持从内存中读取数据呢?这个问题困扰了我很长时间。当时在做项目的时候转载 2014-06-06 10:44:58 · 1122 阅读 · 0 评论 -
YUV 420P IOS中的呈现
经过3个工作日(周六下午及加班,周一,今天上午)总算将解码的图像展现出来了,期间经历一些曲折,主要是前述中的"想通过原始YUV数据,重建CVPixelBufferRef类型的数据,进而可 1)转为CIImage,UIImage然后调用performSelectorOnMainThread来呈现:(经验还不足,这个api还是google了很多才找到的)[o转载 2014-06-06 09:34:22 · 1633 阅读 · 1 评论 -
LibRTMP源代码分析8:发送消息(Send RTMPPacket)
在详细分析函数RTMP_SendPacket()之前,让我们来看看RTMPPacket结构体的定义:typedef struct RTMPPacket{ uint8_t m_headerType;// ChunkMsgHeader类型(4种) uint8_t m_packetType;// Message type ID(1-转载 2014-05-22 11:55:46 · 2628 阅读 · 1 评论 -
iOS编译g729a
iOS编译g729a原创 2014-06-04 14:57:07 · 1181 阅读 · 1 评论 -
iOS webrtc
https://github.com/gandg/webrtc-ios原创 2014-06-04 16:58:25 · 485 阅读 · 0 评论 -
最简单的基于FFmpeg的音频编码器 PCM 转AAC
ffmpegpcmaac编码音频本文介绍一个最简单的基于FFMPEG的音频编码器。该编码器实现了PCM音频采样数据编码为AAC的压缩编码数据。编码器代码十分简单,但是每一行代码都很重要。通过看本编码器的源代码,可以了解FFMPEG音频编码的流程。本程序使用最新版的类库(编译时间为2014.5.6),开发平台为VC2010。所有的配置都已经做好,只需要运行就可以了。下面直接上代码:转载 2014-05-13 21:11:18 · 1225 阅读 · 1 评论 -
RTMP流媒体技术零基础学习方法
本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工程的源代码。看完本文的话应该会对RTMP流媒体技术有比较完整的了解。0.背景知识本章主要介绍一下RTMP流媒体技术都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了就是为了转载 2014-05-13 10:59:14 · 629 阅读 · 0 评论 -
FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
FFMPEG中的swscale提供了视频原始数据(YUV420,YUV422,YUV444,RGB24...)之间的转换,分辨率变换等操作,使用起来十分方便,在这里记录一下它的用法。swscale主要用于在2个AVFrame之间进行转换。下面来看一个视频解码的简单例子,这个程序完成了对"北京移动开发者大会茶歇视频2.flv"(其实就是优酷上的一个普通视频)的解码工作,并将解码后的数转载 2014-06-06 11:36:05 · 1343 阅读 · 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 · 549 阅读 · 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 · 418 阅读 · 0 评论 -
ffmpeg 写音视频文件并同步
output_example.c 中AV同步的代码如下(我的代码有些修改),这个实现相当简单,不过挺说明问题。音视频同步方法:选择一个参考时钟,参考时钟上的时间是线性递增的,生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间)。在播放时,读取数据块上的时间戳,同时参考当前参考时钟上的时间来安排播放。数据流不会发生参考关系。 步转载 2014-06-10 21:00:01 · 1952 阅读 · 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 · 398 阅读 · 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 · 3088 阅读 · 0 评论 -
完美驱动 AppleHDA
在黑苹果中声卡驱动算是比较复杂的一部分,如果觉得麻烦可以选择 VoodooHDA 万能声卡驱动,但是这个驱动的缺点比较多,用起来始终不太舒服。最早在 10.9 的时候折腾了一次声卡驱动,当时自己改的 AppleHDA 只支持输出,即 Speaker 和 HeadPhone, 相当长的一段时间都够用了,不过前一阵子需要用到麦克风的时候比较多,总是需要切换到 Windows 下,所以决定还是争取完转载 2017-07-10 17:35:59 · 21865 阅读 · 0 评论 -
黑苹果启动修复
http://www.liubiji.com/3516.html最近再给我的K590s折腾黑锅,所以也加了很多黑锅的群,很多人遇到了win无法启动以及必须有U盘才能启动黑苹果的情况,不懂的只能重装Win,费时费力,如果下次再丢失,再重装吗?这就牵扯到UEFI下启动项修复的问题,三言两语说不清,写篇文章好了。之前关于UEFI的文章,需要的可以参考下:UEFI+GP转载 2017-11-10 10:23:53 · 53207 阅读 · 2 评论 -
码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清的区别
GOP/ 码流 /码率 / 比特率 / 帧速率 / 分辨率GOP(Group of picture) 关键帧的周期,也就是两个IDR帧之间的距离,一个帧组的最大帧数,一般而言,每一秒视频至少需要使用 1 个关键帧。增加关键帧个数可改善质量,但是同时增加带宽和网络负载。 需要说明的是,通过提高GOP值来提高图像质量是有限度的,在遇到场景切换的情况时,H.264编码器会自动...转载 2018-02-28 11:08:15 · 30492 阅读 · 2 评论 -
[总结]FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者。在和大家探讨的过程中,我忽然发现了一个问题:在“大神”和初学者之间好像有一个不可逾越的鸿沟。“大神”们水平高超,探讨着深奥的问题;而初学者们还停留在入门阶段。究竟是什么原因造成的这种“两极分化”呢?最后,我发现了问题的关键:FFMPEG难度比较大,转载 2014-05-13 10:58:01 · 640 阅读 · 0 评论 -
rtmp协议简单解析以及用其发送h264的flv文件
http://blog.csdn.net/yeyumin89/article/details/8011362Adobe公司太坑人了,官方文档公布的信息根本就不全,如果只按照他上面的写的话,是没法用的。按照文档上面的流程,server和client连接之后首先要进行握手,握手成功之后进行一些交互,其实就是交互一些信息以确认大家都是用的同一个协议,交互成功之后就开始传数据了。转载 2014-05-17 10:03:49 · 877 阅读 · 1 评论 -
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 · 483 阅读 · 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 · 634 阅读 · 0 评论 -
RTMP协议以及提取RTMP视频流组成H264视频文件
首先我们获得h264的流,在监听里,我们通过参数可以获得RTMP包IStreamPacket,调用getData()方法直接获得包数据 放入IOBuffer。以下是提取并修改数据存成h264文件的步骤1. 添加监听 IStreamListener2. 通过IOBuffer的put函数将每次获得的包数据放入新的IObuffer3. 在流结束时将IOBuffer存成文件4. 用工具转载 2014-05-07 21:23:57 · 708 阅读 · 0 评论 -
iOS编译librtmp xcode5.1
iOS编译librtmp xcode5.1原创 2014-05-07 15:04:08 · 622 阅读 · 0 评论 -
ffmpeg 静态链接第三方库
动态(共享)链接库自是有诸多优于静态链接库的特点:如能共享内存空间; 节约整个系统的存储空间,从而使整个系统速度提高; 当只有某个动态链接库有更新时--便于维护--只用更新这个库。 但在有些情况下,如,服务器并不是你一个人独享;服务器上不止有一个版本的ffmpeg要用; 有一个集群的服务器需要你部署和维护,更新。这时能使用静态链接库就再好不过啦。 FFmpeg对第三方库通常是转载 2014-05-07 10:16:42 · 612 阅读 · 0 评论 -
[IOS开发]拍照,摄像,载图总结
1 建立Session 2 添加 input 3 添加output 4 开始捕捉5 为用户显示当前录制状态6 捕捉7 结束捕捉8 参考转载 2014-05-05 10:44:19 · 962 阅读 · 0 评论 -
录制视频(无帧数版) IOS
利用网上提供的获取每一帧的代码更改过来的。//// GLRecord.h// PlayVideo//// Created by Ghost on 12-8-18.// Copyright (c) 2012年 ZEPPLAB. All rights reserved.//#import #import #undef PRODUCER_HAS_VID转载 2014-05-05 10:45:46 · 738 阅读 · 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 · 991 阅读 · 1 评论 -
利用LIBRTMP直播时 更改发送数据的包大小
在用RTMP协议做视频直播时,协议默认的发送消息的大小是128字节。开源库librtmp中说可以更改这个大小,因为用128的包发送数据,效率太低了,网络上一般MTU都在1400左右,所以还是改大点的好。网上搜了半天也没有找到参考的代码,可能关键词写的不对。rtmpdump里面没有参考代码,只能自己试验了,最后还是找到了正确的办法。RTMP *r; //提前申请的RTM转载 2014-05-07 21:37:04 · 1267 阅读 · 0 评论 -
iOS 使用libx264编码视频
首先视频采集使用AVCaptureSession,输出参数设置如下AVCaptureVideoDataOutput *newVideoOutput = [[AVCaptureVideoDataOutputalloc]init]; [newVideoOutput setAlwaysDiscardsLateVideoFrames:YES]; NSDictio转载 2014-05-07 21:35:43 · 2332 阅读 · 0 评论 -
h264中avc和flv数据的解析
计算 AVCDecoderConfigurationRecord 得到 CodecPrivateData 数据(只有第一帧需要);计算 NALUs 得到帧数据。计算 AVCDecoderConfigurationRecord 得到 CodecPrivateData 数据转载 2014-05-17 09:41:06 · 665 阅读 · 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 · 1716 阅读 · 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 · 1209 阅读 · 0 评论 -
ffmpeg 时间戳问题汇总
问题是这样的 用一个 VLC(流媒体客户端) 去请求流媒体服务器上的数据, 但是获得的数据播放速度明显快于1倍速,大概是 timestamp 不对, 不知道是服务器的错误,还是客户端解码时出错, 总感觉服务器那边有问题, 由于服务器端是客户端提供的,客户说是我们的问题, 我还不知道如何证明是谁的错。A:RFC3984 规定采用 90000 Hz 的时钟,因此如果编码帧频是 30,那么时转载 2014-05-08 17:55:33 · 684 阅读 · 0 评论 -
使用librtmp库发布直播流
rtmp协议与flv封包格式基本相同(本来就是一家公司的嘛)将flv文件解析出类型,时间戳,数据大小,数据区对应写的rtmp包的位置进行发送即可rtmpdump官网:http://rtmpdump.mplayerhq.hu/这里是以flv文件做源,可以自己采集视频音频进行实时发送库版本 2.4下图,左边发送到服务器,右侧可正常观看(模拟的是实时流,发完该流也转载 2014-05-08 17:58:01 · 973 阅读 · 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 · 2420 阅读 · 0 评论 -
[FMS]red5项目使用rtmp协议,且开启rtmpt,rtmps协议
red5默认开启rtmp协议,但是有些网络环境限制此协议。连接方式nc.connect( "rtmp://x.x.x.x:port/myapp");rtmpt协议是封装了rtmp的http协议,可以穿透防火墙。连接方式nc.connect( "rtmpt://x.x.x.x:port/myapp");rtmps协议使用了https的安全连接。连接方式nc.connect转载 2014-05-07 21:41:15 · 645 阅读 · 0 评论 -
iphone手机音频AAC视频H264推流(一) iphone手机推流最佳方案
这几个月一直在做iphone手机音视频的东西,由于个人比较懒,所以一直没整理,现在闲的蛋疼,并且以后项目要搁置了,在这里记录一下我做的iphone手机推流的东西。项目都是个人的调研与实验,可能很多不好或者不对的地方请多包涵。1 功能概况* 实现音视频的数据的采集* 实现音视频数据的编码,视频编码成h264,音频编码成aac* 实现音视频数据的发布,将编码好的音视转载 2014-05-07 21:38:53 · 1984 阅读 · 0 评论 -
录制视频(帧数版本) IOS
//// CameraHelp.h// //// Created by Zhuang Chuan Xian. on 11-6-28.// Copyright 2011 . All rights reserved.//#import #import #undef PRODUCER_HAS_VIDEO_CAPTURE#define PRODUCER_HAS转载 2014-05-05 10:48:40 · 1643 阅读 · 0 评论