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
英文地址,請注明出處:http://en.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;深入剖析計算機科學頂級期刊/會議論文&#…