自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (11)
  • 收藏
  • 关注

原创 往android studio原生java工程中添加jni的过程

**一、配置步骤:**第一步是在/src/main/中建立一个文件夹cpp第二步是在文件夹中建立两个文件一个是native-lib.cpp和CMakeLists.txt第三步在上述两文件中添加如下内容://native-lib.cpp#include <jni.h>#include <string>extern "C" JNIEXPORT jstringJNICALLJava_com_example_ls_test1_Main1Activity_stringFr

2021-09-09 20:13:54 773

原创 TextView01

1、TextView代码展示<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:text="吴豪乐工作室" xmlns:android="http://schemas.android.com/apk/res/android"> <Text.

2021-06-27 09:48:28 188 2

原创 关于调试由于mediacodec硬解码时出错导致马赛克出现的弥补办法

最近在做一个基于udp的屏幕广播项目时,遇到如下的问题:在进行屏幕广播时,出现接收到的ffmpeg编码没有显示错误信息的h264数据,然后mediacodec在硬解码这些数据时,发现会偶尔有一两帧的数据会硬解码失败,因此导致视频会出现马赛克。其实对于这个问题,我一开始是想着为什么会出现解码失败的呢?自己想了之后可能会有如下几个原因:1、可能是UDP发包和收包过程中存在丢包的现象。2、有可能是由于UDP发包时和接收到包的顺序出现不相同的情况了,导致数据有异常。接着我就开始验证是不是这...

2021-03-16 17:28:32 1193

原创 关于使用mediacodec绿边问题解决方法尝试

在上一篇文章中提到过关于对于某些机型的安卓手机使用mediacodec时会出现绿条,需要解决绿条的方法或许有很多,同时在网上很多文章都是讲解在解码端来解决这个问题的,在解码端处理YUV数据来实现裁剪来将绿条去掉。当然本文讲的方法是跟之前网络上不同的,本文的方法是从发送数据端的数据进行处理的,即直接处理源数据的分辨率来适配接收端的mediacodec分辨率,使其绿条部分被自动裁减掉了。核心思想如下:(1)由于mediacodec对于某些机型而言,当解码1920*1080时,需要分辨率其实是1920*1

2021-03-12 11:21:56 2188

原创 关于android 硬解码 mediacodec如何获取得到YUV数据

参考链接:https://blog.csdn.net/mozushixin_1/article/details/91968090参考链接:https://www.jianshu.com/p/ac53e9595940最近的项目是使用mediacodec进行硬解码,然后直接使用surface进行渲染时发现了一个问题:(1)对于1920*1080的图片,mediacodec解码出来后,然后直接将其渲染到绑定的surface中,此时在实际得到的渲染图片可以看出底部会出现绿边或者底部的图像出现马赛克的问题

2021-03-08 19:30:49 1985 4

原创 关于安卓应用程序退出返回键状态检测的问题记录

为方便自己后续回顾安卓相关知识,本文章仅起到记录和借鉴作用1、目前进行的使用udp进行屏幕的项目中,使用到了安卓程序退出存在如下问题:==>点击鼠标右键即正常手机的返回键时,程序未能够正常退出,然后再次点击进去时则出现段错误而不能够再次启动的现象。如下为再次启动时打印的错误信息: 2021-03-04 16:43:20.409 8307-8536/com.example.myopenglsetest D/ywl5320: {width=1920, height=1080, csd-1

2021-03-04 17:04:51 593 1

原创 指数哥伦布熵编码代码实现-为手动封装h264的sps和pps做准备

前言:在最近在做的一个基于udp传输的屏幕广播项目中,由于为了未来移植的便利以及在接收端不是使用ffmpeg来接收和自动填充sps和pps的信息,所以需要自己手动填充来实现,然后再使用ffmpeg来进行解码。本章将讲述的是如何使用代码来实现无符号指数哥伦布编码和有符号指数哥伦布编码,然后再进一步实现手动填充sps和pps。由于较于网络上比较多的讲述了如何从解码哥伦布编码的数据,而比较缺少如何进行编码的说明,本文将讲解如何使用代码来实现指数哥伦布熵编码的实现。当然最后也补充解码的代码以供参考。

2021-01-29 08:54:05 318 3

原创 基于UDP的PC对PC的屏幕广播技术要点

最近在制作一个基于UDP的屏幕广播,这个屏幕广播的需求是:(1)仅仅实现电脑屏幕的画面传播即可,不需要进行音视频的同步(2)屏幕广播实现后需要延时达到500ms以内。一、屏幕广播的整体框架实现思路电脑端的画面采集(rgb)->图像数据的编码压缩(rgb->yuv->h264)->采集端发送数据->渲染播放端接收数据->图像数据解码(h264->yuv)->图像渲染播放(yuv)二、技术选型(1)电脑端的画面采集目前选用dxgi或者gdi

2021-01-26 09:08:01 805

原创 关于PCM音频重采样思路及注意事项(频率变换和通道数变换(单通道转双通道))

最近在做一个语音广播的项目,实现语音广播的过程主要是:音频采集、音频编码、音频发送、音频解码和音频播放,这个过程在这里不展开说明,本文主要讲述其中的音频重采样和音频降噪的问题和记录如何解决的思路。本文主要讲述重采样部分,降噪部分在下一篇文章讲述一、重采样和降噪的关系之所以降噪过程中需要借助重采样的力量来实现,原因是一般情况下我们从电脑端采集到的音频数据是44.1Khz或者48Khz的16位或者8位双通道的PCM数据,而对于目前一些通用开源的降噪库例如speex或者webrtc来说一般都是有对送入降噪

2021-01-13 15:43:53 5535 2

原创 Dxgi中关于DXGI_MAPPED_RECT中Pitch与Width差异

之前在网上查找的关于DXGI的截屏demo中成功实现了利用截屏来生成视频并进行屏幕广播,但是最近使用之前的demo时遇到了一个问题:==》在一些机器上使用如下代码获取图像数据及其每行数据的像素数:IDXGISurface *hStagingSurf = NULL;DXGI_MAPPED_RECT mappedRect;hr = hStagingSurf->Map(&mappedRect, DXGI_MAP_READ);可是发现如下问题,在一些机器上获取得到的mappedR

2021-01-04 14:18:55 941 1

原创 SDL相关函数的使用及注意事项(正确关闭SDL音频设备)

本文主要的目的在于讲解SDL2库常用的函数库以及讲述在项目中遇到的使用SDL,将记录SDL的初始化以及如何使用SDL开启渲染音频和关闭。一、SDL播放音频使用步骤及函数说明(1)SDL初始化:int SDLCALL SDL_Init(Uint32 flags)说明:该函数是用于激活需要激活的子系统的初始化函数,其中该SDL的子系统有很多例如音频和视频等子系统,传入的参数具有如下,常用的有 SDL_INIT_AUDIO和SDL_INIT_VIDEO :#define SDL_INIT_T

2020-12-01 09:50:58 1849

原创 如何使用CoreAudio采集44.1KHz和48KHz的音频并使用FFMPEG编码为AAC音频

之前找到一个demo,是使用CoreAudio来实现音频采集的,将采集到的数据以PCM的形式存放起来,对应于FFMPEG的格式是AV_SAMPLE_FMT_S16。如果对于旧版本的FFPEG的PCM编码AAC来说,使用的PCM格式是AV_SAMPLE_FMT_S16可以满足要求,但是在新版本的FFPEG中想要将PCM编码为AAC数据,必须是需要传入PCM的格式为AV_SAMPLE_FMT_FLTP,换言之对采集到的的PCM数据需要先进行重采样由AV_SAMPLE_FMT_S16转为AV_SAMPLE_FMT

2020-11-18 09:06:52 1643 1

原创 基于FFMPEG和SDL2的音视频直播功能制作---------------5音视频同步播放(核心)

前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同

2020-10-14 11:09:56 215

原创 基于FFMPEG和SDL2的音视频直播功能制作-------7.2关于释放资源问题(补充)

前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个核心模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视

2020-09-30 14:19:12 183

原创 基于FFMPEG和SDL2的音视频直播功能制作-------7.2关于释放资源问题(补充)

ffmpeg内存泄漏之---av_bsf_receive_packet和av_bsf_send_packet

2020-09-30 11:38:34 576

原创 基于FFMPEG和SDL2的音视频直播功能制作-------7.1关于释放资源问题(补充)

前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同

2020-09-11 20:52:12 216

原创 基于FFMPEG和SDL2的音视频直播功能制作-------6关于释放资源问题

前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同

2020-09-09 17:18:32 183

原创 基于FFMPEG和SDL2的音视频直播功能制作-------5推流延迟10秒的问题

前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同

2020-09-08 11:29:12 557

原创 基于FFMPEG和SDL2的音视频直播功能制作-------4音视频拉流延时参数调整

前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同

2020-09-07 15:52:54 185

原创 基于FFMPEG和SDL2的音视频直播功能制作-------3音视频同步及推流

前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同

2020-09-06 23:48:18 292

原创 基于FFMPEG和SDL2的音视频直播功能制作-------前言

前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同

2020-09-06 21:06:03 190

原创 RTMP接收到FLV数据注意项

记录下在接收flv数据时需要提取出h264数据遇到的坑,来记录下:在下图1-1是抓取h264数据包,其中可以看到在视频数据类型(0x09)后紧接就是0x27 0x01 .....了,0x27 0x01表示的是P帧数据,正正因为如果单单只看这个抓包软件反应的情况直接0x09紧接着就是0x27 0x01的话,就会给我们后续拉流解码带来隐患,为啥这么说,接下来就会明白了哈!图1-1 rtmp抓包的数据如下图1-2是真实拉流中将获取到的flv(带有h264的数据)保存下来的情况,可以看到在数据类型0

2020-08-19 20:28:32 270

原创 新旧版ffmpeg版本的解码接口说明及注意事项

新旧版ffmpeg版本的解码接口说明及注意事项(1)旧版的解码函数avcodec_decode_audio4()用起来是挺好用的,就是只要设置好编码器上下文AVCodecContext *avctx、分配好输入AVFrame *frame的空间,以及输出的const AVPacket *avpkt,就可以进行解码和获取解码后的数据了。//以往版本的解码函数//函数原型int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame,

2020-08-14 11:23:17 1601

原创 新旧版本的ffmpeg音频AAC编码注意事项

关于新旧版本的ffmpeg音频AAC编码补一个坑,为后续学习开发的人作为借鉴:(1)旧版本的编码函数是//编码函数avcodec_encode_audio2(pCodecCtx, &pkt, frame, &got_frame);(2)新版本的编码函数是//进行编码aacret = avcodec_send_frame(ac, pcm);//编码//此处的编码出来的是裸流,数据没有AAC常规的头7个字节ret = avcodec_receive_packet.

2020-08-13 21:24:52 630

原创 QT笔记

(1)QT中socket容易出现发送多个数据时容易连在一起发送,导致客户端接收解析数据时出现混乱 解决方法:可以使用socket->flush();函数清理一下缓存

2019-11-25 14:02:47 818

opus_encode_decode-1.rar

这个是将pous官方的demo修改为使用VS2015上直接调用的类,可以直接调用将pcm文件编码为opus,且将opus解码为pcm文件,opus是一款强大的效率极高的编解码器

2021-09-29

FreeIPScanner_3057.zip

本人目前所在公司由于经常被莫名的占用IP,比较困扰,因此找到了一个这个比较好用的IP检测工具,可以查看到哪些IP没被占用即可使用那个IP Free IP Scanner是一款小巧易用的免费IP地址和端口扫描器,该软件操作简便,它的多线程扫描技术,每秒可扫描数百台计算机,是非常快速的IP扫描器和端口扫描器,用户只需单击开始扫描即可自动将设置的IP范围内的IP地址显示出来,除此之外,Free IP Scanner简单的Ping每个IP地址以检查它是否存在,确定主机名、MAC地址、NetBIOS信息,端口扫描,等获得的信息可以导出到一个文件为纯文本文件。对于系统管理员和一般用户的监控和管理网络来说是一个很好的选择!本站提供Free IP Scanner的中文绿色版的下载,无需安装即可使用!

2021-06-29

指数哥伦布熵编码-可用于手动生成sps的基础.rar

这个资源是有符号和无符号指数哥伦布熵编码代码实现工程,里面没有自动填充sps和pps的代码,仅仅是增加了如何进行哥伦布指数编码的代码,可以在此基础上自行根据sps和pps的规则来填充数据。

2021-01-28

使用ffmpeg对PCM音频进行重采样demo(单通道重采样为双通道)

该资源使用ffmpeg对pcm音频进行重采样(频率变换),目前这个demo能够实现单通道重采样为双通道的音频数据,使用的是ffmpeg的重采样接口进行不是单纯的字符串操作。如果需要学习参考重采样方面的可以查看我的关于重采样方面的博客

2021-01-13

使用ffmpeg对pcm音频进行重采样(频率变换)的demo

该资源使用ffmpeg对pcm音频进行重采样(频率变换),目前这个demo能够实现32Khz、44.1khz和48khz之间互相转换正常,对于其他频率还没有测试。如果需要学习参考重采样方面的可以查看我的关于重采样方面的博客

2021-01-13

44.1Khz或48Khz两通道使用CoreAudio采集音频ffmpeg编码AAC的demo

该例程是使用CoreAudio采集电脑端PCM音频,采样频率可为44.1Khz或者48Khz,然后使用ffmpeg编码aac,最终可以获取到pcm和aac的demo

2020-11-18

git安装包.rar

这个资源是包含git for windows 64位安装包和tortoisegit的安装包,强调一下这个是windows 64位的安装包,请确认好需要再下载

2020-09-21

vld-2.4rc2-setup.exe

该安装包为VLD内存检测安装包,可在vs上使用,用于定位内存泄漏的位置和信息,是个比较实用的工具,可以给实际的项目开发调试带来很大的便捷。

2020-09-18

vlc3.0.5win64.rar

这里提供一个VLC3.0.5版本的64位的安装包,可以进行rtmp拉流测试使用,可用于测试自己写的推流的音视频是否同步

2020-09-06

ffmpeg_sdl_拉流播放音频aac2-带界面操作.rar

使用librtmp拉流aac,使用ffmpeg解码为pcm,最后通过sdl播放音频,带有一个简易版本的操作界面,不过存在一些bug,此刻还没办法解决暂停时如何播放静音,如果有好的办法能一块交流

2020-08-05

e12d5920 - 副本 (3)-能够进行麦克风和声卡录音-aac新版编码ffmpeg-将一帧数据完成编码完成-麦克风.rar

Coreaudio采集音频+librtmp推流aac,能够实现windows7音频aac扬声器音频采集和推流rtmp,使用的是vs2015建的项目

2020-08-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除