Amp

Android 音视频学习系列 (十)基于 FFmpeg + OpenSLES 实

主宰稳场 提交于 2020-08-08 18:02:31
前言 唠叨一句: 说实话现在搞 Android 开发的要求是越来越高,初级都要被淘汰的感觉。所以想要一直往 Android 的道路上走,深入 音视频领域 是一个不错的选择。虽然现在跨平台 Flutter 很火,但终究它还是一个写 UI 的(个人看法)。程序员随着年龄的增长不可能一直写 UI 。但是深入 C/C++ 就不一样了。它可以给移动端甚至 Flutter 提供底层 SDK 和技术支持这难道不香吗?所以想要或者准备学习音视频知识的,那么该篇文章可以助你快速入门。 五一假期结束,不知道大家玩的怎么样,我了也趁着这个假期抽出了一天时间去爬了长城,有句话不是说,不到长城非好汉嘛。何况来北京好些年了一直没机会去。之后利用剩下的这 4 天写了一个音频处理库,目前包含如下功能: 功能 是否完成 读取任意格式音频流 Yes FFmpeg 音频解码为 PCM Yes 音频 Native OpenSL ES 渲染 Yes 音量控制 Yes seek 控制 Yes 声道切换 Yes 变调变速 Yes 变声 No 裁剪音频输出 MP3/PCM 等格式 pcm-ok 边播边录制 No 音频编码为 AAC、MP3、WAV No 其实音频处理的库在 GitHub 搜都是一大堆,那为什么我自己还要写一个呢?原因是我不想当伸手党,如果每次都这样,那自己的技术何来进步,是吧

PHP传递数组格式参数到shell脚本中

时光毁灭记忆、已成空白 提交于 2020-08-08 18:01:54
PHP中传递类似于“数组”格式数据到shell脚本中: 模拟场景1 计算捆绑商品的价格,捆绑商品中包含多个商品,这个商品是不确定的,我们暂时定义为苹果、栗子、香蕉,价格分别为8元/斤、10元/斤、3元/斤,重量规格定为500g,我们把价格当做参数传递给shell脚本计算总价格 以下是关于PHP部分的代码: $prices = array( "apple" => 8, "banana" => 3, "chestnut" => 10 ); $command = "bash ".ROOT_PATH."/script/test.sh "; foreach ($prices as $price) { $command .= $price." "; } $output = array(); $ret = 1; exec($command." 2>&1", $output, $ret); var_dump($command, $output, $ret);exit; // command命令为: // bash /data/home/tina/script/test.sh 8 3 10 下面是关于test.sh脚本内容: #!/bin/bash all=0 for price in $@ do all=`expr ${all} + ${price}` done echo ${all} 模拟场景2

迅为IMX6ULL开发板搭建交叉编译环境

自古美人都是妖i 提交于 2020-08-08 16:54:32
基于迅为IMX6ULL开发板 我们在第三章讲解了如何在 Linux 下进行 C 程序开发,我们使用的 gcc 编译器进行代码的编译,编译完,直接在 X86 架构下的 PC 下运行的。我们学习的 i.MX6 ULL 是 arm 架构的,所以我们需要使用支持 arm 的编译器并且该编译器在 X86 架构下运行,这个编译器我们通常称为交叉编译器。arm 交 叉 编 译 器 有 很 多 种 , 我 们 使 用 Linaro 公 司 的 arm 交 叉 编 译 器 , 下 载 地 址 : releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/ 如图 4.3.1 所示 在图 4.3.1 中有多种 arm 交叉编译器,我们需要根据安装的 Ubuntu 系统来选择对应的版本下载:如果安装的是 Ubuntu 32 位的系统我们需要下载 gcc-linaro-4.9.4-2017.01-i686_arm-linux-gnueabihf.tar.xz; 如果安装的 Ubuntu 是 64 位系统我们需要下载gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz。这两种版本的交叉编译器我们已经放在了光盘资料的“i.MX6UL

【福利抽奖】01期:Choerodon猪齿鱼2周年抽奖

谁说我不能喝 提交于 2020-08-08 16:40:49
Choerodon猪齿鱼两岁了~快来抽奖!!! 传送门: 猪齿鱼论坛 本次福利抽奖如下: 活动时间:2020/5/20 17:20 截止 奖品信息:敏捷&DevOps精选书籍 (以下五本任选其一) * 10 份 抽奖规则:在帖子下评论中随机抽取,可以评论任何对Choerodon猪齿鱼的建议&鼓励,或者聊聊你们感兴趣的技术话题、对自己项目的期待&小目标、想要获奖的书籍等等 领奖方式:截止时间的当天在Choerodon猪齿鱼论坛【01公布中奖名单】帖子中公布获奖名单,官方小姐姐会私信你们的哦,请注意查看论坛私信消息~ 来源: oschina 链接: https://my.oschina.net/choerodon/blog/4284393

正则表达式

亡梦爱人 提交于 2020-08-08 14:42:54
js中replace方法与java中的replace方法相同,主要做替换。   表达式:stringObj.replace(rgExp, replaceText)   参数   stringObj   必选项。要执行该替换的 String 对象或字符串文字。该字符串不会被 replace 方法修改。   rgExp   必选项。为包含正则表达式模式或可用标志的正则表达式对象。也可以是 String 对象或文字。     如果 rgExp 不是正则表达式对象,它将被转换为字符串,并进行精确的查找;不要尝试将字符串转化为正则表达式。   replaceText   必选项。是一个String 对象或字符串文字,对于stringObj 中每个匹配 rgExp 中的位置都用该对象所包含的文字加以替换。 substring.replace(/,/g,'' ); 正则表达式有三个修饰符: i 执行对大小写不敏感的匹配。 g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 m 执行多行匹配。 以下为常用的元字符和正则表达式 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。 ^ 匹配输入字符串的开始位置。如果设置了

史上最全SpringCloud2.0视频教程

荒凉一梦 提交于 2020-08-08 14:03:46
史上最全SpringCloud2.0视频教程 作者:97后互联网架构-余胜军 点评:网上很多关于SpringCloud视频教程,都是需要收费的而且不全! 该套教程蚂蚁课堂&每特教育架构培训实际互动课程,老师讲解非常清晰。 视频资料齐全 百度云盘下载地址: 蚂蚁课堂在线观看地址: 史上最全SpringCloud2.0视频教程 链接: https://pan.baidu.com/s/1q70Q8jKrvhBpDnDxmN0vTw 提取码:0s4c 蚂蚁课堂在线观看地址: http://www.mayikt.com/front/couinfo/91/0 还有在线观看官方 腾讯课堂: https://ke.qq.com/course/280057?taid=3810701143721465 ———————————————— 版权声明:本文为CSDN博主「cowboy8888999」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/cowboy8888999/article/details/90672012 来源: oschina 链接: https://my.oschina.net/u/2963604/blog/4314489

将分段视频合并

江枫思渺然 提交于 2020-08-08 12:29:08
环境 操作系统:Ubuntu Kylin 优麒麟 20.04 LTS 适用架构:AMD64、ARM64(鲲鹏、飞腾) 方法 将下载的视频分片段放入同一个文件夹。按片段排序的文件名汇入list.txt。 ls qq_video*.mp4 | sed "s/^/file '&/g" | sed "s/$/&'/g" > list.txt 内容示范: file 'qq_video_1_2020_7_9.mp4' file 'qq_video_2_2020_7_9.mp4' file 'qq_video_3_2020_7_9.mp4' 使用 ffmpeg 命令,按 list.txt 中的文件顺序合并。 sudo ffmpeg -f concat -i list.txt -c copy output.mp4 来源: oschina 链接: https://my.oschina.net/chipo/blog/4348031

无限极分类算法,对你一定有帮助

浪子不回头ぞ 提交于 2020-08-08 12:21:58
无限级分类是开发中常见的情况,也经常会在面试,主考官问到,笔试中遇到,因此本文对常见的无限极分类算法进行总结归纳,其实大多数就是迭代与递归。 1.循环迭代实现 $arr = [ 1=>['id'=>1,'name'=>'父1','father'=>NULL], 2=>['id'=>2,'name'=>'父2','father'=>NULL], 3=>['id'=>3,'name'=>'父3','father'=>NULL], 4=>['id'=>4,'name'=>'儿1-1','father'=>1], 5=>['id'=>5,'name'=>'儿1-2','father'=>1], 6=>['id'=>6,'name'=>'儿1-3','father'=>1], 7=>['id'=>7,'name'=>'儿2-1','father'=>2], 8=>['id'=>8,'name'=>'儿2-1','father'=>2], 9=>['id'=>9,'name'=>'儿3-1','father'=>3], 10=>['id'=>10,'name'=>'儿3-1-1','father'=>9], 11=>['id'=>11,'name'=>'儿1-1-1','father'=>4], 12=>['id'=>12,'name'=>'儿2-1-1','father'=>7], ];

非易失性MRAM技术发展

北城以北 提交于 2020-08-08 12:11:58
切换(或场驱动) MRAM 包括大部分的独立MRAM设备。然而切换MRAM的规模不足以取代大多数其他记忆。STT-MRAM产品将扩展到更高的密度,需要更低的能量写比切换MRAM。2019年已发运大部分MRAM内存的Everspin开始向STT-MRAM发运最高1Gb的芯片容量,这种内存密度使这些设备在许多应用中更受关注。Everspin代理商英尚微电子提供产品技术支持及解决方案. 主要的嵌入式半导体制造商为工业和消费应用中使用的嵌入式产品提供MRAM非易失性存储器选项。这些铸造厂包括全球铸造厂、英特尔、三星和TSMC。 STT-MRAM 有很高的性能,但不如最快的静态随机存取存储器快。然而一种被称为自旋轨道转矩(SOT)的MRAM技术有潜力匹配静态随机存储器的性能。 磁性随机存取存储器(场或自旋器件)使用一个选择晶体管作为存储单元,见下图1。MRAM单元可以具有专用晶体管,或者该晶体管可以在两个存储单元之间共享。在用于MRAM生产之前,必须在晶片上创建特定的选择晶体管设计。 图1 MRAM记忆细胞 目前MRAM软件技术正在世界各地的实验室中开发,但是随着STT-MRAM产品成本的降低,无论是嵌入式产品还是独立产品,MRAM软件技术都可能成为MRAM取代最快的静态随机存取存储器应用的手段,提供更高的非易失性存储器密度,从而支持非常低功耗的物联网和人工智能应用。 Everspin代理