JavaCV FFmpeg AAC编码】的更多相关文章

上次成功通过FFmpeg采集麦克风的PCM数据,这次针对上一次的程序进行了改造,使用AAC编码采集后的数据. (传送门) JavaCV FFmpeg采集麦克风PCM音频数据 采集麦克风数据是一个解码过程,而将采集后的数据进行AAC编码则是编码过程,如图: 从上图可以看出,编码过程,数据流是从AVFrame流向AVPacket,而解码过程正好相反,数据流是从AVPacket流向AVFrame. javacpp-ffmpeg依赖: <dependency> <groupId>org.b…
Ffmpeg AAC编码 如果传入参Frame的Sample Format 为 AV_SAMPLE_FMT_S16,会出现 错误提示 Input contains (near) NaN/+-Inf,需要将Frame的Sample Format 设置为AV_SAMPLE_FMT_FLTP 小小错误,有时会折腾人,希望后来者少走弯路. 如需交流可加QQ群766718184 或者QQ3501870…
上次成功通过FFmpeg采集摄像头的YUV数据,这次针对上一次的程序进行了改造,使用H264编码采集后的数据. (传送门) JavaCV FFmpeg采集摄像头YUV数据 采集摄像头数据是一个解码过程,而将采集后的数据进行H264编码则是编码过程,如图: 从上图可以看出,编码过程,数据流是从AVFrame流向AVPacket,而解码过程正好相反,数据流是从AVPacket流向AVFrame. javacpp-ffmpeg依赖: <dependency> <groupId>org.b…
上一篇对摄像头预览,拍照做了大概的介绍,现在已经可以拿到视频帧了,在加上 RTSP 实现,就是直播的雏形,当然还要加上一些 WEB 管理和手机平台的支援,就是一整套直播软件. 介绍一些基础概念:RTP RTSP RTMP RTP 实时传输协议,RTMP 以前  flash 用的视频协议,RTSP 目前比较流行的 直播协议 用到的软件和第三方库:ffmpeg live555 VLC VLC 全平台播放器,win ubuntu mac os android 各个平台都有,功能强大,UI美观,还没有广…
在弄音频采集时,需要设置缓存的大小,如果只是简单的采集和直接播放PCM数据,缓存的大小一般不影响播放和保存. 但是,如果需要使用FFMpeg音频编码,这时,音频缓存的大小必须设置av_samples_get_buffer_size函数返回的大小.以下是几点注意的 1. m_pFrame = av_frame_alloc();m_pFrame->format = ffSampleFormat;m_pFrame->nb_samples = nSampleRate;//帧的大小 2. m_nBuff…
http://www.cnblogs.com/haibindev/archive/2011/12/29/2305712.html C++实现RTMP协议发送H.264编码及AAC编码的音视频 RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如FMS, Red5, crtmpserver等.RTMP协议…
C++实现RTMP协议发送H.264编码及AAC编码的音视频(转) RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如FMS, Red5, crtmpserver等.RTMP协议可用于实现直播.点播应用,通过FMLE(Flash Media Live Encoder)推送音视频数据至RtmpServe…
RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如FMS, Red5, crtmpserver等.RTMP协议可用于实现直播.点播应用,通过FMLE(Flash Media Live Encoder)推送音视频数据至RtmpServer,可实现摄像头实时直播.不过,毕竟FMLE应用范围有限,想要把它嵌…
一.前言 在 Android 音视频开发学习思路 中,我们不断的学习和了解音视频相关的知识,随着知识点不断的学习,我们现在应该做的事情,就是将知识点不断的串联起来.这样才能得到更深层次的领悟.通过整理 Android 音视频开发(一) : 通过三种方式绘制图片 我们知道可以使用ImageView和SurfaceView甚至是View来展示图片,通过整理 Android 音视频开发(三):使用 AudioTrack 播放PCM音频 我们知道如何播放音频原始数据了.那么可不可以定义为,我们找到了如何…
RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如FMS, Red5, crtmpserver等.RTMP协议可用于实现直播.点播应用,通过FMLE(Flash Media Live Encoder)推送音视频数据至RtmpServer,可实现摄像头实时直播.不过,毕竟FMLE应用范围有限,想要把它嵌…
0. 前言 我在前两篇文章中写了DirectShow捕获音视频然后生成avi,再进行264编码的方法.那种方法有一些局限性,不适合实时性质的应用,如:视频会议.视频聊天.视频监控等.本文所使用的技术,适用于这种实时性的应用,通过处理采集出来的音视频的每一帧,实现实时编码,实时输出.这是我做直播系列应用的一部分,目前的情况是输入端采用DirectShow技术捕获音视频,然后对视频进行h.264编码,对音频进行aac编码,输出端则是生成文件,接下来还要进一步扩展输入端和输出端,以支持文件.桌面输入,…
转自:http://www.cnblogs.com/haibindev/archive/2011/11/10/2244442.html 0. 前言 我在前两篇文章中写了DirectShow捕获音视频然后生成avi,再进行264编码的方法.那种方法有一些局限性,不适合实时性质的应用,如:视频会议.视频聊天.视频监控等.本文所使用的技术,适用于这种实时性的应用,通过处理采集出来的音视频的每一帧,实现实时编码,实时输出.这是我做直播系列应用的一部分,目前的情况是输入端采用DirectShow技术捕获音…
/* * unsigned long nSampleRate, // 采样率,单位是bps * unsigned long nChannels, // 声道,1为单声道,2为双声道 * unsigned long &samplesInput, // 传引用,得到每次调用编码时所应接收的原始数据长度 * unsigned long &maxBytesOutput // 传引用,得到每次调用编码时生成的AAC数据的最大长度 */ enc = faacEncOpen(samplerate, ch…
ffmpeg h264编码的例子前面的文章已经介绍,本来主要讲述影响AVCodecContext extradata是否为 空的配置项.如果要求open编码器以后AVCodecContext extradata存有 SPS,PPS 信息需要加上 EncoderContext->flags |= AV_CODEC_FLAG_GLOBAL_HEADER .跟踪源码你会发现这个标志在 libx264.c中被用到.如下图所示:                                       …
转:http://www.cnblogs.com/haibindev/archive/2011/12/29/2305712.html C++实现RTMP协议发送H.264编码及AAC编码的音视频 RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如FMS, Red5, crtmpserver等.RTMP…
RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系Flash Player和RtmpServer,如FMS, Red5, crtmpserver等.RTMP协议可用于实现直播.点播应用,通过FMLE(Flash Media Live Encoder)推送音视频数据至RtmpServer,可实现摄像头实时直播.不过,毕竟FMLE应用范围有限,想要把它嵌…
前阵子用一个JavaCV的FFmpeg库实现了YUV视频数据地采集,同样的采集PCM音频数据也可以采用JavaCV的FFmpeg库. 传送门:JavaCV FFmpeg采集摄像头YUV数据 首先引入 javacpp-ffmpeg依赖: <dependency> <groupId>org.bytedeco.javacpp-presets</groupId> <artifactId>ffmpeg</artifactId> <version>…
1. 前言 如果说目前H.264是视频CODEC的实际霸主,那么AAC就是音频CODEC的女王.主流的音视频格式都是H.264搭配AAC,无论是非实时的媒体文件还是实时的媒体流. 2. AAC历史 Advanced Audio Coding (AAC) 是一个有损压缩的音频编码集(其实新的编码工具也支持无损). 其设计目标是替代原有MP3编码标准,在与MP3在相似的码率下希望质量优于MP3.这一目标已达到并且由ISO和IEC标准组织标准化在MPEG-2和MPEG-4中. AAC已被广泛支持并应用…
enc_ctx->profile =FF_PROFILE_H264_MAIN ; enc_ctx->time_base.den = 24; enc_ctx->time_base.num = 1; enc_ctx->gop_size = 8; /* emit one intra frame every twelve frames at most */ enc_ctx->pix_fmt = AV_PIX_FMT_YUV420P; enc_ctx->max_b_frames…
公司项目中使用rtmp推流,音频编码aac.视频编码H264.windows和android平台都没有发现问题.然而在IOS版本的APP中发现几个问题:1. 推流后flash播放异常2. IOS平台微信分享后html5播放异常但是在PC上播放正常,android平台上html5播放正常. 经过两天的钻研,发现问题如下:1. rtmp建立连接的时候先发送音视频相关参数.或者第一帧发送的数据应该如下: m_pPacketAudio->m_nChannel = 0x04; m_pPacketAudio…
       今天说说使用ffmpeg在写视频编码程序中踩的一个坑,这个坑让我花了好多时间,回头想想,非常多时候一旦思维定势真的挺难突破的.以下是不对的编码结果:                                                             使用ffmpeg做视频编码过程中,首先要新建数据帧,并为数据帧分配对应内存,以便于保存图像数据,为数据帧分配内存须要用到av_image_alloc()这个函数,该函数将依据传入的图像宽.高.图像格式.数据对齐基数等…
AAC音频编码 https://www.jianshu.com/p/af0165f923e9 https://blog.csdn.net/u013427969/article/details/53091594 https://blog.csdn.net/qinglongzhan/article/details/80972174 时域频域的介绍(傅里叶变换):https://blog.csdn.net/u013539952/article/details/80525393 心理声学: RTMP应用…
花时间研究了一些ffmpeg的nvenc,本来想我已经有了cuvid,然后又搞出来了nvenc,应该可以做个全套的英伟达的转码了,没想到ffmpeg官网下载的动态库没有cuvid,windows上编译cuvid又老是出错,忧了个伤. 1.nvenc编码 h264_nvenc是很容易调出来的,把编码器ffmpeg源码自带的例子的编码器换成h264_nvenc就行了.可是hevc_nvenc就花了我好多时间,感觉调试技术还是差了好多. #include "stdafx.h" /* * Vi…
前言 最近来到深圳,跟许多做硬件的小伙伴聊安防.聊互联网.聊技术,受益颇多,其中聊到一点,大家一直都在想,互联网发展如此迅猛,为啥大部分的摄像机还是采用的传统G.726/G.711的音频编码格式呢,如果能直接输出AAC格式的音频,再配合H.264+AAC,基本上编码数据就不用再做处理,就可以直接做协议转换的输出了,输出:RTSP.RTMP.HLS.MP4.FLV各种协议和封装格式,而如果还是传统安防的音频格式,不但音频数据要做转码,时间戳也要重新矫对,非常不便: 为什么呢? 目前市面上的大部分摄…
花时间研究了一些ffmpeg的nvenc,本来想我已经有了cuvid,然后又搞出来了nvenc,应该可以做个全套的英伟达的转码了,没想到ffmpeg官网下载的动态库没有cuvid,windows上编译cuvid又老是出错,忧了个伤. 1.nvenc编码 h264_nvenc是很容易调出来的,把编码器ffmpeg源码自带的例子的编码器换成h264_nvenc就行了.可是hevc_nvenc就花了我好多时间,感觉调试技术还是差了好多. #include "stdafx.h" /* * Vi…
ffmpeg version N-49044-g89afa63 Copyright (c) 2000-2013 the FFmpeg developers built on Jan 19 2013 20:36:06 with gcc 4.7.2 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --en libavutil      5…
一.测试说明: 源文件:1080psrc.mp4 时长:900秒 源文件信息:Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 2960 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default) 编解码方式:CPU软解 二.硬件环境 CPU:Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz MemT…
前阵子使用利用树莓派搭建了一个视频监控平台(传送门),不过使用的是JavaCV封装好的OpenCVFrameGrabber和FFmpegFrameRecorder. 其实在javacpp项目集中有提供FFmpeg的JNI封装,可以直接使用FFmpeg API的来处理音视频数据,下面是一个简单的案例,通过FFmpeg API采集摄像头的YUV数据. javacpp-ffmpeg依赖: <dependency> <groupId>org.bytedeco.javacpp-presets…
程序分为编码端和解码端,两端通过tcp  socket通信,编码端一边编码一边将编码后的数据发送给解码端.解码端一边接收数据一边将解码得到的帧显示出来. 代码中的编码端编码的是实时屏幕截图. 代码调用了Qt SDK. #ifndef MAPTHREAD_H #define MAPTHREAD_H #include <QThread> #include <QTcpSocket> #include <QTimer> #include <QColor> #incl…
package com.nmcc.demo.utils; import lombok.extern.slf4j.Slf4j; import org.bytedeco.javacpp.avcodec; import org.bytedeco.javacpp.avutil; import org.bytedeco.javacv.FFmpegFrameGrabber; import org.bytedeco.javacv.FFmpegFrameRecorder; import org.bytedeco…