- 博客(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
866
原创 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
225
2
原创 关于调试由于mediacodec硬解码时出错导致马赛克出现的弥补办法
最近在做一个基于udp的屏幕广播项目时,遇到如下的问题:在进行屏幕广播时,出现接收到的ffmpeg编码没有显示错误信息的h264数据,然后mediacodec在硬解码这些数据时,发现会偶尔有一两帧的数据会硬解码失败,因此导致视频会出现马赛克。其实对于这个问题,我一开始是想着为什么会出现解码失败的呢?自己想了之后可能会有如下几个原因:1、可能是UDP发包和收包过程中存在丢包的现象。2、有可能是由于UDP发包时和接收到包的顺序出现不相同的情况了,导致数据有异常。接着我就开始验证是不是这...
2021-03-16 17:28:32
1392
原创 关于使用mediacodec绿边问题解决方法尝试
在上一篇文章中提到过关于对于某些机型的安卓手机使用mediacodec时会出现绿条,需要解决绿条的方法或许有很多,同时在网上很多文章都是讲解在解码端来解决这个问题的,在解码端处理YUV数据来实现裁剪来将绿条去掉。当然本文讲的方法是跟之前网络上不同的,本文的方法是从发送数据端的数据进行处理的,即直接处理源数据的分辨率来适配接收端的mediacodec分辨率,使其绿条部分被自动裁减掉了。核心思想如下:(1)由于mediacodec对于某些机型而言,当解码1920*1080时,需要分辨率其实是1920*1
2021-03-12 11:21:56
2542
原创 关于android 硬解码 mediacodec如何获取得到YUV数据
参考链接:https://blog.youkuaiyun.com/mozushixin_1/article/details/91968090参考链接:https://www.jianshu.com/p/ac53e9595940最近的项目是使用mediacodec进行硬解码,然后直接使用surface进行渲染时发现了一个问题:(1)对于1920*1080的图片,mediacodec解码出来后,然后直接将其渲染到绑定的surface中,此时在实际得到的渲染图片可以看出底部会出现绿边或者底部的图像出现马赛克的问题
2021-03-08 19:30:49
2237
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
653
1
原创 指数哥伦布熵编码代码实现-为手动封装h264的sps和pps做准备
前言:在最近在做的一个基于udp传输的屏幕广播项目中,由于为了未来移植的便利以及在接收端不是使用ffmpeg来接收和自动填充sps和pps的信息,所以需要自己手动填充来实现,然后再使用ffmpeg来进行解码。本章将讲述的是如何使用代码来实现无符号指数哥伦布编码和有符号指数哥伦布编码,然后再进一步实现手动填充sps和pps。由于较于网络上比较多的讲述了如何从解码哥伦布编码的数据,而比较缺少如何进行编码的说明,本文将讲解如何使用代码来实现指数哥伦布熵编码的实现。当然最后也补充解码的代码以供参考。
2021-01-29 08:54:05
379
3
原创 基于UDP的PC对PC的屏幕广播技术要点
最近在制作一个基于UDP的屏幕广播,这个屏幕广播的需求是:(1)仅仅实现电脑屏幕的画面传播即可,不需要进行音视频的同步(2)屏幕广播实现后需要延时达到500ms以内。一、屏幕广播的整体框架实现思路电脑端的画面采集(rgb)->图像数据的编码压缩(rgb->yuv->h264)->采集端发送数据->渲染播放端接收数据->图像数据解码(h264->yuv)->图像渲染播放(yuv)二、技术选型(1)电脑端的画面采集目前选用dxgi或者gdi
2021-01-26 09:08:01
949
原创 关于PCM音频重采样思路及注意事项(频率变换和通道数变换(单通道转双通道))
最近在做一个语音广播的项目,实现语音广播的过程主要是:音频采集、音频编码、音频发送、音频解码和音频播放,这个过程在这里不展开说明,本文主要讲述其中的音频重采样和音频降噪的问题和记录如何解决的思路。本文主要讲述重采样部分,降噪部分在下一篇文章讲述一、重采样和降噪的关系之所以降噪过程中需要借助重采样的力量来实现,原因是一般情况下我们从电脑端采集到的音频数据是44.1Khz或者48Khz的16位或者8位双通道的PCM数据,而对于目前一些通用开源的降噪库例如speex或者webrtc来说一般都是有对送入降噪
2021-01-13 15:43:53
6091
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
1057
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
2121
原创 如何使用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
1898
1
原创 基于FFMPEG和SDL2的音视频直播功能制作---------------5音视频同步播放(核心)
前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同
2020-10-14 11:09:56
276
原创 基于FFMPEG和SDL2的音视频直播功能制作-------7.2关于释放资源问题(补充)
前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个核心模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视
2020-09-30 14:19:12
236
原创 基于FFMPEG和SDL2的音视频直播功能制作-------7.2关于释放资源问题(补充)
ffmpeg内存泄漏之---av_bsf_receive_packet和av_bsf_send_packet
2020-09-30 11:38:34
649
原创 基于FFMPEG和SDL2的音视频直播功能制作-------7.1关于释放资源问题(补充)
前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同
2020-09-11 20:52:12
250
原创 基于FFMPEG和SDL2的音视频直播功能制作-------6关于释放资源问题
前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同
2020-09-09 17:18:32
237
原创 基于FFMPEG和SDL2的音视频直播功能制作-------5推流延迟10秒的问题
前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同
2020-09-08 11:29:12
616
原创 基于FFMPEG和SDL2的音视频直播功能制作-------4音视频拉流延时参数调整
前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同
2020-09-07 15:52:54
215
原创 基于FFMPEG和SDL2的音视频直播功能制作-------3音视频同步及推流
前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同
2020-09-06 23:48:18
336
原创 基于FFMPEG和SDL2的音视频直播功能制作-------前言
前言:最近在进行一个PC对PC端的直播功能的研发,主要需要实现从PC端捕获桌面处理成H264视频流,以及采集PC端的扬声器的声音处理成AAC音频流,通过RTMP推流到服务器端中,然后客户端可以从服务器中拉流并播放视频,最终实现直播的功能。该项目主要运用到FFMPEG实现音视频的编解码和拉流,使用SDL进行对音视频的播放。在实现该功能的过程中,总共可以分为如下几个模块:1、音频的采集、编码;2、桌面捕获和图像编码;3、音视频的同步及推流(核心);4、音视频的拉流及解码;5、音视频同
2020-09-06 21:06:03
240
原创 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
302
原创 新旧版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
1923
原创 新旧版本的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
687
原创 QT笔记
(1)QT中socket容易出现发送多个数据时容易连在一起发送,导致客户端接收解析数据时出现混乱 解决方法:可以使用socket->flush();函数清理一下缓存
2019-11-25 14:02:47
1025
opus_encode_decode-1.rar
2021-09-29
FreeIPScanner_3057.zip
2021-06-29
指数哥伦布熵编码-可用于手动生成sps的基础.rar
2021-01-28
使用ffmpeg对PCM音频进行重采样demo(单通道重采样为双通道)
2021-01-13
使用ffmpeg对pcm音频进行重采样(频率变换)的demo
2021-01-13
44.1Khz或48Khz两通道使用CoreAudio采集音频ffmpeg编码AAC的demo
2020-11-18
git安装包.rar
2020-09-21
vld-2.4rc2-setup.exe
2020-09-18
ffmpeg_sdl_拉流播放音频aac2-带界面操作.rar
2020-08-05
e12d5920 - 副本 (3)-能够进行麦克风和声卡录音-aac新版编码ffmpeg-将一帧数据完成编码完成-麦克风.rar
2020-08-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人