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

C#学习系列之throw new ApplicationException

C#学习系列之throw new ApplicationException

  • 啰嗦
  • 问题
  • 解决
  • 总结


在这里插入图片描述

啰嗦

在项目的解码过程中使用到throw new ApplicationException语句,之前一致没有意识到这句话会带来很多问题。项目中使用这句话来捕捉解码过程中的解码异常问题。


问题

在使用throw new ApplicationException(GetErrorMessage(error));中,是用throw来捕捉解码中出现的解码问题,会进行解码提示。每次当出现Error parsing NAL unit #0.解码问题时,捕捉到异常会直接跳出整个循环,直接跳出到循环外的try catch finally中的catch,直接跳出解码线程,导致无法再启动线程。如果使用while不断循环,这里的解码退出后会不断开辟解码运行流程,但是无法流畅播放。

解决

throw new ApplicationException(GetErrorMessage(error));使用break;进行替代!
在这里插入图片描述
解决思路是参考了H264的海思解码,在解码过程中,始终不跳出解码原本的while循环,最多break而已的思路。
从实际使用效果看,再出现相同的解码异常,不会跳出解码异常,并且不用考虑重启解码线程。


总结

这个问题困惑我很久,一直在考虑是否从Error parsing NAL unit #0.着手,其实也没有很好的思路。在一遍遍的debug中反复跑异常,才意识到可以换个思路解决问题。通过查阅264解码,验证自己的思路可能没有没有,加上不断尝试。
在反反复复回放,解码异常十多遍后,静下心来想问题,这个问题解决了。虽然可能对大家来说是很小的问题,对我来说,是继续努力的动力,加油!


http://www.kler.cn/news/17205.html

相关文章:

  • 图书管理系统【控制台+MySQL】(Java课设)
  • 武忠祥老师每日一题||定积分基础训练(六)
  • 体验 ChatGLM-6B
  • 晚唐诗人杜荀鹤及其十首古诗赏析
  • Soft-RoCE部署及通信测试
  • 全方位揭秘!大数据从0到1的完美落地之运行流程和分片机制
  • MySQL 表操作
  • asp.net基于web的校园美食派送配送系统
  • 数据恢复软件EasyRecovery16下载安装步骤教程
  • SpringBoot 中的加密模块
  • 辞了外包,上岸字节我落泪了,400多个日夜没人知道我付出了多少....
  • 【C语言】typedef关键字
  • RocketMQ 底层实现原理
  • 神秘的IP地址8.8.8.8地址到底是什么?为什么会被用作DNS服务器地址呢?
  • GPT详细安装教程-GPT软件国内也能使用
  • JVM学习(九):堆
  • 海思芯片(hi3536av100)启动模式选择
  • Linux centos搭建web服务器
  • 利用Google Colab免费使用GPU服务器详细攻略
  • 自动驾驶中地图匹配定位技术总结
  • Web常见漏洞描述及修复建议
  • 基于YOLOv5的目标检测系统详解(附MATLAB GUI版代码)
  • vue+springboot 实现人脸识别方向
  • windows 下Node.js 版本管理工具
  • Java方法引用:提高代码可读性和可维护性
  • C++和Python编程语言各自的优缺点总结,分享一下我对程序员职业规划的看法
  • 【id:59】【20分】D. 旅馆顾客统计(静态成员)
  • 应用,auto,内联函数
  • 计算机基础 -- 硬件篇
  • 2023年web前端开发之JavaScript进阶(一)