当前位置: 首页 > wzjs >正文

潍坊的网站开发公司腾讯朋友圈广告怎么投放

潍坊的网站开发公司,腾讯朋友圈广告怎么投放,wordpress 做外贸站,网络科技一般经营什么本系列笔记为博主学习李超老师课程的课堂笔记,仅供参阅 课程传送门:音视频小白系统入门课 音视频基础ffmpeg原理 往期课程笔记传送门:音视频小白系统入门笔记-0 课程实践代码仓库:传送门 音频采集 命令行采集 Android端音频…

本系列笔记为博主学习李超老师课程的课堂笔记,仅供参阅

课程传送门:音视频小白系统入门课 音视频基础+ffmpeg原理

往期课程笔记传送门:音视频小白系统入门笔记-0

课程实践代码仓库:传送门

音频采集

命令行采集

Android端音频采集:AudioRecord(底层)/ MediaRecorder(上层封装成媒体格式)

iOS端音频采集:AudioUnit(底层,复杂)/ AVFoundation /

Windows端音频采集:AudioCore /

ffmpeg对不同操作系统API进行了封装,类似Qt对不同操作系统的GUI进行了封装

ffmpeg -f avfoundation -i :0 out.wav

  • -f表示使用的API,avfoundation是iOS上的API,其他系统需要进行更换
  • -i参数表示输入源,:前表示视频,后面表示音频,不同系统的参数同样有些差异

ffplay out.wav

调用API采集

在Mac App中,坐标(0,0)在左下角,而不是一般GUI系统中的左上角

在Mac App的ViewController中控制组件的显示,类似于Qt的Widget,在viewDidLoad方法中添加组件

Swift的target-action机制类似于Qt的信号与槽的机制

为了在Swift中调用C函数,需要创建桥接头文件,并进行import。

为了在Swift中调用ffmpeg函数,需要引入ffmpeg的库和头文件,具体在XCode中的环境配置参考对应的教程。

ffmpeg中的库大体分为两类,av系列表示Audio-Video,进行核心音视频处理;sw系列表示Software,表示软件(硬件无关)实现的辅助功能,对音视频进行进一步算法处理。

剩下的postproc系列表示视频后处理,现在已经使用较少,因为现代编解码器内置了这块的功能。

采集音频流程:打开输入设备 → 数据包 → 输出文件

打开设备:

  • 注册设备
  • 设置采集方式 avfoundation(Mac) / dshow(Windows) / alsa(Linux)
  • 打开音频设备

注意新版XCode不会自动生成info.plist文件,导致在尝试打开麦克风时直接报错:This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSMicrophoneUsageDescription key with a string value explaining to the user how the app uses this data.

需要手动添加info.plist文件,并添加对应的key:https://coding.imooc.com/learn/questiondetail/NAr196nGpENPLBEz.html

在 FFmpeg 的最新版本(尤其是 4.0+)中,av_init_packet() 和直接操作 AVPacket 结构体的方式已被标记为 废弃(deprecated),原因如下:

1. 内存管理不安全旧版 `AVPacket` 需要手动初始化并管理内(如 `av_init_packet()` + `av_packet_unref()`),容易导致:- 内存泄漏:未正确调用 `av_packet_unref()`。
- 野指针:未初始化字段(如 `data`、`size`)直接使用。
2. 新 API 更安全高效FFmpeg 引入了 `AVPacket` 的引用计数机制,推荐使用以下新函数:- `av_packet_alloc()`:动态分配并初始化 `AVPacket`。
- `av_packet_free()`:自动处理引用计数和内存释放。
- `av_packet_ref()` / `av_packet_unref()`:安全复制或释放数据。

av_read_frame返回-35,Resource temporarily unavailable

我认为Mac的原理应该是要读够一定大小的数据调用`av_read_frame`才会成功,否则就返回EAGAIN让再次尝试

为什么要写入二进制文件而不是普通文件?

使用二进制模式存储文件防止系统对于字节流进行转义。保证字节级精确性,适合任何非纯文本数据或需要跨平台一致性的场景。

Mac默默认采样规格需要通过运行ffmpeg命令测试一下:ffmpeg -f avfoundation -i ":0" out.wav

通过ffplay -ar 48000 -ch_layout mono -f f32le xxx.pcm 播放

在添加通过按钮停止录制的功能时,需要在录制时创建一个单独的线程,并通过全局变量控制录制状态。课堂中老师介绍的实现存在两处竞态条件:

  1. 通过C语言实现的,控制录制状态的变量通过两个线程更改状态,应该使用互斥锁保护,或者设置为原子变量进行同步,避免race condition。
  2. ViewController中子线程试图更新UI组件状态应该通过DispatchQueue.main.async { **self**.btn.title = "停止录制" } 实现,而不是直接在子线程中更改,这种未定义的行为可能导致程序崩溃,所有对UI状态的更新都应该在主线程完成。
http://www.dtcms.com/wzjs/204476.html

相关文章:

  • 做网站 分辨率应该是多少百度热门排行榜
  • 罗湖建设公司网站建设推广链接点击器网页
  • 手机ppt在哪个网站做朋友圈广告30元 1000次
  • 闸北专业做网站免费搭建网站
  • 二级域名网站搜索引擎seo是什么
  • 网站建设 中企高程太原网络推广公司
  • 个人网站备案需要哪些东莞网站建设公司
  • 做淘宝客必须建网站吗搜索百度
  • 新的网站建设技术方案代做关键词收录排名
  • 中信建设有限责任公司电子商务平台搜索排名优化公司
  • 建设银行ma love网站百度官网电话
  • 广西桂林最新事件seo咨询推广找推推蛙
  • 有没有免费做编辑网站管理系统网站维护
  • 学习网站建设的网站电商运营公司
  • 做域名代理网站百度app推广
  • 用自己头像做的圣诞视频网站企业网站建设门户
  • 怎样做淘宝的导购网站推广站长统计app最新版本2023
  • 杭州知名的企业网站建设策划如何介绍自己设计的网页
  • 创意聊城做网站的公司seo是什么意思如何实现
  • 好的策划方案网站哪里可以买链接网站
  • 网站要怎么上传产品推广方法
  • 虚拟主机和网站空间开户推广竞价开户
  • 关于建设门户网站郑州seo关键词排名优化
  • 重庆时时彩网站建设宁波正规优化seo公司
  • ajax jsp网站开发从入门到精通微博营销案例
  • 门户网站建设工作情况公众号软文范例100
  • iis网站访问权限设置网络推广的方法包括
  • 网站源码上传教程泰安百度推广电话
  • 软件科技公司网站模板下载高报师培训机构排名
  • 昆明企业网站制作seo系统培训哪家好