FFmpeg03:多媒体文件处理基础

在这里插入图片描述

日志系统

  • #include <libavutil/log.h>
  • av_log_set_level(AV_LOG_DEBUG)
  • av_log(NULL, AV_LOG_INFO, “…%s\n”, op)

常用日志级别

AV_LOG_ERROR
AV_LOG_WARNING
AV_LOG_INFO

Demo

log.cpp

#include <iostream>
extern "C" {
#include <libavutil/log.h>
}int main() {// Set the log level to AV_LOG_DEBUGav_log_set_level(AV_LOG_DEBUG);// Log a message at the INFO levelav_log(nullptr, AV_LOG_INFO, "This is an informational message.\n");// Log a message at the WARNING levelav_log(nullptr, AV_LOG_WARNING, "This is a warning message.\n");// Log a message at the ERROR levelav_log(nullptr, AV_LOG_ERROR, "This is an error message.\n");return 0;
}
clang++ log.cpp -o log $(pkg-config --cflags --libs libavutil)

文件的删除与重命名

avpriv_io_delete()
avpriv_io_move()

操作目录

avio_open_dir()
avio_read_dir()
avio_close_dir()/* -------重要结构体----- */
AVIODirContext // 操作目录的上下文
AVIODirEntry // 目录项,用于存放文件名,文件大小等信息

Demo

实现ls命令

#include <iostream>extern "C" {#include <libavutil/log.h>#include <libavformat/avformat.h>
}int main(void) {int ret;AVIODirContext *ctx = nullptr;AVIODirEntry *entry = nullptr;av_log_set_level(AV_LOG_INFO);ret = avio_open_dir(&ctx, "./", nullptr);if (ret < 0) {av_log(nullptr, AV_LOG_ERROR, "Could not open directory: %s\n", av_err2str(ret));return ret;}while (1) {ret = avio_read_dir(ctx, &entry);if (ret < 0) {av_log(nullptr, AV_LOG_ERROR, "Could not read directory: %s\n", av_err2str(ret));break;}if (!entry) {break; // No more entries}av_log(nullptr, AV_LOG_INFO, "%12"PRId64" %s\n", entry->size, entry->name);avio_free_directory_entry(&entry);}avio_close_dir(&ctx);return 0;
}
clang++ ffmpeg_ls.cpp -o ffmpeg_ls $(pkg-config --cflags --libs libavutil libavformat)

处理流数据的基本概念

  • 多媒体文件其实是个容器
  • 在容器里有很多流(Stream/Track)
  • 每种流是由不同的编码器编码的
  • 从流中读出的数据称为包
  • 在一个包中包含着一个或多个帧

几个重要的结构体

  • AVFormatContext
  • AVStream
  • AVPacket

操作流数据的基本步骤

解复用----> 获取流------>读数据包----->释放资源

打印音视频Meta信息

  • av_register_all (5.0以后就被取消了)
  • avformat_open_input() / avformat_close_input
  • av_dump_format()

extern "C" {
#include <libavformat/avformat.h>
#include <libavutil/log.h>
}int main() {int ret;AVFormatContext *fmt_ctx = nullptr;av_log_set_level(AV_LOG_INFO);// av_register_all(); ffmpeg 4.0 and later do not require thisret = avformat_open_input(&fmt_ctx, "./input.mp4", nullptr, nullptr);if (ret < 0) {av_log(nullptr, AV_LOG_ERROR, "Could not open input file: %s\n", av_err2str(ret));return ret;}av_dump_format(fmt_ctx, 0, "./input.mp4", 0);avformat_close_input(&fmt_ctx);return 0;
}
clang++ ffmpeg_meta.cpp -o mediainfo $(pkg-config --cflags --libs libavutil libavformat)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93955.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【每天一个知识点】AIOps 与自动化管理

一、AIOps 的内涵AIOps&#xff08;Artificial Intelligence for IT Operations&#xff09;&#xff1a;指将人工智能、大数据分析和机器学习技术应用于 IT 运维管理中。主要目标是&#xff1a;利用智能算法对云平台、网络、应用和日志等海量运维数据进行实时分析&#xff0c;…

ios使用saveVideoToPhotosAlbum 保存视频失败提示 invalid video

ios使用saveVideoToPhotosAlbum 保存视频失败提示 invalid video 解决办法 iOS 上对保存到相册的视频存在某种格式和分辨率上的限制&#xff0c;建议先自查看下视频生成的参数&#xff0c;可以先试试苹果自带浏览器 safari 上能否播放该视频。 如果不能播放&#xff0c;证明 io…

Vue基础(③父子组件)

房子&#xff08;父组件&#xff09;包含窗户和门&#xff08;子组件&#xff09; 窗户和门&#xff08;子组件&#xff09;是房子&#xff08;父组件&#xff09;的一部分父组件<!-- 父组件&#xff1a;比如叫 Home.vue --> <template><div><h1>这是父…

AI领域的语义空间是什么?

写在前面&#xff1a;本文将从简单的二维空间来逐渐展开问题&#xff0c;带您理解语义空间。距离和体型&#xff1a;这里尝试用距离和体型这两个尺度来理解语义空间&#xff0c;先说的是低维情况&#xff0c;后面在尝试理解高维的情况。比如&#xff0c;在二维空间的x,y坐标系&…

排序---插入排序

基本思想对于插入排序而言&#xff0c;它的基本思想就是往已经排好序的序列里边插入数据。思想类似于玩扑克牌。接下来的排序都是基于下边的这个数组。int a[ ] { 5 , 3 , 9 , 6 , 2 , 4 , 7 , 1 , 8 };直接插入排序我们想要将这个数组排成升序&#xff0c;在最一开始&#xf…

Java性能优化实战(四):IO与网络优化的4个关键方向

IO与网络操作是Java应用性能的常见瓶颈&#xff0c;尤其在高并发场景下&#xff0c;低效的IO处理会导致响应缓慢、资源浪费等问题。本文将聚焦IO与网络优化的四个核心方向&#xff0c;通过真实案例、代码对比和性能数据&#xff0c;详解如何提升IO效率、减少网络传输开销&#…

对齐Wireshark和USRP捕获信号的波形

一、USRP信号 USRP捕获信号的波形如下&#xff1a; 放大后&#xff1a; 100ms 10ms 1ms 100us 10us 1us 二、波形分析 2.1 时间分辨率 采样率61.44MHz, 对应时间分辨率为1/61.44us0.01627us16.27ns。 这时间分辨率够用了&#xff0c;数据包长度为1到20us&#xff1a; 2.2 W…

2025年加密软件技术深度分析:从原理到企业级应用实践

一、加密技术基础与分类加密技术作为信息安全的核心基石&#xff0c;其基本原理是通过特定算法将明文数据转换为不可读的密文&#xff0c;只有持有正确密钥的授权用户才能解密还原。2025年主流的加密技术可分为三大类&#xff1a;‌对称加密‌&#xff1a;使用相同密钥进行加密…

打工人日报20250822

打工人日报20250822 对自己负责&#xff0c;可以是换一个角度看待自己不喜欢的工作&#xff0c;转换一个角度&#xff0c;从中找到自己感兴趣的点 真的非常不想计算声场的数据 啊啊啊啊啊 技术 STM32烧录问题 STM32 代码烧录失败&#xff1a;Error: Flash Download failed …

消费盲返模式:重构快消行业营销生态的破局之道与风险防控指南

一、模式爆发&#xff1a;快消行业的新增长引擎在流量成本攀升、用户留存困难的商业环境下&#xff0c;消费盲返模式正成为零售领域的一匹黑马。其核心逻辑在于通过"消费即投资"的机制设计&#xff0c;将每笔交易转化为后续100笔订单的激励源&#xff0c;形成独特的&…

STM32-FreeRTOS快速入门指南(上)

第一章 FreeRTOS系统配置 1. FreeRTOSConfig.h文件 针对 FreeRTOSConfig.h 文件&#xff0c;在 FreeRTOS 官方的在线文档中有详细的说明&#xff0c;网址为&#xff1a; https://www.freertos.org/a00110.html FreeRTOS 使用 FreeRTOSConfig.h 文件进行配置和裁剪。 FreeRTOSCo…

南溪智融双碳示范基地建筑设备管理系统 + 智能照明系统调试完成:筑牢 “绿色智能” 运营基石

南溪智融双碳示范基地作为聚焦 “双碳” 目标的标杆项目&#xff0c;其建筑设备管理系统与智能照明系统的调试完成&#xff0c;标志着基地在 “设备高效运维、能源精准管控、低碳场景落地” 方面迈出关键一步。两大系统深度契合示范基地 “以技术赋能双碳” 的核心定位&#xf…

c++的可扩展性方法

在C编码中&#xff0c;"方便扩展"通常指的是代码设计具有良好的**可维护性、可重用性和灵活性**&#xff0c;能够在不修改原有代码或仅少量修改的情况下&#xff0c;轻松添加新功能、支持新类型或适应新需求。以下是一些典型的、体现“方便扩展”思想的C编程案例&…

加速车辆开发 风丘道路载荷数据采集 (RLDA) 测试方案

一、背景 整车厂在汽车上市前&#xff0c;了解产品所能承受的载荷是非常重要的&#xff0c;因此需进行道路载荷数据采集&#xff08;RLDA&#xff09;测试。通过获得车辆在实际试验场或公路道路中行驶的载荷信息来为整车台架道路模拟试验提供目标信号输入&#xff0c;以及为用于…

大模型0基础开发入门与实践:第4章 “脑细胞”的模拟:神经网络与深度学习入门

第4章 “脑细胞”的模拟&#xff1a;神经网络与深度学习入门 1. 引言 在上一章&#xff0c;我们像一位侦探&#xff0c;学会了使用决策树这样的工具&#xff0c;从清晰的线索&#xff08;花瓣、花萼的尺寸&#xff09;中推理出确定的结论&#xff08;鸢尾花的种类&#xff09;。…

微服务之间的调用关系如何处理,才能防止循环依赖

在微服务架构中&#xff0c;循环依赖是常见的设计问题&#xff0c;可能导致系统部署失败、启动顺序冲突、故障排查困难等问题。处理循环依赖的核心原则是通过架构设计打破依赖闭环&#xff0c;以下是具体的解决方案&#xff1a; 1. 重新划分服务边界&#xff08;根本解决&#…

粗粮厂的基于flink的汽车实时数仓解决方案

基于flink的实时数仓解决方案1 背景2 业务模型1 业务框架2 难点痛点3技术选型1 计算引擎2 中间存储3 查询引擎4 flink计算架构设计1 纯实时架构2 纯实时定期补充离线数据3 纯实时定期刷新过期binlog4 lamdba 分字段更新 历史过期数据刷新5 痛点解决delta joinmerge-enginehol…

Datawhale AI夏令营---coze空间共学

1.进入coze空间 2.点击免费使用 3.点击制作播客&#xff0c;微信上面选好链接 彻底搞懂深度学习-模型训练和推理&#xff08;动图讲解&#xff09; 4.运行过程 5.音频链接 https://lf-bot-studio-plugin-resource.coze.cn/obj/bot-studio-platform-plugin-tos/sami_podcast…

遥感机器学习入门实战教程|Sklearn案例⑥:网格搜索与超参数优化

在前几篇案例中&#xff0c;有同学在后台留言&#xff1a;“模型的参数到底怎么调&#xff1f;比如 SVM 的 C 和 γ&#xff0c;随机森林的树数和深度&#xff0c;要怎么选才能得到最优结果呢&#xff1f;”这是一个非常经典的问题&#xff1a;参数选不好&#xff0c;模型效果差…

论文精读(三)|智能合约漏洞检测技术综述

笔者链接&#xff1a;扑克中的黑桃A 专栏链接&#xff1a;论文精读 本文关键词&#xff1a;智能合约;合约安全;合约可靠性;合约质量保障;漏洞检测;合约程序分析 引 诸位技术同仁&#xff1a; 本系列将系统精读的方式&#xff0c;深入剖析计算机科学顶级期刊/会议论文&#…