本篇将使用上节http://www.cnblogs.com/wenjingu/p/3977015.html中编译好的库文件通过rtsp获取网络上的h264裸流并保存到mp4文件中. 1.VS2010建立VC++  win32控制台项目 2.在工程目录下建立lib目录和include目录,将已编译好的lib拷打lib下,include拷到include下,dll拷到Debug目录下 3.工程属性--配置属性--VC++目录--包含目录,添加ffmpeg头文件目录及其他第三方头文件目录 链接器--常…
既然已经可以通过 RTSP 获取h264 裸流了.那么通过 FFmpeg 将其保存到文件中怎么做呢? 一.首先RTSP获取 h264 裸流 我们上面两篇文章主要讲的是通过 rtsp://Your ip:554/stream_chn0.h265 播放H.265视频流. PS:我刚试了一下,我的 FFmpeg 程序暂时不支持 h265 ...   之前编译的时候,只提供了 x264没有x265 如果感兴趣参看下面两篇文章添加. 参看:使用VS2015添加对ffmpeg添加h265 支持. 参看:ff…
首先树莓派连上网络,并和电脑在同一网段. 树莓派的IP是: 192.168.3.13 电脑的IP是: 192.168.3.6 1.在树莓派上采集 H264裸流,并用UDP发送到电脑. pi@Neil-PI ~ $ raspivid -t 999999 -hf -o -| socat – udp-datagram:192.168.3.6:8080 如果没有安装 socat  ,需要先安装 apt-get install socat 2. 在电脑上用VLC观看 H264裸流 Google了好久,才找…
从H264的裸流中,PPS,SPS中,一定可以获取到的,有图像的宽,高信息. 这部分信息的提取,用Stream eye 分析: 这里需要特别提一下这两个参数:  pic_width_in_mbs_minus1 = 119(1920)  pic_height_in_map_units_minus1 = 67(1088)分别表示图像的宽和高,以宏块(16x16)为单位的值减1因此,实际的宽为 (119+1)*16 = 352,高:(67+1)*16=1088 开始的时候,我还以为是哪里不对,1080…
int main(int argc,char *argv[]) 02 { 03  AVFormatContext *pFormatCtx; 04  int i,videoStream; 05  AVCodecContext *pCodecCtx; 06  AVPacket packet; 07  //H264Context *h; 08  int type=0; 09  //Open video file 10  char rtsp[100]=""; 11  char filename…
转载:http://www.cnblogs.com/xdp-gacl/p/3763559.html 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. 例如: <servlet> <servlet-name>ServletConfigDemo1</servlet-name> <servlet-class&…
一.安装ffmpeg 分为两种安装方式: 1. 命令行安装 brew install ffmpeg 2. 下载压缩包安装 去 http://evermeet.cx/ffmpeg/ 下载7z压缩包,解压缩后,将ffmpeg文件拷贝到一个地方,然后在bash_profile里面配置好环境变量 二.安装ffplay 分为两种安装方式: 1. 命令行安装 执行下面的命令就可以进行安装操作 brew install ffmpeg --with-ffplay 注:目前使用此安装方式安装后,执行ffplay会…
版权声明:本文为博主原创文章,未经博主允许不得转载. 使用ffmpeg解码h264数据其实相对使用x264进行视频编码是简单了许多的,因为ffmpeg提供了一个decoding_encoding.c的文件,这个文件里面有简单的使用ffmpeg进行视频.音频编解码的例子,不过可能有的人也会找不到这个示例,我就讲我改造过的这个示例放在这里,同时加一些解释. 其中需要注意的的一点我需要在此说明,就是ffmpeg在进行解码的时候是会考虑要解码的数据包是否有0x00 00 001这样的头的,如果没有的话,…
也可以通过av_find_best_stream()函数来获取流的索引: 例: audioStream = av_find_best_stream(ic, AVMEDIA_TYPE_AUDIO, -, -, NULL, ); LOGI("av_find_best_stream, audio index is: %d", audioStream);…
先附上代码,测试通过 #include <stdio.h> #include <math.h> #include "libavutil/avstring.h" //修改colorspace.h中的inline为__inline #include "libavutil/colorspace.h" #include "libavutil/pixdesc.h" #include "libavutil/imgutils.…
JSON和JSONP 如果在同一个域下,$.ajax()方法只要设置dataType属性即可加载JSON文件.而在非同域下,可以使用JSONP,但也是有条件的. Ajax进阶.html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Ajax进阶</title> <script type="text/javascript&qu…
花了两天时间做了个h264裸流nal类型和frame类型检测的工具,已上传至github,有需要的自行下载. 1.NAL类型检测 nal类型检测非常容易,对照下表即可容易判断类型. 较常用nal类型包括:SPS(7).PPS(8).IDR(5).SLICE(1). 而nal_type嵌在码流数据的nal_header(size=1Byte)中,占据据该字节的后五位bits. nal_header结构为:F(1bit) + NRI(2bits) + NAL_Type(5bits). 因此,用win…
问题描述:ffplay播放rtsp视频流时,播放过程中随机出现花屏现象. 基本流程学习:阅读ffplay源码,熟悉其播放rtsp视频流的基本流程. 在ffplay源码阅读和分析的基础上,画出了其播放rtsp的函数调用关系,如下图所示: avformat_open_input函数根据输入的文件名,与rtsp_read_packet关联. rtsp_read_packet完成每个rtp包的读取和解析,读取主要是利用rtp_read从缓冲区获取数据,解析主要是根据rtp协议,解析rtp包,得到h264…
一.FFmpeg 播放视频的基本流程整理 播放流程: video.avi(Container) -> 打开得到 Video_Stream -> 读取Packet -> 解析到 Frame -> 显示Frame. Container:在音视频中的容器,一般指的是一种特定的文件格式(如 AVI/QT ),里面指明了所包含的音视频,字幕等相关信息. Stream:媒体流,指时间轴上的一段连续数据,如一段声音.视频或字幕数据. Packet:Stream中的Raw数据,包含了可以被解码成方…
问题描述:ffplay播放rtsp视频流时,播放过程中随机出现花屏现象. 基本流程学习:阅读ffplay源码,熟悉其播放rtsp视频流的基本流程. 在ffplay源码阅读和分析的基础上,画出了其播放rtsp的函数调用关系,如下图所示: avformat_open_input函数根据输入的文件名,与rtsp_read_packet关联. rtsp_read_packet完成每个rtp包的读取和解析,读取主要是利用rtp_read从缓冲区获取数据,解析主要是根据rtp协议,解析rtp包,得到h264…
原文地址:https://www.cnblogs.com/cangyue080180/p/5873351.html 要播放H264裸码流,可以分拆为以下三个工作: 1.解码H264裸码流获取YUV数据 2.将YUV数据转换为RGB数据填充图片 3.将获取的图片进行显示 要完成工作1,我们可以直接使用海思的解码库,由于海思的解码库是C++的动态库,要完成在C#中进行调用可以参考海思h264解码库这篇文章,介绍的很详细.但是对于该博文只介绍了一种帧解码的方法,并没有介绍真正实用的流式解码方法.自己根…
要播放H264裸码流,可以分拆为以下三个工作: 1.解码H264裸码流获取YUV数据 2.将YUV数据转换为RGB数据填充图片 3.将获取的图片进行显示 要完成工作1,我们可以直接使用海思的解码库,由于海思的解码库是C++的动态库,要完成在C#中进行调用可以参考海思h264解码库这篇文章,介绍的很详细.但是对于该博文只介绍了一种帧解码的方法,并没有介绍真正实用的流式解码方法.自己根据解码库的参考文档写了一份C#版的流式解码算法. //初始化 // 这是解码器输出图像信息 hiH264_DEC_F…
本文将介绍 RTSP H264/HEVC 裸流如何于网页前端播放.涉及 WebSocket 代理发送流数据, Wasm 前端解码等. 代码: https://github.com/ikuokuo/rtsp-wasm-player 相关模块: # RTSP WebSocket Proxy RTSP/Webcam/File > FFmpeg open > Packets > WebSocket # WS Wasm Player WebSocket > Packets > Wasm…
本文概要: nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择.本文介绍了一种简易方法快速搭建rtmp流媒体服务器,也叫rtsp转播,数据源不是读取文件,而是采用获取rtspNal流后使用ffmpeg转播.csdn固本培元:leoluopy@gmail.com 开发环境:centos6.4 (主流的linux服务器选择,30%以上的市场占有率) 需要这几个包. 版本号:nginx 1.7.3  openssl 1.0.2   rtmp-module(版本未知…
在上一篇文章 FFmpeg学习(四):FFmpeg API 介绍与通用 API 分析 中,我们简单的讲解了一下FFmpeg 的API基本概念,并分析了一下通用API,本文我们将分析 FFmpeg 在编解码时使用的API. 一.FFmpeg 解码 API 分析 1. avformat_open_input 分析 函数 avformat_open_input 会根据所提供的文件路径判断文件的格式,其实就是通过这一步来决定到底是使用哪个Demuxer. 举个例子:如果是flv,那么Demuxer就会使…
文章来源:http://www.cuplayer.com/player/PlayerCode/RTSP/2014/0706/1419.html FFmpeg实现监控摄像头的RTSP协议转RTMP协议直播,我们使用的摄像头是海康的可以通过rtsp协议获取到摄像头的直播数据.所以可以通过 整理了一下要解决如下问题: 1.  摄像头的数据采集. 2.  如何将采集到的数据交给Red5处理. 3.  [FFmpeg]图文介绍windows下实现编译ffmpeg工程的详细步骤 解决方法: 1.  我们使用…
FFMPEG学习资料少之又少,在此推荐雷神的博客: http://blog.csdn.net/leixiaohua1020 在这里,我们把打印视频里的相关信息作为学习FFMPEG的 Hello World程序. #include <stdio.h> #include <string.h> extern "C" { #include "libavformat/avformat.h" #include "libavutil/dict.h…
在前面的学习中,视频和音频的播放是分开进行的.这主要是为了学习的方便,经过一段时间的学习,对FFmpeg的也有了一定的了解,本文就介绍了 如何使用多线程同时播放音频和视频(未实现同步),并对前面的学习的代码进行了重构,便于后面的扩展. 本文主要有以下几个方面的内容: 多线程播放视音频的整体流程 多线程队列 音频播放 视频播放 总结以及后续的计划 1. 整体流程 FFmpeg和SDL的初始化过程这里不再赘述.整个流程如下: 对于一个打开的视频文件(也就是取得其AVFormatContext),创建…
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用样式 回到顶部 React的背景和基本原理 在web开发中,我们总需要将变化的数据实时反应到UI上,这时就需要对DOM进行操作,复杂或频繁的对DOM操作是性能瓶颈产生的原因,React为此引入了虚拟的DOM的机制,在浏览器端使用javascript实现了一套DOM API,基于React开发时所有的…
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器拦截请求,创建代理Action对象,执行方法,返回结果,界面跳转. 拦截器解析请求路径,获取Action的名称,到配置文件中查找action的完整类名,利用反射创建对象. 每请求一次,就创建一个对象,所以action是多例的,也是线程安全的. 2,关系 请求的路径和配置文件的对应关系: 配置文件中包…
Redis支持string.list.set.zset.hash等数据类型,这一篇学习redis的数据类型.命令及某些使用场景. 一.String,字符串 字符串是 Redis 最基本的数据类型.一个字符串最大为 512M 字节.字符串数据类型适用于很多场景,例如,缓存 HTML 片段或者页面. Redis 字符串是二进制安全的,也就是说,一个 Redis 字符串可以包含任意类型的数据,例如一张 JPEG 图像,或者一个序列化的对象. 我们可以把字符串当做位数组(位图)来处理,很容易统计一些基于…
Quartz学习--二  Hello Quartz! 和源码分析 三.  Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 引入对应版本jar包: jar包 maven地址为: <!-- Quartz jar 包 2.2.1 版本 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>qu…
一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具集(全家桶). SpringCloud拥有SpringBoot的特点. 2.关于SpringCloud的版本? 大部分spring软件的版本是以:主版本.次版本.增量版本.里程碑版本的形式命名. Spring Cloud Angel SR6??? Angel是SpringCloud的一个大版本,Se…
  DjangoRestFramework学习二之序列化组件.视图组件   本节目录 一 序列化组件 二 视图组件 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 序列化组件 首先按照restful规范咱们创建一些api接口,按照下面这些形式写吧: Courses --- GET ---> 查看数据----->返回所有数据列表[{},{},] Courses--- POST --->添加数据 -----> 返回添加的数据{ } courses/1 ---…
出自:http://www.mworkbox.com/wp/work/314.html 2013-05-04 MP4的视频H264封装有2种格式:h264和avc1,对于这个细节,很容易被忽略.笔者也是在改编LIVE555流媒体时,增加mp4文件类型支持时遇到了该问题. (一)首先,从原理上了解一下这2种格式的区别:AVC1 描述:H.264 bitstream without start codes.一般通过ffmpeg转码生成的视频,是不带起始码0×00000001的.H264 描述:H.2…