9 wusc'blog

尚未进行身份认证

假如生活欺骗了你,不要悲伤,不要心急,忧郁的日子里需要镇静

等级
TA的排名 3w+

Android 播放音频(PCM)的两种方法--AudioTrack/OpenSL ES使用简介

本文主要介绍Android上可以进行音频(PCM)播放的两个组件–AudioTrack/OpenSL ES的简单使用方法。对一个音频文件(如MP3文件),如何使用FFmpeg进行解码获取到PCM,之前的文章已经有相应的说明:https://blog.csdn.net/myvest/article/details/89254452。那么解码后或者mic采集的PCM数据,是如何播放的呢,首先一般...

2020-02-18 17:20:40

初识IPv6 有状态、无状态地址相关协议

本文主要介绍IPv6全局单播地址(Global Address)的获取方式及其相关的协议,DHCPv6协议和RA、RS报文(邻居发现协议)。全局单播地址类型IPv6地址中分为本地链路地址(Link-Local Address)与全局单播地址(Global Address)。本地链路地址根据mac等信息通过指定算法得到,不需要从路由器获取。以fe80:开头全局单播地址从需要和路由器进行协商获...

2019-11-30 17:51:19

FFmpeg libavfilter使用方法及音视频倍速

本文介绍FFmpeg中libavfilter的使用方法,并以其实现音视频倍速功能。

2019-07-07 20:15:14

wireshark TCP常见异常报文分析

流媒体播放中,常常需要借助wireshark从TCP层面对交互过程进行分析,本文记录一些常见的TCP异常报文及其分析。乱序与丢包1、[TCP Previous segment not captured][TCP Previous segment not captured]报文指的是在TCP发送端传输过程中,该Seq前的报文缺失了。一般在网络拥塞的情况下,造成TCP报文乱序、丢包时,会出现该标...

2019-10-19 15:44:59

Android 4.4 安装INSTALL_FAILED_SHARED_USER_INCOMPATIBLE后原APK无法使用问题分析

背景:记录最近在项目中遇到的一个问题,先说现象:/system/app/下原本有一个可以正常使用的APK,APK本想下发自升级,APK存在问题无法安装成功,但奇怪的是,原本/system/app/下正常的APK也无法使用了。从pm命令及ps命令都看到/system/app/下的APK没有运行。调试:1、把问题APK拿到后测试,pm installI -r xxx.apk 手动安装,返回...

2019-09-25 18:38:41

Socket IPV6相关结构体

背景:随着网络时代的发展,IPV6的需求也已经渐渐实施,播放器业务中,也需要扩展IPV6支持。涉及到IPV6的修改为播放器中流媒体交部分,常用的流媒体框架FFmpeg是支持IPV6,但需要打开选项支持,而LIVE555则现在还不支持IPV6。流媒体交互IPV6的修改,也即是底层Socket对IPV6的支持,主要是IPV4及IPV6地址结构存在差异,所以先了解Socket中IPV6相关的一些结...

2019-09-15 17:50:31

Android MediaExtractor + MediaCodec构建简单播放器

介绍Android系统中提供的两个播放器模块MediaExtractor 和MediaCodec的简单使用,利用他们来完成一个简易的播放器。其中MediaExtractor完成解复用工作,而MediaCodec则音视频解码工作。

2019-08-31 18:51:04

媒体播放常用调试工具

码流分析也是播放器开发中必备方法,可以帮助我们查看码流信息,确认码流是否正常,对问题分析起到事半功倍的作用。介绍些常用的分析工具及方法。

2019-08-16 13:12:59

Android 实现live555 RTSP代理播放器

利用live555 实现RTSP拉流客户端,但想看下播放效果,所以结合Android MediaPlayer实现播放。live555 实现RTSP交互及拉流过程,然后UDP,将数据传递给MediaPlayer播放。也就是相当于live555作为RTSP播放器的代理端。

2019-08-11 13:40:06

Android native层使用SoftwareRenderer及AudioTrack播放

介绍SoftwareRenderer显示YUV;audioTrack播放PCM流程

2019-08-04 19:35:17

音视频同步原理及实现

本文主要描述音视频同步原理,及常见的音视频同步方案,并以代码示例,展示如何以音频的播放时长为基准,将视频同步到音频上以实现视音频的同步播放。

2019-07-26 20:35:20

Android live555组播拉流客户端

组播拉流客户端,支持RTP及UDP裸流,介绍了live555在Android上的移植及简单实用方法。

2019-07-20 21:30:02

Android framework 增加DNS检测功能

背景:在Android framework中增加DNS检测功能,在网络连接后,检测DNS是否有效,并将有效的DNS尽量置前。

2019-07-06 15:14:34

Android framework 蓝牙开机连接慢与开机广播

问题:项目需要使用蓝牙外接设备,但每次重启开机到launcher显示后,蓝牙设备均需要等待20秒以上才能操作,体验非常差。分析:蓝牙的回连是由framework层实现。BluetoothManagerService相关代码如下,可以看到,自动打开蓝牙的流程是接收开机广播实现的。 private final BroadcastReceiver mReceiver = new Broad...

2019-07-02 16:42:01

FFmpeg 从seek闪退问题分析ts时长duration计算方法

背景HTTP点播seek闪退分析FFmpeg解析ts duration流程分析解决思路背景FFmpeg是非常优秀的开源框架,在使用其进行二次开发及适配的过程中,难免会遇到各种各样的问题。这次要分析的问题是基于FFmpeg的播放器在HTTP点播seek的时候,出现闪退,从而引申出FFmpeg中ts流duration计算方法的分析。HTTP点播seek闪退分析从日志看,发现seek的位置是...

2019-06-16 16:49:20

Android 开发常用方法及命令

1、开发时常用调试命令addr2linegdb配合core dump调试打印堆栈2、系统层面的调试命令dumpsysbugreportcat命令看节点信息top和free查看cpu和内存情况3、APK常用调试命令am命令dumpsys 命令pm命令其他常用命令1、开发时常用调试命令addr2line使用方法:addr2line -e xxx address 可以addr2line --he...

2019-06-11 09:39:47

FFmpeg 直播黑屏问题分析解决

背景FFmpeg是非常优秀的开源框架,在使用其进行二次开发及适配的过程中,难免会遇到各种各样的问题。这次记录的是基于FFmpeg开发的播放器中,直播黑屏问题分析思路及解决方法。问题如下:在直播节目的使用过程中,某些播放源起播后画面黑屏,但却有声音。...

2019-06-10 19:42:35

HLS简介

1.协议简介HLS全称为HTTP Live Streaming,是苹果公司提出的基于HTTP的流媒体网络传输协议。它的工作原理是把整个媒体流分成一个个小的基于HTTP的媒体分片来下载,每次只下载一些分片。在开始一个流媒体会话时,客户端会下载一个包含媒体分片的索引文件,即extended M3U playlist文件(m3u8),用于寻找可用的媒体分片。HLS中,索引文件可以嵌套,一般只有一级索...

2019-06-05 11:58:12

Android FFmpeg YUV转RGB及使用SurfaceView+ANativeWindow显示

1、FFmpeg像素格式转换FFmpeg像素转换一般使用libswscale来进行接口说明1、 获取上下文SwsContext一般我们使用下面两个函数来获取,sws_getCachedContext和sws_getContext略有不同的是,如果输入和输出的宽/高/格式不变,则会返回之前创建的context。参数说明:前三个参数分变为原始宽、高、格式(如RGBA8888,YUV420等...

2019-05-31 20:19:02

FFmpeg 音频重采样的两种方法libavcodec和libswresample

1、libavcodec2、libswresample

2019-04-23 19:03:35

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。