​对各高校即将毕业的学子来说,毕业设计算是在大学里的最后一个大作业。特别是软件、计算机、电子等相关专业,毕业设计非常讲究实操,往往要求实现一个实用的、可用的、易用的软件系统或手机APP。

不管是软件还是APP,都要通过编程来实现。对于编程类的毕业设计,既有图书馆管理系统这样万年不变的增删改查软件,也有电子商务APP那样炫动各种界面特效的美工佳作。那么就编程类大作业而言,怎样才算是让人耳目一新的毕业设计呢?

以手机APP为例,现在APP开发技术很成熟了,若想做一个鹤立鸡群的毕业设计APP,就要在代码中运用最新的开发技术,尤其是和5G时代密切相关的音视频技术,比如音视频的基础框架FFmpeg、火爆一时的RTMP/SRT视频直播技术、音视频实时通讯技术WebRTC等等。

对于毕业设计来说,应用了音视频技术的流行APP主要有以下三类:

一、具备视频剪辑功能的短视频分享APP

短视频分享APP早已成为国内外最流行的APP,不管是国内的抖音,还是国外的TikTok,都向广大用户提供了丰富多彩的视听盛宴。那么短视频的创作者正是来自于群众的自媒体人,他们以一部手机作为创作工具,再把录制好的视频各种剪裁编辑,最终输出上传制作好的短视频。

对于普通用户来说,他们只用到了短视频APP的观看功能,那么实现短视频的播放功能比较简单,具体参见《Android Studio开发实战:从零基础到App上线(第3版)》的“第14章 多媒体”,该书同时给出了短视频APP的实战项目,也就是“14.4 实战项目:仿抖音的短视频分享”。

对于自媒体从业者来说,他们还需要短视频APP的剪辑功能,也就是对视频文件进行切割、合并、添加字幕、添加背景音乐、添加转场特效等等编辑操作。这些视频剪辑技术的具体实现可参考《FFmpeg开发实战:从零基础到短视频上线》这本书,比如该书的第7章给出了添加字幕的实战项目“7.4  实战项目:卡拉OK音乐短片”,第9章给出了转场特效的实战项目“9.4  实战项目:翻书转场动画”,还有第12章介绍了如何给App工程集成FFmpeg,并给出了仿剪映APP的实战项目如“12.4  实战项目:仿剪映的视频剪辑”。

对于毕业设计来说,这款短视频分享APP的亮点在于集成了音视频框架FFmpeg,并基于FFmpeg实现了各种视频剪辑功能。

二、具备直播带货功能的电商购物APP

电商购物APP现在是人们日常生活中不可获取的实用工具,大到家具电器,小至各种日用品,都能在电商购物APP中解决。不过若想让丈母娘们痛快掏钱,往往需要卖家真人出镜,在直播间中口若悬河,或者载歌载舞,充分展示商品的外观及其效用,方能成功带货拉动销量。

倘若是简单的APP图文商品展示,可参考《Android Studio开发实战:从零基础到App上线(第3版)》第9章的“9.5 实战项目:电商首页”和第6章的“6.6 实战项目:购物车”,至于与后端服务器交互部分,则是另一块WEB开发范畴,其中Java后端编程可学习《好好学Java:从零基础到项目实战》一书。

然而直播带货功能用到的直播系统相关技术,那可就复杂得多。既包括后端的流媒体服务器,参见之前的文章《Linux环境安装ZLMediaKit实现视频推流》和《Linux环境安装SRS实现视频直播推流》;又包括流媒体传输协议,参见之前的文章《利用RTMP协议构建电脑与手机的直播Demo》和《利用SRT协议构建手机APP的直播Demo》,更详细的直播技术文章可参考《FFmpeg开发笔记全目录(FFmpeg开发实战详解,含直播系统的搭建过程)》。

对于毕业设计来说,这款电商购物APP的亮点在于集成了直播相关技术,既运用了传统RTMP协议的视频直播,又运用了最新SRT协议的视频直播。

三、具备视频通话功能的同城生活APP

同城生活APP基于用户所在城市开展生活娱乐,涵盖了同城交友、同城美食、同城出行等方方面面。可是这些同城生活APP通常仅提供对方的电话号码,简单的通讯方式毕竟不如直观的视频通话那样令人信任,如果能给这些同城APP添加视频通话功能,对于提升商家的业绩不无裨益。

那么视频通话功能的难点在于给双方手机传输音视频的通话信号,其中可运用时新的WebRTC技术,要知道WebRTC在2021年1月被W3C和IETF发布为Web实时通信的正式标准。在手机APP中引入WebRTC可参考《Android Studio开发实战:从零基础到App上线(第3版)》一书的“20.2  给App集成WebRTC”,具体的实战项目参见该书第20章的“20.3 实战项目:仿微信的视频通话”。如果同城生活APP推出了视频通话功能,再也不用担心对方是不是持证上岗了。

对于毕业设计来说,这款同城生活APP的亮点在于集成了WebRTC技术,并通过WebRTC实现了视频通话的功能。

FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP的更多相关文章

  1. Hi3516开发笔记(十):Qt从VPSS中获取通道图像数据存储为jpg文件

    前言   上一篇已经将himpp套入qt的基础上进行开发.那么qt中拿到frame则是很关键的交互,这是qt与海思可能编解码交叉开发的关键步骤.   受限制   因为直接配置sample的vi比较麻烦 ...

  2. FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台

    FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待   前言   将ffmpeg移植到海思H ...

  3. .Net开发笔记(十九) 创建一个可以可视化设计的对象

    阅读本篇博客之前需要了解VS窗体设计器的工作原理,详细可参见本系列博客(十).(十一).(十二).必须需要知道的一条结论就是:处于窗体设计器(Form Designer)中的任何组件(包含控件,下同) ...

  4. 论文阅读笔记四十九:ScratchDet: Training Single-Shot Object Detectors from Scratch(CVPR2019)

    论文原址:https://arxiv.org/abs/1810.08425 github:https://github.com/KimSoybean/ScratchDet 摘要 当前较为流行的检测算法 ...

  5. Java开发笔记(十九)规律变化的for循环

    前面介绍while循环时,有个名叫year的整型变量频繁出现,并且它是控制循环进出的关键要素.不管哪一种while写法,都存在三处与year有关的操作,分别是“year = 0”.“year<l ...

  6. 安卓开发笔记(十九):异步消息处理机制实现更新软件UI

    主界面代码 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:andr ...

  7. Java开发学习(四十九)----MyBatisPlus更新语句之乐观锁

    1.概念 在讲解乐观锁之前,我们还是先来分析下问题: 业务并发现象带来的问题:秒杀 假如有100个商品或者票在出售,为了能保证每个商品或者票只能被一个人购买,如何保证不会出现超买或者重复卖 对于这一类 ...

  8. JBoss 系列四十九:JBoss 7/WildFly 中端口使用列表

    JBoss 7中端口使用列表 JBoss 7中所有配置都在一个文件中(standaone*.xml, domain.xml),和之前的JBoss相比JBoss 7用到的端口变少,我们将以表格的形式列出 ...

  9. R语言学习笔记(十九):字符串处理中预定义字符组(表格介绍)

    R中预定义的字符组 代码 含义说明 [:digit:]或\\d 数字; [0-9] [^[:digit:]]或\\D 非数字; 等价于[^0-9] [:lower:] 小写字母; [a-z] [:up ...

  10. FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

随机推荐

  1. 动环监控方案,为什么推荐79元全志T113-i国产平台?

    什么是动环监控系统? 通信电源及机房环境监控系统(简称"动环监控系统"),是对分布在各机房的电源柜.UPS.空调.蓄电池等多种动力设备,及门磁.红外.窗破.水浸.温湿度.烟感等机房 ...

  2. 数据结构—包(Bag)

    数据结构中的包,其实是对现实中的包的一种抽象. 想像一下现实中的包,比如书包,它能做什么?有哪些功能?首先它用来装东西,里面的东西可以随便放,没有规律,没有顺序,当然,可以放多个相同的东西.其次,东西 ...

  3. yb课堂之用户登陆校验拦截器开发 《十一》

    开发对应的登陆拦截器 开发loginInterceptor 登陆校验成功放行 登陆不成功返回json数据 LoginInterceptor.java package net.ybclass.onlin ...

  4. Spring(注解方式)简单入门

    环境准备 maven jdk Spring Eclipse 项目创建 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0 ...

  5. SQLServer 的Distinct

    distinct去除重复的数据(distinct是对整个结果集进行数据重复处理,不是针对某一列) -> 检查返回不重复的数据(对于整条记录不重复才会去除,如ID不一样) 用法:select di ...

  6. $Kruskal$ 算法的实现 | 最小生成树

    \(Kruskal\) 算法 以 Luogu P3366 为例题 实现方法:从小到大遍历每一条线,如果该线连接的两点已经都在树内则不处理,否则描出这条线 从小到大是一个贪心的实现方法,由于每描出一条线 ...

  7. Python | 解决方案 | 多个文件共用logger,重复打印问题

    项目中封装了logging库为log.py,实现既把日志输出到控制台, 又写入日志文件文件. 环境:python3.7.3 项目中,多个文件共用logger,出现重复打印问题,解决流程记录如下: 文件 ...

  8. WPF控件库

    Welcome to CookPopularControl 介绍 CookPopularControl是支持.NetFramework4.6.1与.Net5.0的WPF控件库,其中参考了一些资料,目前 ...

  9. JWT浅了解

    JWT通过数字签名的方式(让我想起了软考),以json对象为载体,在不同的服务终端之间安全传输信息 是一种授权认证 生成token的原理:通过header的加密方式,对payload进行加密.然后把h ...

  10. ceph 001 存储类型 传统存储与分布式存储 分布式文件系统 集群与分布式

    ceph 存储类型 块存储:裸磁盘 未被格式化的磁盘 DAS(直连存储,usb,硬盘插到电脑):scsi接口 接口数量有限 传输距离有限 SAN(存储区域网络):ip-san 网络(iscsi) 以太 ...