音视频开发(ffmpeg&rtmp等)
绿叶清风
这个作者很懒,什么都没留下…
展开
-
H264编码原理以及I帧B帧P帧
前言 H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内。所以对于一段变化不大图像画面,我们可以先编码出一个完整的图像帧A,随后的B帧就不编码全部图像,只写入与A帧的差别,转载 2016-11-03 22:58:30 · 1443 阅读 · 0 评论 -
在Linux上搭建nginx rtmp流媒体服务器
1.先下载安装 nginx 和 nginx-rtmp 编译依赖工具sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev2. 创建一个工作目录,并切换到工作目录mkdir /usr/jason/nginxcd /usr/jason/nginx3. 下载 nginx 和 nginx-rtmp源码(wg原创 2018-03-10 08:40:05 · 761 阅读 · 0 评论 -
Android 利用MediaCodec 实现硬编码 h264
本篇文章记录一下,Android调用mediacodec编码camera回掉的YUV数据为h264的方法。 由于公司需要,软编码(X264)由于手机性能的瓶颈,已不能满足要求,所以决定使用硬编码。其实硬编码最早用过MediaRecord,但是不能直接得到h264数据,得先编成MP4,再从MP4里把H264的NALU取出来,感觉太绕了,所以当时抛弃了MediaRecord,选择了x转载 2016-11-15 15:17:05 · 14059 阅读 · 8 评论 -
JNI修改Native方法数组参数中数组里面的元素值
由于JNI不能直接回调Java方法,有时候我们可能会在Native方法里面的参数放上几个空的数组,让JNI往数组里面放值,Java调用完,再从数组里面取出值。Java代码如下: byte[] bytes = new byte[5]; int[] test = new int[3]; for(int i = 0;i<test.length;i++){原创 2016-11-02 18:49:10 · 2946 阅读 · 1 评论 -
编译各个架构的libx264-android脚本
#!/bin/sh############################################################### 注:# 此处默认使用 $ANDROID_NDK/platforms/android-21 版本,此# 版本只支持32位toolchain。# 如果项目中有使用到 ndk-build 工具,请在 Application.mk原创 2016-11-02 11:49:38 · 3208 阅读 · 0 评论 -
Mac(Android)集成ffmpeg/x264:ERROR: libx264 not found的问题
x264的编译脚本内容为:#!/bin/bashNDK=/Users/pingzhang/Documents/tool/android-ndk-r13#一定要注意设置的架构,要与后面编译ffmpeg的架构保持一致,否则ffmpeg找不到x264PLATFORM=$NDK/platforms/android-18/arch-arm/TOOLCHAIN=$NDK/toolchains/原创 2016-10-31 12:35:30 · 3110 阅读 · 0 评论 -
RTP/RTCP(一)-H264关于RTP协议的实现(包括分包算法)
H264关于RTP协议的实现2010-07-22 13:35完整的C/S架构的基于RTP/RTCP的H.264视频传输方案。此方案中,在服务器端和客户端分别进行了功能模块设计。服务器端:RTP封装模块主要是对H.264码流进行打包封装;RTCP分析模块负责产牛和发送RTCP包并分析接收到的RTCP包;QoS反馈控制模块则根据RR报文反馈信息动态的对发送速率进行调整;发送缓冲模块则设置端口发转载 2016-11-10 10:35:07 · 2595 阅读 · 0 评论 -
android 移植 ffmpeg (三) 测试用例(解决avcodec_find_encoder(AV_CODEC_ID_H264)返回为NULL的问题)
使用ffmmpeg编译的时候,一般我们会用到H264编码,像这样使用的时候发现ffmpeg无法找到H264编码: AVCodec* pCodec = avcodec_find_encoder(AV_CODEC_ID_H264); if (!pCodec){ LOGE("Can not find encoder(AV_CODEC_ID_H264)!");//程序执原创 2016-10-28 19:31:25 · 12040 阅读 · 1 评论 -
android 移植 ffmpeg (二) 测试用例
http://blog.csdn.net/net_wolf_007/article/details/52421582在android 移植 ffmpeg (一)中已经对环境进行了设置。 这一章将重点讨论怎么在应用中加入ffmpeg组件。所有测试都将在 Android Studio工具中进行。测试例子源地址: https://github.com/roman10/androi转载 2016-10-28 08:41:18 · 1385 阅读 · 0 评论 -
android 移植 ffmpeg (一)
之前曾写过一篇 《FFmpeg在Linux下安装编译过程》 ,今天有空就用Android Studio编译FFmpeg库并移植,并附上调用ffmpeg简单示例,看下Agenda如下:下载FFmpeg 3.1.3下载NDK配置ndk环境编译FFmpeg移植到Android平台调用编译的so示例下载FFmpeg 3.1.3网址: http转载 2016-10-27 12:47:41 · 1224 阅读 · 1 评论 -
[总结]FFMPEG视音频编解码零基础学习方法
转自在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者。在和大家探讨的过程中,我忽然发现了一个问题:在“大神”和初学者之间好像有一个不可逾越的鸿沟。“大神”们水平高超,探讨着深奥的问题;而初学者们还停留在入门阶段。究竟是什么原因造成的这种“两极分化”呢?最后,我发现了问题的关键:FFMPEG转载 2016-10-26 22:36:00 · 940 阅读 · 1 评论 -
ffmpeg中文文档
https://www.gitbook.com/book/xdsnet/other-doc-cn-ffmpeg/details原创 2016-10-25 21:26:29 · 2379 阅读 · 0 评论 -
iOS简单直播实现(一:创建本地rtmp服务器)Mac上搭建直播服务器Nginx+rtmp
简介nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网上整理了安装流程,分享给大家并且作备忘。步骤安装1、安装HomebrowHomebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,可以说Homebrew就是mac下的apt-get、yum神器/usr/bin/转载 2016-10-25 11:40:37 · 677 阅读 · 0 评论 -
H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
转自一、MP4格式基本概念MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二、MP4封装格式核心概念1 MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象编码的第12部分: ISO 基本媒体文件格式/Information technology Coding of audio-visual objects Part 12:转载 2016-10-24 18:52:18 · 824 阅读 · 0 评论 -
h264 NAL头解析
1.引言H.264的主要目标:1.高的视频压缩比2.良好的网络亲和性解决方案:VCL video codinglayer 视频编码层NAL network abstraction layer 网络提取层VCL:核心算法引擎,块,宏块及片的语法级别的定义NAL:片级以上的语法级别(如序列参数集和图像参数集),同时支持以下功能:独立片解码,起始码唯一保转载 2016-10-24 18:04:17 · 702 阅读 · 0 评论 -
音频原理相关
ffmpeg经过解码得到YUV格式,然后将其转换成RGB用UIImageView渲染出来,但是这样效率低。一般是将YUV用OpneGL ES渲染。怎么接收音频数据?sensor( 麦克风):采集PCM格式的数据常见的音频压缩算法:G711、Adpmc、AAC同视频一样,音频的处理同样需要对数据进行采集、编码、压缩,当客户端收到数据以后,需要对数据进行解码、解压、还原数据(还原P原创 2016-10-24 17:41:16 · 720 阅读 · 0 评论 -
H.264算法的基本思想
Sensor(可以是一个摄像头、手机):负责采取图像数据视频由一帧一帧的图片构成,如果图像(Sensor)每秒钟采取24-30张图片,人眼看起来就像视频,常见的图片格式PNG,JPG假如一张图片2MB,每秒钟采集30张,采取完图片需要在外网进行传输,当我们在外网进行传输时,这时候网络传输带宽要求为:2MB*30 = 60MB/s,这个时候在外网进行传输就需要对图像进行压缩,如对60原创 2016-10-24 14:10:07 · 961 阅读 · 0 评论 -
h.264语法结构分析
NAL Unit StreamNetwork Abstraction Layer,简称NAL。h.264把原始的yuv文件编码成码流文件,生成的码流文件就是NAL单元流(NAL unit Stream)。而NAL单元流,就是NAL单元组成的。标准的Annex B规定了NAL单元组成NAL单元流的方式,下面描述了如何将一个NAL单元打包起来,而多个NAL单元进行组合则形成了N转载 2016-11-03 23:15:46 · 1204 阅读 · 0 评论 -
在阿里云服务器上面编译ffmpeg
Tab 联想编译FFmpeg1.阿里云主机 ubuntu 14.04 64位2.安装XShell、Xftp3.上传NDK、FFmpeg4.安装VIM sudo apt-get install vim-gtk命令模式退出,shift + :,输入q!强制退出保存退出,shift + z z进入编辑模式,i进入命令模式,Esc命令模式:x删除,dd删除行5.VIM配置原创 2018-03-10 20:04:02 · 928 阅读 · 0 评论