​对各高校即将毕业的学子来说,毕业设计算是在大学里的最后一个大作业。特别是软件、计算机、电子等相关专业,毕业设计非常讲究实操,往往要求实现一个实用的、可用的、易用的软件系统或手机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. Unity 中关于SubMesh的拾取问题

    问题背景 最近在开发一个功能,钻孔功能,每一层(段)都需要单独拾取,显示不同的颜色,使用不同材质 问题分析 对于这个功能,由于上述需求,很容易想到用submesh实现,但是主要问题是在于对于Subme ...

  2. React中的Ref

    React中ref是一个对象,它有一个current属性,可以对这个属性进行操作,用于获取DOM元素和保存变化的值.什么是保存变化的值?就是在组件中,你想保存与组件渲染无关的值,就是JSX中用不到的或 ...

  3. Spark3学习【基于Java】1. Spark-Sql入门程序

    spark-sql是用来处理结构化数据的模块,是入门spark的首要模块. 技术的学习无非就是去了解它的API,但是Spark有点难,因为它的例子和网上能搜到的基本都是Scala写的.我们这里使用Ja ...

  4. 转-tomcat在控制台打印时乱码

    描述 使用windows的控制台启动tomcat (8.5),Tomcat终端打印出现乱码,在CSDN上找到一个简单有效的解决办法,在此记录. 解决方案 找到Tomcat的根目录下的 /conf/lo ...

  5. 使用Stream流实现以List<Map<String, Object>>集合中Map的key值进行排序

    使用Stream流实现以List<Map<String, Object>>集合中Map的key值进行排序 创建一个list存入数据 List<Map<String, ...

  6. Vue源码学习(二十):$emit、$on实现原理

    好家伙, 0.一个例子 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset= ...

  7. P2910

    #include<iostream> #include<utility> #include<vector> using namespace std; typedef ...

  8. Apache Kyuubi 在B站大数据场景下的应用实践

    01 背景介绍 近几年随着B站业务高速发展,数据量不断增加,离线计算集群规模从最初的两百台发展到目前近万台,从单机房发展到多机房架构.在离线计算引擎上目前我们主要使用Spark.Presto.Hive ...

  9. 拯救SQL Server数据库事务日志文件损坏的终极大招

    拯救SQL Server数据库事务日志文件损坏的终极大招 在数据库的日常管理中,我们不可避免的会遇到服务器突然断电(没有进行电源冗余),服务器故障或者 SQL Server 服务突然停掉, 头大的是l ...

  10. 阅读翻译Mathematics for Machine Learning之2.6 Generating Set and Basis

    阅读翻译Mathematics for Machine Learning之2.6 Generating Set and Basis 关于: 首次发表日期:2024-07-19 Mathematics ...