FFmeg
Achou.Wang
勿在浮沙筑高台
展开
-
说一说ffmpeg到处都在使用的ff_thread_once函数
从名字就能知道ff_thread_once函数的作用,就是保证在多线程调用的时候,函数只执行一次FFmpeg中是使用经典的double check来保证函数只执行一次的,我们来跟踪下函数看下具体的实现:ff_thread_once函数是调用pthread_once函数实现的:#define ff_thread_once(control, routine) pthread_once(control, routine)pthread_once函数实现如下:static av_always_inlin原创 2020-12-13 22:18:27 · 593 阅读 · 0 评论 -
FFmpeg音视频入门-使用FFmpeg读取多媒体文件的信息C++代码实现+详解
读取音视频信息设置日志等级// 设置日志等级av_log_set_level(AV_LOG_DEBUG);参数检查必须给出要读取的多媒体文件路径才能进行接下来的多媒体读取的任务。if (argc != 2) { cout << "please input a reading file" << "argc = " << argc << endl; return -1;}char *inputFileName = argv[1]原创 2020-12-13 16:22:24 · 2446 阅读 · 2 评论 -
FFmpg音视频入门教程
FFmpegFFmpg是音视频领域的瑞士军刀,由C语言进行编写,广泛的支持C++, python,java,go等语言的调用,继承了几乎所有的编解码库和流协议,并能任意的添加图片水印和问题,能解决音视频开发领域几乎所有的问题, FFmpeg的开源协议为LGPL何GPL协议,也就是说他能在一定程度上允许闭源商用,前提是不要使用它的GPL开源的功能。本文经过裁剪参考:https://ffmpeg.org/documentation.html原文地址:https://www.fawdlstty.com/f原创 2020-12-12 23:59:03 · 1807 阅读 · 0 评论 -
ubuntu 20上安装gdbgui
ubuntu 20上自带的python已经符合gdbgui官方的要求,所以安装gdbgui只需要使用安装pip3sudo apt-get install python3-pip再使用pip3安装gdbguiandrew@andrew-G3-3590:/work/FFmpeg$ pip3 install gdbgui --upgradeCollecting gdbgui Downloading gdbgui-0.14.0.1-py3-none-any.whl (1.7 MB) |██原创 2020-11-14 16:39:35 · 1650 阅读 · 0 评论 -
使用FFmpeg实现抽取多媒体文件的音频并按照AAC格式进行保存--附源码
抽取音频文件注册log与编解码器av_log_set_level(AV_LOG_INFO);av_register_all();打开多媒体文件打开多媒体文件,并读取头部信息/** * Open an input stream and read the header. The codecs are not opened. * The stream must be closed with avformat_close_input(). * * @param ps Pointer to use原创 2020-11-09 23:57:23 · 464 阅读 · 0 评论 -
FFmpeg中实现对多媒体信息的获取与打印av_dump_format
获取mediainfo首先调用av_register_all将所有的编码器和解码器注册好来看下具体的注册实现void av_register_all(void){ ff_thread_once(&av_format_next_init, av_format_init_next);}// 看下av_format_init_next的实现// 可以看到函数内部是实现了将编码器和解码器使用指针进行串联的操作// 如果有输出或者输入列表,将输出或输入列表也进行串联static vo原创 2020-11-08 16:13:25 · 1208 阅读 · 0 评论 -
FFmpeg--av_register_all函数分析
·av_register_all·主要实现了将编码器解码器,以及输入输出列表(如果有的话)进行指针串联的操作void av_register_all(void){ ff_thread_once(&av_format_next_init, av_format_init_next);}// 看下av_format_init_next的实现// 可以看到函数内部是实现了将编码器和解码器使用指针进行串联的操作// 如果有输出或者输入列表,将输出或输入列表也进行串联static void原创 2020-11-08 12:34:24 · 498 阅读 · 0 评论 -
FFmpeg中的日志以及avio实现对文件的读写功能
ffmpeg日志ffmpeg日志,接口都定义在log.h,使用的库是libavutil使用时一定要加上对头文件extern "C"外部,否则会报对应的函数没有定义//// Created by andrew on 2020/10/31.//#include <iostream>extern "C"{#include <libavutil/log.h>}using namespace std;int main(int argc, char *argv[]){原创 2020-11-08 10:32:42 · 1408 阅读 · 0 评论 -
ffmpeg源码实现抽取音频并保存 --C++实现
使用ffmpeg库实现,抽取视频中的音频信息,并进行保存//// Created by andrew on 2020/11/1.//#include <iostream>extern "C" {#include <libavutil/log.h>#include <libavformat/avformat.h>}// aac每帧开头都要填写对应的格式信息void adts_header(char *szAdtsHeader, int dataLen原创 2020-11-01 22:39:20 · 2131 阅读 · 6 评论 -
使用ffmpeg打印音视频的详细信息
使用ffmpeg打印音视频的详细参数非常简单,仅仅需要三个函数接口实现:/*所有进行操作前,先执行以下,否则需要自己制定类型*/ av_register_all /*Open an input stream and read the header*/ avformat_open_input /* * Print detailed information about the input or output format * */ av_dump_f原创 2020-11-01 21:27:56 · 887 阅读 · 1 评论 -
ffmpeg函数调用失败--在编译自己的ffmpeg函数的时候显示ffmpeg函数undefined reference to `av_log_set_level(int)‘
cmake 脚本报错如下:====================[ Build | ffmpeg_log | Debug ]==============================/opt/clion-2020.2.4/bin/cmake/linux/bin/cmake --build /work/ffmpeg_doc/cmake-build-debug --target ffmpeg_log -- -j 6Scanning dependencies of target ffmpeg_log[原创 2020-10-31 20:47:15 · 1556 阅读 · 1 评论 -
FFmpeg入门之常用命令
ffmpeg常用命令常用命令分类ffmpeg处理流程基本信息查询如命令行:ffmpeg -codecs录制命令UBUNTU上录制mp4的命令ffmpeg -thread_queue_size 128 -f x11grab -video_size 1280x800 -framerate 30 -i :0.0 -f video4linux2 -video_size 400x300 -framerate 30 -i /dev/video0 -f alsa -ac 2 -i pulse -原创 2020-10-31 18:47:55 · 505 阅读 · 0 评论 -
ffmpeg本地编译没有ffplay解决方案
在本地编译ffmpeg的时候编译没有ffplay,是因为缺少sdl库只需要安装对应的库就行了两个库之间差别还是很大的,至于怎样选择就看个人需要了,最好是两个都安装让编译的时候脚本自动判断选择吧sudo apt-get install libsdl1.2-devsudo apt-get install libsdl2-dev另外执行configure的时候可能会提示缺少yasm用下面的语句安装下yasmsudo apt-get install yasm...原创 2020-10-31 10:06:09 · 1123 阅读 · 0 评论