自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hugo.Lee的博客

享受工作,读书学习,音乐品茗,运动出汗,周游列国,广交朋友,胸怀社稷,心存菩提,少年老成,童心未泯,心有灵犀,大智若愚,什么都已明白,什么都还嗔痴!

  • 博客(176)
  • 资源 (1)
  • 收藏
  • 关注

原创 ffprobe输入与输出信息详解

ffprobe是ffmpeg提供的三大工具之一,用来查看音视频文件的各种信息,比如:封装格式、音频/视频流信息、数据包信息等。ffprobe的源码是ffprobe.c,开发过程中如果想获取ffprobe查看的信息,可以通过分析源码,获得对应字段。 本文主要介绍format、stream、Packet和Frame信息,包含每个字段的说明以及对应的ffmpeg字段。输出每个流的具体信息(以JSON格式)ffprobe -v quiet -print_format json -show_format -sh

2020-06-04 17:30:36 4959 1

原创 七牛WebRTN实时音视频应用开发实践

七牛WebRTN实时音视频应用开发实践这篇文章将使用 Web SDK 详细地介绍一个可用的连麦应用搭建流程,并针对一些常见的问题和需求给出一套可用的解决方案。目标我们的目标是一个可以被用于产品的网页连麦应用,为了不让过程显得太复杂,我们将这个连麦的场景定为一对一连麦,也就是两人的在线视频通话。这篇教程将给这个一对一连麦应用实现如下功能:基本的连麦功能基本后端服务(使用 NodeJS)...

2020-03-30 11:53:08 1089

转载 七牛Android推流SDK-更换推流地址、码率、帧率、分辨率等

Q:如何在预览时,等待服务器返回推流地址后,或者其它场景,设置推流地址、码率、帧率、分辨率等参数。A:目前推流SDK大多数推流参数不支持动态修改,所以修改推流地址需要在非推流状态时进行// 停止推流(如果处于推流状态)mMediaStreamingManager.stopStreaming();// 修改配置mProfile.setPublishUrl("newURL");// 设置配...

2020-03-23 10:31:54 1040

原创 小程序直播功能项目所需要的资质

接入小程序直播需要直接使用微信小程序的live-pusher和live-player组件;这两个组件暂只针对国内主体如下类目的小程序开放,需要先通过类目审核,再在小程序管理后台,「开发」-「接口设置」中自助开通该组件权限。step1: 通过类目审核根据live-pusher和live-player组件所需的一级和二级类目,去非个人主体小程序开放的服务类目查看具体类目需要的资质要求;...

2020-03-11 20:19:36 4440 1

原创 七牛短视频录制时截帧(抓拍)处理

public void onCaptureFrame(View v) { mShortVideoRecorder.captureFrame(new PLCaptureFrameListener() { @Override public void onFrameCaptured(PLVideoFrame capturedFrame)...

2019-08-14 12:10:23 841 2

原创 七牛连麦V2-PK竖屏连麦

package com.qiniu.pili.droid.rtcstreaming.demo.activity.streaming;import android.app.ProgressDialog;import android.content.pm.ActivityInfo;import android.hardware.Camera;import android.media.Medi...

2019-08-14 11:46:04 435

原创 七牛推流SDK-后台推图片示例

package com.qiniu.pili.droid.streaming.demo.activity;import android.content.pm.ActivityInfo;import android.graphics.Bitmap;import android.hardware.Camera;import android.media.AudioFormat;import ...

2019-08-08 11:21:07 432

原创 git push提示Username for 'https://github.com' 解决办法

因为一些不当remote操作,根据github提示,最后git push提示Username for 'https://github.com' 注意这里的账号是没问题,可以password并不是账号密码的这个密码,而是github里面 develop setting 里面的acess key;$ git add .$ git commit -m 'first commit'[ma...

2019-05-03 20:44:53 19513 1

原创 FFmpeg SDK 开发(四)

之前 FFmpeg SDK 开发(一) 列举了FFmpeg 中比较重要的函数以及数据结构,并概念性的介绍了其中一些名词。这边将深入进行到具体的结构内容。FFMPEG中结构体分类FFMPEG中结构体很多。最关键的结构体可以分成以下几类:解协议(http,rtsp,rtmp,mms)AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。U...

2019-03-12 22:24:34 758

原创 FFmpeg SDK 开发(三)

这一篇主要对一些编解码过程中会遇到的概念做了解:H.264编码原理I/B/P帧三种帧的说明I帧:帧内编码帧 ,I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)I帧特点:1.它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输;2.解码时仅用I帧的数据就可重构完整图像;3.I帧描述了图像背景和运动主体的详情;4.I帧不...

2019-03-12 16:24:15 426

原创 FFmpeg SDK 开发(二)

在学习FFmpeg的过程中,特意再去了解了下 FFmpeg 的背景FFmpeg 背景介绍FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。...

2019-03-11 17:03:44 611

原创 FFmpeg SDK 开发(一)

FFMpeg 中比较重要的函数以及数据结构如下:1. 数据结构:(1) AVFormatContext此结构包含了一个视频流的格式内容。其中存有了 AVInputFormat(or AVOutputFormat 同一时间 AVFormatContext 内只能存在其中一个),和 AVStream、AVPacket 这几个重要的数据结构以及一些其他的 相关信息,比如 title,author...

2019-03-06 11:42:08 2350

原创 Github下载仓库中子文件夹

GitHub作为程序员的资源基地,经常我们在查找到自己想要的资源的时候,并不想把整个项目clone下来,而只是想获取其中某个文件夹的资源,这个需求可以通过如下步骤解决:1,把 GitURL 变成 SVNURL比如想要获取这个项目(https://github.com/wangdingqiao/noteForOpenGL) 里面单独的PBO工程,复制浏览器中的地址,如下:https://git...

2019-02-08 12:16:30 718

原创 Android view绘制流程的深入理解

1,view的测量:measure()方法被父view调用,在measure中做一些初始化工作后,调用onmeasure()来进行实际自我测量,view的measure方法是final的不能够重写,所以主要逻辑都在onmeasure里(),onmeasure做的事,view和viewgroup做的不一样。view的onmeasure()会计算出自己的尺寸然后保存,直接继承view的自定义控件需...

2019-01-05 11:21:05 215

原创 关于Android Studio

Android StudioAndroid Studio(AS) 介绍学习的必要性原因说明发展趋势google公司把官方IDE工具定位AS,并停止了EclipseADT的维护工作越来越多的公司在使用AS作为开发工具学习Github上越来越多的android开源项目是AS开发的安装安装需求JDK 1.72G空闲内存500M磁盘空间...

2019-01-02 23:06:24 508

原创 mac环境tensorflow 初探

Tensorflow 是一个类库或者IDE,可以帮助我们更好的训练模型,他内置了大量的算法和库函数,非常方便深度学习的开发。1,安装Tensorflowpip3 install -U tensorflow2,打印一个’hello world’➜ ~ python3Python 3.6.6 (v3.6.6:4cf1f54eb7, Jun 26 2018, 19:50:54)[GCC ...

2019-01-02 22:08:33 248

原创 SDL基本原理及使用实战

SDLSDL (Simple DirectMedia Layer)由C语言实现的跨平台的媒体开源库多用于开发游戏、模拟器、媒体播放器等多媒体应用领域SDL 编译与安装下载SDL源码解压源码: tar -zvxf SDL2-2.0.9.tar.gz生成 Makefile: configure – prefix=/usr/local安装: sudo make -j 8 &&am...

2018-11-29 10:29:04 3439 1

原创 FFmpeg源码分析与实际应用

FFmpeg 下载、目录git clone https://git.ffmpeg.org/ffmpeg.gitlibavcodec: 存放各个encode/decoder模块,用于各种类型的声音/图像的编解码;libavdevice: 用于对输入/输出设备的支持;libavfilter: 滤镜,可用于裁剪视频,添加log等;libformat: ...

2018-11-29 10:14:36 1540

原创 C语言在mac下的编译和调试

C语言在mac下的编译和调试GCC/CLANGgcc/clang -g -O2 -o test test.c -I… -L… -l-g: 输出文件中的调试信息-O: 对输出文件做指令优化-o: 输出文件-I:指定头文件-L:指定库文件位置-l: 指定使用哪个库clang -g -o testfunc testfunc.c ./testfunc 编译过程预编译编译链...

2018-11-29 10:12:42 2189

原创 实时音频Audio 3A处理初探

       音视频社交应用在近两年呈现飞速增长,随之增长的同样还有中国在线教育市场规模,可以说,实时音视频技术助力众多产业转型升级,并使得视频会议等经典应用场景重获新生。众多的新兴场景与行业借助实时音视频技术实现了更佳丰富炫目高效准确的场景表达与业务落地,同时也进一步促进了实时音视频的技术演进与行业探索。实时音视频正在各个千亿、百亿市场快速发展并逐渐成为基础设施型重要技术。       本篇...

2018-11-20 09:06:14 14439

原创 Github如何从主项目更新fork的项目

Github如何从主项目更新fork的项目从一个项目 fork了一份到自己的仓库后,这个项目还是继续更新。我们该怎么在不重复fork的情况下,更新项目的内容到自己的仓库呢?根据七牛推流demo工程为例,可以按照下面的操作进行。step 1打开:terminal,cd到自己fork后git clone的project下以Mac为例,首先需要打开terminal终端,进入到从githu...

2018-10-04 23:35:51 1632 3

原创 Android短视频软编、硬编、滤镜、合成等功能解析

        在Android上要实现一个录制功能,需要有几个方面的知识储备:自定义相机的开发、视频数据格式的了解、编码相关知识以及视频合成技术,同时如果需要美颜、磨皮等滤镜操作还需要一定的openGL的知识。        视频的编码录制主要是软编和硬编两种方案:  软编即采用CPU对相机采集的原始数据进行编码后再和音频一起合并成一个MP4等格式的文件。优点 是技术相对成熟,网上开源的...

2018-08-18 23:30:44 2405 1

转载 FFmpeg命令参数解释和功能命令汇总

强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流、更改音视频参数功能等。平常会直接用到一些主要的功能命令,所以下述先列举功能命令,再整体的列举搜集的命令中的参数的解释说明     功能命令汇总             第一组1.分离视频音频流ffmpeg -i input_file -vcodec copy -

2018-02-04 12:45:09 4916 1

转载 音视频中GOP、 PTS 和 DTS

视频视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速翻动的感觉。但是在实际应用中,并不是每一帧都是完整的画面,因为如果每一帧画面都是完整的图片,那么一个视频的体积就会很大,这样对于网络传输或者视频数据存储来说成本太高,所以通常会对视频流中的一部分画面进行压缩(编码)处理。由于压缩处理的方式不同,视频中的画面帧就分为了不同的类别...

2018-01-25 12:24:06 6296 1

原创 七牛Android播放器V1版本开发文档

1 概述PLDroidPlayer 是一个适用于 Android 平台的音视频播放器 SDK,可高度定制化和二次开发,为 Android 开发者提供了简单、快捷的接口,帮助开发者在 Android 平台上快速开发播放器应用。1.1 功能特性及版本号 功能特性/接口 描述 版本 支持软硬解自动切换 自动解码模式下,优先硬解,硬解失败自动切换到软解 v1.4.1(+) 支持 H

2017-12-25 11:33:17 2982

原创 Android获取最新技术资讯可关注的网站

Android Weekly http://androidweekly.net这份免费的周报里面应有尽有,包括文章、教程、视频和 GitHub 上的优质项目。不论是什么级别的安卓开发者都应该订阅这份周报。AndroidHivehttp://www.androidhive.info由印度人 Ravi Tamada 创建,分享关于安卓的最新消息。

2017-11-11 11:57:13 1151

原创 视频编码方式

我们通常所说的 .mp4,.flv,.ogv,.webm 等。简单来说,它其实就是一个盒子,用来将实际的视频流以一定的顺序放入,确保播放的有序和完整性。因为,原始的视频流非常大,打个比方就是,你直接使用手机录音,你会发现你几分钟的音频会比市面上出现的 MP3 音频大小大很多,所以视频必须要经过压缩算法封装起来。       首先,由原始数码设备提供相关的数字信号流,然后经由视频压缩算法,大

2017-10-11 09:34:41 1492

原创 HTTP Live Streaming(HLS)详解

1,由来:HLS是一个基于 HTTP 的视频流协议,由 Apple 公司实现,Mac OS 上的 QuickTime、Safari 以及 iOS 上的 Safari 都能很好的支持 HLS,高版本 Android 也增加了对 HLS 的支持。一些常见的客户端如:MPlayerX、VLC 也都支持 HLS 协议。2,格式:浏览器使用的是 m3u8 文件,可以简单的认为 m3u8

2017-10-09 22:39:57 2314 1

原创 Web 前端如何播放 HLS(.m3u8) 视频

HTTP Live Streaming (HLS) has become a de-facto standard for streaming video on mobile devices thanks to its native support on iOS and Android. Unfortunately, all the major desktop browsers except for

2017-10-09 22:25:38 33658 5

原创 直播建议网络环境

一、首先要确保网络是ok的。有没有网络连接,不能只看移动设备是否连接上wifi,还要看是否能正产访问网页等;二、尽量保证是独享带宽:主播过程中可能会遇到的问题,平时常见问题是下面两个:1. 主播使用的是低端机型,例如主播是500元以下的安卓机型或者 iphone4s以下的机型推流。由于硬件设施差,且在加美颜滤镜的情况下,导致的推流效果差,所以在产品层

2017-09-30 09:51:02 1112

原创 Kotlin学习资料

Kotlin学习资料入门资料Kotlin初探使用Kotlin优雅的开发Android应用《From Java To Kotlin》从Java到Kotlin·译 权威资料Kotlin 官网:https://kotlinlang.org/docs/reference/kotlin中文官网:https://w

2017-08-10 14:19:32 404

转载 hls之m3u8、ts流格式详解

原文链接:hls        pts是显示时间戳、dts是解码时间戳,视频数据两种时间戳都需要,音频数据的pts和dts相同,所以只需要pts。有pts和dts两种时间戳是B帧引起的,I帧和P帧的pts等于dts。如果一个视频没有B帧,则pts永远和dts相同。从文件中顺序读取视频帧,取出的帧顺序和dts顺序相同。dts算法比较简单,初始值 + 增量即可,pts计算比较复杂,需要在dts的基

2017-08-08 15:36:55 1898

翻译 MediaPlayer

*MediaPlayer的继承关系: public class MediaPlayer extends Object implements VolumeAutomationjava.lang.Object ↳ android.media.MediaPlayerMediaPlayer class can be used to control playback of audio/vi

2017-07-04 17:39:38 480

原创 Android多媒体框架的核心 OpenCore 解析

1. OpenCore介绍OpenCore是android多媒体框架的核心,所有Android平台的音视频采集,播放的操作都是通过它来实现。通过Open Core程序员可以方便快速的开发出想要的多媒体应用程序,例如:音视频的采集,回放,视频会议,实时的流媒体播放等等应用。2. OpenCore代码结构OpenCore的代码在Android代码的External/Opencore目录中。这

2017-07-04 16:54:20 1369 2

原创 Android中手机开发者选项解释说明

安卓手机中所看到的开发者选项:详解:第一项:提交错误报告  将本机上安卓系统的出错日志以及硬件设备信息发送给谷歌。第二项:桌面密码备份  设置或更新桌面完整备份的密码。第三项:保持唤醒状态不锁定屏幕充电时屏幕不会休眠。第四项:启用蓝牙HCI信息收集日志  蓝牙互传文件会被记录日志。第五项:进程统计信息

2017-07-03 19:27:11 2822

转载 如何提高Android后台进程存活率

作者:privatego链接:https://zhuanlan.zhihu.com/p/27652674来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。在Android系统中,应用进程停止运行有以下几个原因:1.用户主动退出;2.Crash异常退出;3.系统通过杀掉进程回收内存。其中,用户主动退出是合理行为;进程发生Crash

2017-07-01 23:44:52 920

原创 Android Studio中新增整体的activity类文件,重新编译后提示“程序包R不存在”解决

问题描述:做新功能模块开发,新增两个写好的activity类文件,资源文件和jave都整合好了,最后 Rebuild Project的时候编译的message里面出现“程序包R不存在”提示解决办法:需要在在新增的类文件中分别去 import R:import com.qiniu.pili.droid.rtcstreaming.demo.R;

2017-07-01 15:49:37 2956

原创 神经网络基础概念

首先放一张神经网络的框架盘点图:网络单元(Cell)基本的神经网络单元属于常规性前馈架构之中的类型,且相当简单。单元通过权重与其他神经元相连接,即,它可以连接到前一层的所有神经元。每个连接有其自身的权重,在开始时它常常是一个随机数。一个权重可以是负数、正数、小值、大值或者为 0。它连接的每一个单元值被其各自的连接权重相乘,得到的结果值全部相加。在其顶部,也会相加一个

2017-06-25 11:59:01 542

转载 Web前端知识体系精简

Web前端技术由html、css和javascript三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言。而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构。本文将对Web前端知识体系进行简单的梳理,对应的每个知识点点到为止,不作详细介绍。目的是帮助大家审查自己的知识结构是否完善,如有遗漏或不正确的地方,希

2017-06-21 23:01:45 403

转载 Android进程间通信--Binder

作者:privatego链接:https://zhuanlan.zhihu.com/p/27344402来源:知乎一、Binder简介Binder是Android特有的一种进程间通信(IPC)方式,和传统的IPC相比,它融合了远程过程调用(RPC)的概念,而且是一种面向对象的远程调用。在Unix的IPC机制中,通信双方必须处理线程同步、内存管理等复杂问题,不但工作量大,而且

2017-06-12 23:47:51 596

新一代视频压缩编码标准:H.264AVC(第2版)-毕厚杰&王健

新一代视频压缩编码标准:H.264AVC(第2版)-毕厚杰&王健

2019-03-06

空空如也

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

TA关注的人

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