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

[一]ffmpeg音视频解码

[一]ffmpeg音视频解码

  • 一.编译ffmpeg
    • 1.安装vmware虚拟机
    • 2.vmware虚拟机安装linux操作系统
    • 3.安装ftp和fshell软件
    • 4.在Ubuntu(Linux)中编译Android平台的FFmpeg( arm和x86 )
    • 5.解压FFmpeg
    • 6.Android编译脚本
      • (1)修改FFmpeg的configure文件
    • 7.开始编译
      • (1)执行configure文件生成makefile文件
      • (2)执行android编译脚本
    • 8.编译结果
  • 二.封装格式和编码格式
  • 三.ffmppeg+opensl es音频播放器
    • 1.ffmpeg解码流程![](https://img-blog.csdnimg.cn/direct/c9ec7aac67b447cfaf26d1cd59dac55b.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/40196bbd82cf4a10a90f426334989e45.png)
    • 2.生产者消费者
    • 3.使用ffmpeg进行重采样
    • 4.使用opensl-es播放音乐:
  • 四.ffmppeg+opengl es 视频播放器
    • 1.ffmpeg解码视频:
    • 2.软解码:opengl es 渲染YUV数据
    • 3.硬解码:使用MediaCodec直接解码AVpacet 用OpenGl sl渲染
    • 4.难点:黑色闪屏
    • 5.音视频不同步

一.编译ffmpeg

1.安装vmware虚拟机

2.vmware虚拟机安装linux操作系统

3.安装ftp和fshell软件

4.在Ubuntu(Linux)中编译Android平台的FFmpeg( arm和x86 )

(1)下载FFmpeg源码(v3.3.6)
下载地址( http://www.ffmpeg.org/download.html#releases )在这里插入图片描述
(2)下载NDK(r14b)
下载地址( https://developer.android.google.cn/ndk/downloads/index.html)
在这里插入图片描述
(3)编写Android编译脚本

5.解压FFmpeg

(1)用ftp上传到Ubuntu中
在这里插入图片描述
(2)解压Ffmpeg(tar -zxvf ffmpeg-3.3.6.tar.gz)
(3)解压NDK(unzip android-ndk-r14b-linux-x86_64.zip)
在这里插入图片描述

6.Android编译脚本

(1)修改FFmpeg的configure文件

因为android只能加载*.so结尾的动态库,不能识别如*.so.57结尾的

#SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
#LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
#SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
#SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

(2)编写Android编译脚本

#!/bin/bash
export NDK_HOME=/usr/work/ndk/android-ndk-r14b
export PLATFORM_VERSION=android-9
function build
{echo "start build ffmpeg for $ARCH"./configure --target-os=linux \--prefix=$PREFIX --arch=$ARCH \--disable-doc \--enable-shared \--disable-static \--disable-yasm \--disable-asm \--disable-symver \--enable-gpl \--disable-ffmpeg \--disable-ffplay \--disable-ffprobe \--disable-ffserver \--cross-prefix=$CROSS_COMPILE \--enable-cross-compile \--sysroot=$SYSROOT \--enable-small \--extra-cflags="-Os -fpic $ADDI_CFLAGS" \--extra-ldflags="$ADDI_LDFLAGS" \$ADDITIONAL_CONFIGURE_FLAGmake cleanmakemake installecho "build ffmpeg for $ARCH finished"
}
#arm
ARCH=arm
CPU=arm
PREFIX=$(pwd)/android/$ARCH
TOOLCHAIN=$NDK_HOME/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi-
ADDI_CFLAGS="-marm"
SYSROOT=$NDK_HOME/platforms/$PLATFORM_VERSION/arch-$ARCH/
build#x86
ARCH=x86
CPU=x86
PREFIX=$(pwd)/android/$ARCH
TOOLCHAIN=$NDK_HOME/toolchains/x86-4.9/prebuilt/linux-x86_64
CROSS_COMPILE=$TOOLCHAIN/bin/i686-linux-android-
ADDI_CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32"
SYSROOT=$NDK_HOME/platforms/$PLATFORM_VERSION/arch-$ARCH/
build

7.开始编译

(1)执行configure文件生成makefile文件

chmod 777 configure(修改权限)
./configure(执行脚本)

(2)执行android编译脚本

chmod 777 build_android.sh(修改权限)
./build_android.sh(执行脚本)

8.编译结果

在这里插入图片描述

二.封装格式和编码格式

在这里插入图片描述

三.ffmppeg+opensl es音频播放器

1.ffmpeg解码流程在这里插入图片描述

2.生产者消费者

在这里插入图片描述在这里插入图片描述

3.使用ffmpeg进行重采样

在这里插入图片描述

4.使用opensl-es播放音乐:

opensl-es:嵌入式、跨平台、免费、音频处理库
在这里插入图片描述

四.ffmppeg+opengl es 视频播放器

1.ffmpeg解码视频:

在这里插入图片描述

2.软解码:opengl es 渲染YUV数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.硬解码:使用MediaCodec直接解码AVpacet 用OpenGl sl渲染

在这里插入图片描述
在这里插入图片描述

4.难点:黑色闪屏

在这里插入图片描述

5.音视频不同步

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

[一]ffmpeg音视频解码

[一]ffmpeg音视频解码 一.编译ffmpeg1.安装vmware虚拟机2.vmware虚拟机安装linux操作系统3.安装ftp和fshell软件4.在Ubuntu(Linux)中编译Android平台的FFmpeg( arm和x86 )5.解压FFmpeg6.Android编译脚本(1)…...

k8s-认证授权 14

Kubernetes的认证授权分为认证(鉴定用户身份)、授权(操作权限许可鉴别)、准入控制(资源对象操作时实现更精细的许可检查)三个阶段。 Authentication(认证) 认证方式现共有8种&…...

在全志H616核桃派上实现USB摄像头的OpenCV颜色检测

在给核桃派开发板用OpenCV读取图像并显示到pyqt5的窗口上并加入颜色检测功能,尝试将图像中所有蓝色的东西都用一个框标记出来。 颜色检测核心api 按照惯例,先要介绍一下opencv中常用的hsv像素格式。颜色还是那个颜色,只是描述颜色用的参数变…...

mac安装部署gitbook教程

mac安装部署gitbook教程 前言一、安装准备二、GitBook安装三、项目初始化 前言 一些自己实际操作的记录。 一、安装准备 Node.js gitbook基于Node.js,所以需要提前安装。 下载地址:https://nodejs.org/en/,可以下载比较新的版本。(但我的建议…...

有关软件测试的,任何时间都可以,软件测试主要服务项目:测试用例 报告 计划

有关软件测试的,任何时间都可以,软件测试主要服务项目: 1. 测试用例 2. 测试报告 3. 测试计划 4. 白盒测试 5. 黑盒测试 6. 接口测试 7.自动…...

快乐过寒假,安全不放假

寒假将至,春节即来,为了使孩子们过上一个平安、快乐、文明、祥和、健康、有益的寒假和春节,在共青团永宁县委员会、永宁县望洪镇人民政府的大力支持下,在永宁新华中心村校外少工委的积极配合下,1月20日下午宁夏妇女儿童…...

qt学习:模仿qq界面+添加资源+无边框界面+修改样式

目录 一,创建登录ui界面类 LoginWidget 二,添加图片资源 三,通过样式的方法将图片设置成圆圈的背景 四,新建登录后的ui界面 MWindow 简陋的就可以,因为只为了学习,可以自己补充 五,新建三个嵌套ui界面类,ChatWidget聊天界面 FriendWiidget好友界面 CollectW…...

【Linux】基本指令收尾

文章目录 日期查找打包压缩系统信息Linux和Windows互传文件 日期 这篇是基本指令的收尾了,还有几个基本指令我们需要说一下 首先是Date,它是用来显示时间和日期 直接输入date的话显示是有点不好看的,所以我们可以根据自己的喜欢加上分隔符&…...

精准核酸检测 - 华为OD统一考试

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 为了达到新冠疫情精准防控的需要,为了避免全员核酸检测带来的浪费,需要精准圈定可能被感染的人群。 现在根据传染病流调以及大数据分析&a…...

LINUX文件fd(file descriptor)文件描述符

目录 1.文件接口 1.1open 1.2C语言为什么要对open进行封装 2.fd demo代码 第一个问题 第二个问题 打开文件流程 引言:在学习C语言的时候,我们见过很多的文件的接口,例如fopen,fwrite,fclose等等,但…...

SpringMVC 的理解

MVC MVC(Model-View-Controller)是一种软件设计模式,用于实现用户界面。它将应用程序划分为三个互相交互的部分,以分离内部逻辑表示和表现层。这种分离有助于管理复杂的应用程序,因为它允许开发者单独修改模型、视图或…...

SpringBoot 3.1.7 集成Sentinel

一、背景 我的项目需要引入限流,降级,熔断框架,由于 Spring Cloud 2022.0.4 已经不再支持 Hystrix,Spring Cloud 提供了替代方案,如 Resilience4j,可以使用它来替换 Hystrix。但是网上搜了一下国内Resilie…...

Elastic Stack 8.12:通过对 ES|QL 等的改进增强了向量搜索

作者:来自 Elastic Tyler Perkins, Shani Sagiv, Gilad Gal, Ninoslav Miskovic Elastic Stack 8.12 构建于 Apache Lucene 9.9(有史以来最快的 Lucene 版本)之上,基于我们对标量量化和搜索并发性的贡献,为文本、向量和…...

结构体的内存对齐(计算题常考点)

许久不见我考完试回来啦,让我们接着将结构体进行到底! 目录 结构体对齐的意义: 结构体对齐的实现: 对齐规则: 训练: 好到这里误区来了: 总结: 往期回顾: 下期预告&…...

设置Json对象输出字段顺序

场景 通过情况下对前端输出json格式不需要关注字段顺序,但某些特殊场景需要设置字段输出顺序(例nginx需要对特殊字段顺序进行加密处理);框架有默认的顺序,如 jackson 默认使用字段声明的顺序, fastjson 默认是使用字典序。 jackso…...

当 OpenTelemetry 遇上阿里云 Prometheus

作者:逸陵 背景 在云原生可观测蓬勃发展的当下,想必大家对 OpenTelemetry & Prometheus 并不是太陌生。OpenTelemetry 是 CNCF(Cloud Native Computing Foundation)旗下的开源项目,它的目标是在云原生时代成为应…...

【Flink-1.17-教程】-【四】Flink DataStream API(1)源算子(Source)

【Flink-1.17-教程】-【四】Flink DataStream API(1)源算子(Source) 1)执行环境(Execution Environment)1.1.创建执行环境1.2.执行模式(Execution Mode)1.3.触发程序执行…...

【蓝桥杯EDA设计与开发】资料汇总以及立创EDA及PCB相关技术资料汇总(持续更新)

[18/01/2024]:目前为了准备蓝桥杯做一些资料贴,于是写下这一篇博客。 各种资料均来源于网络以及部分书籍、手册等文档,参考不保证其准确性。 如果在准备蓝桥杯,可与我私信共同学习!!!&#xf…...

JavaEE学习笔记 2024-1-18 --模块化Controller层、AJAX与JSON

上一篇 个人整理非商业用途,欢迎探讨与指正!! 文章目录 11.模块化Controller层12.AJAX12.1使用场景 13.JSON13.1如何使用后端发送JSON数据 11.模块化Controller层 将对应模块的Servlet写入到一个指定的模块中,模块化编程 使用switch方式 p…...

rpc跨平台通信的简单案例,java和go

当我们使用Go和Java进行RPC(Remote Procedure Call,远程过程调用)跨平台通信时,你可以使用gRPC作为通信框架。gRPC是一个高性能、开源的RPC框架,它支持多种编程语言,包括Go和Java。下面我将为你提供一个简单…...

CodeBlocks-25.03 在 Windows 上的完整配置与避坑指南

1. 为什么选择CodeBlocks-25.03? 如果你刚开始学习C/C编程,CodeBlocks绝对是个不错的选择。作为一个开源的集成开发环境(IDE),它轻量级、跨平台,最重要的是完全免费。我十年前刚开始写代码时用的就是CodeBl…...

基于Session管理的在线视频学习平台防作弊策略

1. Session管理在在线学习平台中的核心作用 在线视频学习平台最头疼的问题之一,就是如何防止用户通过多设备同时登录来刷学习进度。想象一下,如果用户同时在手机、平板和电脑上登录同一个账号,三倍速刷完课程,这对其他认真学习的用…...

本地部署音效生成器 Moodist 并实现外部访问

Moodist 是基于 MIT 许可的开源白噪音平台,提供了超过 75 种不同的环境声音,可以帮助用户集中注意力、保持冷静或进入放松状态。它还支持持久化声音选择,用户能够自定义声音预设,分享他们的音频配置给他人,并且集成睡眠…...

ArcGIS重分类实战:手把手教你搞定SWAT模型土地利用数据库(附CNLUCC对照表)

ArcGIS重分类实战:从CNLUCC到SWAT模型土地利用数据库的完整指南 当你第一次打开SWAT模型准备进行水文模拟时,最令人头疼的环节之一就是处理土地利用数据。作为中国研究者,我们手头往往只有CNLUCC分类的土地利用栅格数据,而SWAT模型…...

2021 年 3 月青少年软编等考 C 语言四级真题解析

目录 T1. 酒鬼 思路分析 T2. 重启系统 思路分析 T3. 鸣人的影分身 思路分析 T4. 宠物小精灵之收服 思路分析 T1. 酒鬼 题目链接:SOJ D1053 Santo 刚刚与房东打赌赢得了一间在 New Clondike 的大客厅。今天,他来到这个大客厅欣赏他的奖品。房东摆出了一行瓶子在酒吧上。瓶子…...

MiniCPM-V-2_6模型蒸馏与部署:解决深度学习模型耦合过度问题

MiniCPM-V-2_6模型蒸馏与部署:解决深度学习模型耦合过度问题 你是不是遇到过这种情况?好不容易训练好一个功能强大的模型,想把它部署到实际应用里,却发现它像一块密不透风的巨石——想改一个小功能,就得动整个模型&am…...

无需编程!cv_resnet18_ocr-detection WebUI界面操作详解

无需编程!cv_resnet18_ocr-detection WebUI界面操作详解 1. 开篇:为什么选择这个OCR工具? 在日常工作和生活中,我们经常需要从图片中提取文字信息。传统OCR工具要么需要复杂的编程接口,要么功能单一难以满足需求。今…...

探索多约束多目标粒子群算法在微电网优化运行中的应用

多约束多目标粒子群算法的微电网优化运行代码在如今追求能源高效利用与可持续发展的时代,微电网的优化运行显得尤为关键。而多约束多目标粒子群算法为微电网优化运行提供了一种极具潜力的解决方案。今天咱就来唠唠相关的代码实现。 粒子群算法基础回顾 粒子群算法&a…...

阿里云:数据分析Agent白皮书——AI重构数据消费 2026

这份由阿里云与瓴羊发布的《数据分析 Agent 白皮书 ——AI 重构数据消费》,立足 DataAI 融合趋势,系统阐述了数据分析 Agent 的发展背景、技术架构、代表产品、行业实践、落地方法与未来方向,核心围绕AI 重构企业数据消费模式展开&#xff0c…...

Realistic Vision V5.1 性能调优:针对STM32嵌入式设备图像生成的优化思路探讨

Realistic Vision V5.1 性能调优:针对STM32嵌入式设备图像生成的优化思路探讨 最近在捣鼓一个挺有意思的项目,想把一些前沿的AI图像生成能力,塞进像STM32F103C8T6这种资源极其有限的嵌入式设备里。你可能要问了,这怎么可能&#…...