嵌入式音视频进阶学习(建议收藏!)

前言:

大家好,今天花点时间,整理一下最近看的一些音视频英文文档资料和相关的一些音视频书籍,下面分享的资料,仅是个人的一个学习,仅供参考!

rtp学习:

在这里给大家汇总的资料,主要是rfc英文文档资料,因为在实际开发过程中,有很多技术细节在rfc文档里面都有详细的描述,就是要稍微耐心花点时间看:

  • 1、实现rtp封装h264的说明参考的是rfc6184:

https://www.rfc-editor.org/rfc/rfc6184
a47bfb7106e651e942c409b71ccfcf36.png
  • 2、实现rtp封装h265的说明参考的是rfc7798:

https://datatracker.ietf.org/doc/html/rfc7798
80b4e73517f81be6d85a4ddc553ea725.png
  • 3、实现aac音频里面的adts封装说明参考的是rfc3640:

https://www.rfc-editor.org/rfc/rfc3640
aaddb5765af46546eda2093dc0bd7916.png
  • 4、RTP包中的媒体文件类型参考的是Rfc3551:

https://www.rfc-editor.org/rfc/rfc3551
2b49af2b7405c60fd131ce48217aba81.png

目前自己先rfc3550学习,目前已经翻译了一小半:

da485c64037a1834747e3130cd2ac5c8.png

编解码书籍:

最近我在看两本编解码书籍:

f2a31fa91e84744875f0f1a1d9a299b5.png d03051411532865036e2e26e0bcca149.png

这两本书籍会有一定的难度,需要一定的数学基础来看!

然后关于h264/h265编码解码的推荐,我更加推荐看白皮书,也就是最原始的英文文档,这个可能对初学者不太友好,但是还是非常推荐看这个去学习h264/265!

ffmpeg书籍:

目前看到的书籍,就是大师兄前辈的最新书籍:

c40395e9e41f70e7d486efa1de33d8b7.png

然后自己实践写代码,把编码和解码部分流程使用搞熟悉就行,然后就是音频视频的同步处理。主要的感受还是围绕自己的需求去多实践写代码实现功能,就会用的熟练起来,没有啥快捷方法!

音频学习:

目前我在看这本书籍,主要关注降噪、回声处理机制,这本书也会需要一定的数学基础来看:

543c37a3388a3ca0fea104e18300b584.png

然后就是音频aac的学习,可以直接看:

09207f6b60babed2fcff67690201e095.png

最后:

这里最大的感想就是,还是围绕在公司里面做项目去快速掌握这些技术点,才会理解的更深;如果没有经历过一定的实践开发使用,上面的一些资料单纯去看,会枯燥,乏味,对初学者不太友好!

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式音视频开发驱动需要掌握嵌入式系统的基础知识和音视频编解码原理。以下是一些开发嵌入式音视频驱动的步骤和方法: 1.了解音视频编解码原理,掌握音视频格式和编解码算。 2.熟悉Linux内核驱动框架,了解Linux音视频驱动的实现方式。 3.编写音视频驱动程序,包括音频驱动和视频驱动。音频驱动需要实现录音和播放功能,视频驱动需要实现视频采集和显示功能。 4.测试音视频驱动程序。可以使用一些测试工具,如ALSA工具包、FFmpeg等,对音视频驱动进行测试。 5.优化音视频驱动程序,提高音视频的采集、处理和播放效率。 以下是一个简单的音频驱动程序的示例: ```c #include <linux/module.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/slab.h> #include <linux/soundcard.h> #include <asm/uaccess.h> #define DEVICE_NAME "audio" static int audio_open(struct inode *inode, struct file *file) { return 0; } static int audio_release(struct inode *inode, struct file *file) { return 0; } static ssize_t audio_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) { return 0; } static ssize_t audio_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { return 0; } static struct file_operations audio_fops = { .owner = THIS_MODULE, .open = audio_open, .release = audio_release, .read = audio_read, .write = audio_write, }; static int __init audio_init(void) { int ret; ret = register_chrdev(0, DEVICE_NAME, &audio_fops); if (ret < 0) { printk(KERN_ALERT "Failed to register device.\n"); return ret; } printk(KERN_INFO "audio driver initialized.\n"); return 0; } static void __exit audio_exit(void) { unregister_chrdev(0, DEVICE_NAME); printk(KERN_INFO "audio driver exited.\n"); } module_init(audio_init); module_exit(audio_exit); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值