摘要: ffmpeg 可以通过IO操作将数据读取和存储在文件或网络中 作为数据的读取和写入地址,数据被存放在file,http,ffmpeg 不仅可以编解常用的音视频格式,还可以将数据导入/导出到各种媒介中。 当进行数据压缩时,流媒体数据可以从文件中获取,也可以借助各种专用网络协议从网络中获取。 当进行数据解压时,数据可以存放在文件中,也可以通过网路协议发送到远端。在ffmpeg中针对不同媒介的数据操作方法被抽象为url_xxx,并记录在结构体 URLProtocol 中。 以文件操作为例:/libavformat/file.c URLProtocol ff_file_protocol = { .n. 阅读全文
posted @ 2013-08-27 20:21 遥望星空 阅读(2174) 评论(0) 推荐(0) 编辑
摘要: RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如FMS, Red5, crtmpserver等。RTMP协议可用于实现直播、点播应用,通过FMLE(Flash Media Live Encoder)推送音视频数据至RtmpServer,可实现摄像头实时直播。不过,毕竟FMLE应用范围有限,想要把它嵌入到自己的程序中,还是要自己来实现RTMP协议的推送。本人实现了一个RTMPLiveEncoder, 阅读全文
posted @ 2013-08-27 17:52 遥望星空 阅读(1128) 评论(0) 推荐(0) 编辑
摘要: 0. 前言 我在前两篇文章中写了DirectShow捕获音视频然后生成avi,再进行264编码的方法。那种方法有一些局限性,不适合实时性质的应用,如:视频会议、视频聊天、视频监控等。本文所使用的技术,适用于这种实时性的应用,通过处理采集出来的音视频的每一帧,实现实时编码,实时输出。这是我做直播系列应用的一部分,目前的情况是输入端采用DirectShow技术捕获音视频,然后对视频进行h.264编码,对音频进行aac编码,输出端则是生成文件,接下来还要进一步扩展输入端和输出端,以支持文件、桌面输入,RTSP、RTMP、HTTP等流式协议输出。1. 简单介绍 首先是捕获,这里采用了DirectS.. 阅读全文
posted @ 2013-08-27 17:48 遥望星空 阅读(912) 评论(0) 推荐(0) 编辑