FFmpeg IOS 解封装

2024-05-07 00:38
文章标签 封装 ffmpeg ios

本文主要是介绍FFmpeg IOS 解封装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

解封装流程:

Demo

引入头文件:

//核心库-音视频编解码库
#import <libavcodec/avcodec.h>
//封装格式库
#import <libavformat/avformat.h> 

(1)av_register_all() 注册所有的封装格式、加封装格式;也可以在使用之前单个注册。(新版本该方法弃用了)
在我最新使用的4.0.2版本中,已经不需要调用了。
image.png

(2)avformat_network_init() 初始化网络模块,例如用于解封装rtsp数据

(3)avformat_open_input(…) 打开文件并解析 解析出文件格式 音视频流,视频帧索引
使用之前要确保已经注册封装格式,比如说调用了av_register_all()

(4)avformat_find_stream_info(…) 查找文件格式、索引

(5)av_find_best_stream(…) 找对应的音频流 视频流 /( 遍历返回值的streams[]数
组,音频视频字幕扩展信息,根据标志位来确定信息)

(6)封装的上下文 :AVFormatContext (加解分装都用)
AVStream结构体存储音视频流的参数信息
AVPacket解封装玩后的数据包,用av_read_frame(…)读取,里面包含包的 pts dts 视频是否是关键帧 等 (去掉了 00 00 00 01间隔符)

//打开一个视频文件
+ (void)ffmpegOpenFile:(NSString *)filePath{// 1 注册组件
//    av_register_all();// 2 初始化网络 如果需要的话avformat_network_init()// 2 打开封装格式文件//封装格式上下文AVFormatContext *avformat_context = avformat_alloc_context();//文件路径const char *url = [filePath UTF8String];/*• AVFormatContext **ps  传指针的地址• const char *url   文件路径(本地的或者网络的http rtsp 地址会被存在AVFormatContext 结构体的 fileName中)• AVInputFormat *fmt 指定输入的封装格式 一般情况传NULL即可,自行判断即可• AVDictionary **options 一般传NULL*/int avformat_open_input_result = avformat_open_input(&avformat_context, url, NULL, NULL);if (avformat_open_input_result != 0) {NSLog(@"打开文件失败");char *error_info = NULL;av_strerror(avformat_open_input_result, error_info, 1024);return;}NSLog(@"打开文件成功");}

这篇关于FFmpeg IOS 解封装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965844

相关文章

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

SpringBoot使用ffmpeg实现视频压缩

《SpringBoot使用ffmpeg实现视频压缩》FFmpeg是一个开源的跨平台多媒体处理工具集,用于录制,转换,编辑和流式传输音频和视频,本文将使用ffmpeg实现视频压缩功能,有需要的可以参考... 目录核心功能1.格式转换2.编解码3.音视频处理4.流媒体支持5.滤镜(Filter)安装配置linu

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

一文详解如何在Vue3中封装API请求

《一文详解如何在Vue3中封装API请求》在现代前端开发中,API请求是不可避免的一部分,尤其是与后端交互时,下面我们来看看如何在Vue3项目中封装API请求,让你在实现功能时更加高效吧... 目录为什么要封装API请求1. vue 3项目结构2. 安装axIOS3. 创建API封装模块4. 封装API请求

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优