首页 » 软件开发 » 音视频零基础到岗位开发实战训练大纲-项目编码篇(视频编码音视频业务解码)

音视频零基础到岗位开发实战训练大纲-项目编码篇(视频编码音视频业务解码)

神尊大人 2024-07-24 01:57:15 0

扫一扫用手机浏览

文章目录 [+]

Android硬编码

掌握Android的硬编码,学会使用MediaCodec、MediaMuxer、MediaExtractor完成视频解码。
重点从android DSP芯片角度知道什么手机好、什么时候性能差,数字信号处理的本质在android上的性能测试分析。

兼容性测试Android音频从硬件到应用的架构分析

音视频零基础到岗位开发实战训练大纲-项目编码篇(视频编码音视频业务解码) 软件开发
(图片来自网络侵删)
核心编码

1、视频文件分离操作(MP4文件通道抽取)、视频信息桢获取、核心API源码解析

2、完成视频剪切

3、利用MediaPlayAPI完成一个初具雏形的播放器

4、解码器、解码流程的整理和总结

5、完成多段视频拼接合成(借助mp4parser)

6、使用MediaCodec录制一段绘制到Surface上的数据

7、seek&解码失败经常失败的分析

8、完成视频指定位置的视频预览

编解码实践

目前花椒已经完成整站点的H265技术替换,主流的技术主要是H264和H265,Android从5.0已经就支持HEVC的硬解,目前很多手机也支持了,包括海思芯片。

https://x265.com/hevc-video-files/

核心编码

1、阅读毕厚杰老师的书籍

2、码流格式分析,C++完成NAL解析输出

3、解码原理

4、专用芯片型和可编程型特点(丢帧)

5、开源的视频编解码器(CODEC)

6、Android使用ffmpeg和MediaCodec解码h265裸流

7、OpenMAX学习、海思安防SDK参考、OpenMAX数据结构学习、组建学习、思想升华

8、MediaCodec API,完成视频 H.264 的硬编、硬解,在Surface上完成影射

9、兼容性测试

WebRTC

完成WebRTCSDK开发,主要需求和做的事情如下:

NodeJS+java搭建后台会议室Coturn转发服务器搭建和bug修改Nginx配置和优化1对1语音/视频、多对多语音/视频业务开发增加权限管理功能支持Camera切换、免提、静音监测、音视频切换(视频切到音频)完成一个完成的VOIP流程(振铃、呼叫、拨打)SDK封装核心业务,对外暴露接口AGC、FEC等算法优化

【本文推荐】:C++音视频资料、技术视频,内容包括(音视频开发基础,大厂面试题,FFmpeg ,WebRTC ,rtmp ,hls ,rtsp ,ffplay ,流媒体服务器),莬費分享,如有需要的可以加君羊领取哦!
~学习交流君羊666064665点击加入领取资料

FFmpeg

完成一款播放器SDK的开发,考虑到项目的目的是为了学习知识、为了让项目区别于培训机构的demo,我希望是有血有肉有业务的,能在架构上考虑的丰富一些。
我们实践的项目架构采用:NDK+OpenGLES+FFmpeg+OpenSLES作为基础的骨干架构,核心编解码全部采用C++实现。

核心编码

1、设计模式使用(门面+构建者+观察者+多线程生产消费+ring buffer+...)

2、支持硬解和软解

3、支持网络流媒体4、支持NDK Neno特性

5、支持音频自动对焦、传感器方向切换、复杂手势支持、清晰度切换、无缝切换UI等

6、Android使用ffmpeg和MediaCodec解码h265裸流

7、支持exoplayer内核

8、MediaCodec API,完成视频 H.264 的硬编、硬解,在Surface上完成影射

9、完成自己手动解码+线程管理+C实现Render

JNI使用的库:

GLESv2 EGL OpenSLES android avcodec avformat avutil swscale swresample opencv_java4 jnigraphics

OpenGL

主要是掌握OpenglES基本的编码套路、掌握类似抖音的实时滤镜特效、贴纸、模型加载、美颜美妆的处理思路,在这里我们不做算法,主要是把算法工程师的算法在工程上实现出来。

核心编码

1、《图像视频滤镜与人像美颜美妆算法详解》元旦带读,增强基础理论

2、人脸姿态校正算法、红眼计算

3、腾讯TCNN人脸检测学习和使用

4、美颜、贴纸、滤镜处理

5、AI深度学习算法仿真

RTMP推流

主要是针对一些公司还在做直播业务打造的实战,我在5年前做过大量的直播项目,包括自研和使用七牛云、腾讯的SDK。
在这里我们主要关注的是编码,因为当你完成上面的项目的时候,剩下的就是把音频和视频合成RTMP流数据通过网络推送给Server了。

核心编码

1、Camera封装(卡顿、掉帧、角度问题)和录制视频

2、AAC音频编码

3、h264和aac合流Rtmp

4、RTMP 服务器搭建,采用Nginx完成

5、LibRtmp推流

通过对主流的28款app业务分析,可以梳理出以下业务,这也是我们的目标和学习途径,通过调研、模拟、仿写经典的业务,来掌握常用的音视频框架、方案设计、功能设计等。
下面是主流的业务梳理,后续也添加到我们编码实践中。

主流业务梳理【爱奇艺】Android视频点播边播边缓存方案 实现思路:socket读取http协议请求+本地代理通道。
【剪映】的视频剪辑工具 实现思路:采用opengl,用glsurfaceview承载渲染。
【优酷】AndroidHLS分片视频边下边播 实现思路:未知 猜测是文件切割,多线程下载【抖音】直播秒开优化方案 实现思路:猜测应该是GOP播放+DNS前提预加载+FIFO【抖音】抖音的动效 实现思路:着色器编程实现【唱吧】视频裁剪、滤镜、特效、视频预览 实现思路:没有用FFmpeg,猜测是本地的硬解,可以用Android的本地硬解处理【西瓜视频】变速播放 实现思路:FFmpeg中的libavfilter实现【Soul】萝莉变音 实现思路: Fmod VS SoundTouch 没有时间逆向猜测是用的这其中的一种播放器架构设计实现业务层面思考

MediaPlayer+SurfaceView+MediaController可以实现和扩展,也可以Android做UI层和业务逻辑控制,C做解码处理,surface做数据的播放,也可以整合三方的库做多库的切换。
我们采用自己实现编解码。

UI层交互思考

播放器在不同场景下,UI和功能难免有所差异,出于避免功能交互耦合问题,播放器封装一定要支持用户自定义控制器。

窗口切换无缝衔接、悬浮窗切换、自定义手势识别器目前是关注的几个点。

标签:

相关文章

语言中的借用,文化交融的桥梁

自古以来,人类社会的交流与发展离不开语言的传播。在漫长的历史长河中,各民族、各地区之间的文化相互碰撞、交融,产生了许多独特的语言现...

软件开发 2025-01-01 阅读1 评论0

机顶盒协议,守护数字生活的新卫士

随着科技的飞速发展,数字家庭逐渐走进千家万户。在这个时代,机顶盒成为了连接我们与丰富多彩的数字世界的重要桥梁。而机顶盒协议,作为保...

软件开发 2025-01-01 阅读1 评论0

语言基础在现代社会的重要性及方法步骤

语言是人类沟通的桥梁,是社会发展的基础。语言基础作为语言学习的基石,对于个人、社会乃至国家的发展具有重要意义。本文将从语言基础在现...

软件开发 2025-01-01 阅读2 评论0

粤语电影,传承文化,点亮时代之光

粤语电影,作为中国电影产业的一朵奇葩,以其独特的地域特色、丰富的文化内涵和鲜明的艺术风格,赢得了广大观众的喜爱。本文将从粤语电影的...

软件开发 2025-01-01 阅读3 评论0

苹果游戏语言,塑造未来娱乐体验的基石

随着科技的飞速发展,游戏产业逐渐成为全球娱乐市场的重要支柱。在我国,游戏产业更是蓬勃发展,吸引了无数玩家和投资者的目光。而在这其中...

软件开发 2025-01-01 阅读1 评论0