音视频
文章平均质量分 88
大哥,请小心
实沉于海
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android------- IjkPlayer 源码学习目录
在看了雷霄华的VideoEye后,发现其视图层使用的是SDL在windows上展示的。但是本人是搞Android App开发的,读其源码时,总是感觉有点不对劲。最后在找到了bilibili 为移动端封装ffmpeg的框架------ijkplayer。 Android----ijkplayer的学习目录: ijkplayer 的配置 ijkplayer 配置时,遇到的问题(二) ...原创 2020-10-06 16:15:28 · 2308 阅读 · 1 评论 -
Android --- IjkPlayer 的核心:音视频同步原理(十)
音视频同步原理原创 2020-10-05 20:50:02 · 2294 阅读 · 1 评论 -
Android --- IjkPlayer 阅读native层源码之解码成功后的音频数据如何发送回Android播放(九)
步骤4: audio_open 这里欠一篇。原创 2020-10-04 18:46:04 · 1659 阅读 · 7 评论 -
Android --- IjkPlayer 阅读native层源码之将AvPacket解码为一帧视频(八)补充
本篇会有很多源代码,请注意阅读每行代码上面的注释。 本来是不准备写解码帧的,因为前面写了一篇关于解码一帧音频的博客。但是后面发现:虽然音视频(包括字幕)解码流程一样,但是它们解码后还会对帧有一些处理。而对于视频帧来说,这些处理还是很重要的。所以本篇主要目的介绍解码对视频帧的处理。 如果还不知道解码的流程请看:Android --- IjkPlayer 阅读native层源码之如何将AvPacket数据解码出一帧数据(六) 将视频的AvPacket数据解码为AvFrame的线程为ff_ffplay.c.原创 2020-10-02 16:52:18 · 1629 阅读 · 0 评论 -
Android --- IjkPlayer 阅读native层源码之如何刷新视频的播放界面(七)
video_refresh_thread原创 2020-09-26 19:50:15 · 1742 阅读 · 6 评论 -
Android --- IjkPlayer 阅读native层源码之如何将AvPacket数据解码出一帧数据(六)
audio_thread: static int audio_thread(void *arg) { //循环 do { // 将音频队列的存储个数、大小、和音频能播放多长时间这些信息存入 // FFPlayer.stat.audio_cache ffp_audio_statistic_l(ffp); // 注意: // 将缓存队列中一个AVPacket数据解码为Frame数据,解码出来的最新一帧存放原创 2020-09-23 11:08:36 · 1520 阅读 · 0 评论 -
Android ---- Ijkplayer阅读native层源码之IjkMediaPlayer_prepareAsync(五)
IjkMediaPlayer_prepareAsync的作用为播放器播放前做准备。其被Java层的IjkMediaPlayer.prepareAsync调用。 IjkMediaPlayer_prepareAsync: static int ijkmp_prepare_async_l(IjkMediaPlayer *mp) { 省略。。。。 // 1.向消息链表发送一个FFP_MSG_PLAYBACK_STATE_CHANGED消息,改变IjkMediaPlayer的状态为MP_.原创 2020-09-22 15:28:24 · 2044 阅读 · 0 评论 -
Android --- IjkPlayer提供的播放器设置表
一个完整的播放器,少不了会有很多的默认设置或者提供给用户设置的选项。而IjkPlayer 同样也用。 从Java层设置IjkPlayer播放器选项的流程请看这篇文章:https://www.jianshu.com/p/ab405e5bc1de。 本篇记录上面博客中ff_ffplay_options.ffp_context_options中没解释的一些选项: { "max-buffer-size", "max buffer size should be.原创 2020-09-20 22:26:15 · 2395 阅读 · 0 评论 -
Android --- Ijkplayer源码阅读native层之自定义消息处理机制(四)
这篇主要介绍Ijkplayer 在native 自定义的消息处理机制,其原理于Android的handler相识。 native层的消息处理机制本命为message_loop,其启动在ijkplayer_jni->IjkMediaPlayer_native_setup中 message_loop: message_loop_n: 注意这里有一个死循环,不停的去队列中取消息。 这里预留一个空间A: post_event方法 ijkmp_get_msg:获取一个消息 这里第二原创 2020-09-13 17:57:23 · 856 阅读 · 0 评论 -
Android ----Ijkplayer源码阅读native层之动态库的加载和初始化(三)
在Android ----- ijkplayer源码阅读Java层(二)中欠了一篇细说加载Ijkplayer动态库时到底干了写啥???那我们就来聊聊。 VideoActivity.onCreate中调用 native_profileBegin这个是加载----性能分析工具android-ndk-profiler的动态库。这方面没用过,不说。 loadLibrariesOnce: 加载三个动态库 ffmpeg:音视频编解码的核心库 ijksdl:在native层创建一些java类对象,并存原创 2020-09-13 11:30:34 · 1337 阅读 · 0 评论 -
Android ----- ijkplayer源码阅读Java层(二)
xxx原创 2020-09-12 16:20:02 · 869 阅读 · 0 评论 -
Android-----将 Ijkplayer 集成到Android Studio中(一)
1. 首先去ijkplayer官网将源码克隆下来原创 2020-09-05 22:53:35 · 3562 阅读 · 0 评论 -
音视频-----------在字节数据中提取ACC的profile、采样率和长度
参考博客: AAC音频码流解析 每个ADTS frame之间通过0xFFF(二进制“111111111111”)分割。 上图为ACC数据:蓝框为需要分析数据 1. 红框为分割符-----0xFFF 2. 紧跟着的50是一个16进制的表示-------0x50,其二进制位1010000,通过下面的计算取得ACC的profile // 0xC0------11000000 // 假如, aacframe[2]=0x50; // 取前两位,eg 01010000 &am...原创 2020-05-24 21:48:58 · 831 阅读 · 0 评论 -
音视频-----------h264入门(如何获得NALU中参数的值)
typedef struct { int startcodeprefix_len; //! 4 for parameter sets and first slice in picture, 3 for everything else (suggested) unsigned len; //! Length of the NAL unit (Excluding the start code, which does not belong to the NALU) .原创 2020-05-23 18:51:36 · 837 阅读 · 0 评论 -
音视频---------pcm16le转wav
本篇记录了学习雷霄骅的pcm16le转wav代码后,为其添加了注释和自己的理解,方便以后自己阅读。 可能用到的基础知识: 音视频--------pcm数据入门知识 帧、采样率、Hz、比特率 pcm-------原始的音频数据,windows没法直接播放,因为不知道这是什么。 WAVE格式音频(扩展名为“.wav”)是Windows系统中最常见的一种音频。该格式的实质就是在PCM文件的前面加了一个 ...原创 2020-05-17 18:23:16 · 539 阅读 · 0 评论 -
音视频--------pcm数据入门知识
本文为记录自己学习雷霄骅的pcm入门的demo后,从中学到的pcm知识。 先介绍必要的入门知识: pcm16LE 1. pcm 16------代表2 Byte采样值, 2. 存储方式(LE:LITTLE-ENDIAN)--------即低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 与之对应的 是:BIG-ENDIAN(大字节序、高字节序) eg: int a = 0x05060708 ...原创 2020-05-17 15:52:28 · 1961 阅读 · 0 评论 -
帧、采样率、Hz、比特率
音频的帧、采样率、Hz的关系 下面的概念非官方,只是自己的理解 1.采样率: 表示每秒采集多少次声音数据,以秒为单位,大部分会将其转换为ms(毫秒)计算。 eg.44100Hz(秒) 2.位深度: 表示每次采集声音数据的大小,单位为位...原创 2020-04-17 08:49:14 · 9727 阅读 · 0 评论 -
参数记录初稿
1.MediaRecorder.AudioRecord类构造函数: public AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes) audioSource: 采集声音资源设备:eg.Med...原创 2020-04-15 09:08:02 · 265 阅读 · 0 评论
分享