FFmpeg
文章平均质量分 58
他过江
分享C/C++/Linux/Qt/音视频/FFmpeg/OpenCV等相关技术。
展开
-
Qt+FFmpeg录屏录音
源码:Qt+FFmpeg录屏录音录屏功能支持:开始,暂停,结束。 使用Qt+C++封装FFmpeg API,没有使用废弃的FFmpeg API。 主线程:Qt GUI线程,以后可接入录屏UI。 MuxThreadProc:复用线程,启动音视频采集线程。打开输入/输出流,然后从fifoBuffer读取帧,编码生成各种格式视频。 ScreenRecordThreadProc:视频采集线程,.....................原创 2019-03-06 23:56:47 · 9852 阅读 · 21 评论 -
基于Qt+FFmpeg的视频监控系统
假设一个业务场景:每个员工工位旁有两个网络摄像头。老板需要一个员工监控软件,在上班时软件可以拉取RTSP视频流,也可以随时录制视频。这样老板就可以知道谁在摸鱼了 ◕‿◕为防有人上纲上线,在此特别声明:上面的场景是开玩笑的。监控软件有很多使用场景:学校,公安,交通,考试,零售等等。原创 2023-05-17 14:30:16 · 1176 阅读 · 2 评论 -
windows下使用ShiftMediaProject编译调试FFmpeg
可以重新运行project_get_dependencies.bat看看有没有报错,有报错则可能有的依赖没下载成功,这时要么继续运行该脚本下载,要么手动下载失败的仓库。将amf/public/include里的两个目录拷贝到msvc/include/AMF。glext.h,wglext.h放到目录msvc/include/gl。下载glext.h,wglext.h和khrplatform.h。编译成功,将下图三个目录拷贝到你的工程,导入VS,就能开发了。可以看到运行成功,如果失败就参考readme吧。原创 2023-03-31 20:07:08 · 822 阅读 · 1 评论 -
简单的RTSP播放器
简介windows平台,纯视频流播放,暂不支持音频。局域网延迟在200到300毫秒。开发环境WIN10VS2017Qt5.12.9FFmpeg4.3.1 64位github地址效果图原创 2022-02-20 18:20:52 · 2299 阅读 · 0 评论 -
记录FFmpeg遇到的问题
1. 推流rtsp到EasyDarwin的时候,如果断网了或EasyDarwin进程没启动则avformat_write_header会一直阻塞 然后线程会一直阻塞在avformat_write_header解决方法: AVFormatContext设置中断回调,回调函数中判断avformat_write_header是否超时,超时则退出阻塞参考链接由于设置了中断回调,故所有阻塞函数都要重置超时时间,否则这些函数会调用失败。例如: 超时中断会导致av_interleaved_write_fr原创 2021-02-06 00:19:56 · 1931 阅读 · 4 评论 -
适用于低配机器,从USB摄像头拉H264流的Qt播放器
解决方案:dshow拉H264流+h264_qsv硬解码+d3d渲染一拉H264流最近发现FFmpeg不支持从USB摄像头拉H264,只能拉到MJPEG流。而MJPEG流又不能用来推流,目测只能用H264推流。所以下面直接用DirectShow拉H264流。dshow的用法可以参考msdn和amcap源码。这里我创建了个CaptureWorker类,继承ISampleGrabberCB。这样就能在回调函数BufferCB中拿到H264数据包。class CaptureVideo :..原创 2020-07-25 00:03:00 · 2470 阅读 · 7 评论 -
Qt调用FFmpeg命令录屏
//列出音视频设备ffmpeg -list_devices true -f dshow -i dummy//录屏命令ffmpeg -f gdigrab -i desktop -f dshow -i audio="麦克风 (High Definition Audio 设备)" -pix_fmt yuv420p -vcodec libx264 -acodec aac -s 1440x900 ...原创 2019-02-25 20:55:54 · 3731 阅读 · 1 评论 -
Qt+FFmpeg录音
源码下载地址ScreenRecordImpl.h#pragma once#include <Windows.h>#include <atomic>#include <condition_variable>#include <mutex>#include <QObject>#include <QString>...原创 2019-03-04 22:01:49 · 1623 阅读 · 2 评论 -
Qt+FFmpeg录屏
源码录屏功能支持:开始,暂停,结束。 使用Qt+C++封装FFmpeg API,没有使用废弃的FFmpeg API。 主线程:Qt GUI线程,以后可接入录屏UI。 父线程(读):ScreenRecordThreadProc() 打开输入/输出流,创建子线程,然后从fifoBuffer读取帧,编码生成各种格式视频。 子线程(写):ScreenAcquireThreadProc() 从输...原创 2019-02-27 23:54:47 · 7106 阅读 · 19 评论 -
VS2015编译FFmpeg3.3.1源码
操作系统:WIN10-64位编译平台:VS2015FFmpeg版本:3.3.1解决方案配置:DEBUG (看个人需要选择DEBUG,RELEASE,DEBUG DLL等)解决方案平台:X641、下载 依赖包源码,依赖包 ShiftMediaProject.rar(内含51个依赖包,包含 nvidia_video_sdk_6.0.1)。百度网盘 下载地址:链接原创 2017-07-18 22:13:24 · 5379 阅读 · 13 评论 -
调用科大讯飞API实现文本转语音
text_to_speech调用科大讯飞API实现文本转语音(wav)采用科大讯飞提供的API接口,使用C语言实现语音合成功能。语音合成功能:用户输入一段文字,会生成相应语音,可以选择发音的人物,音量,语速。 /* 音频合成参数 */ typedef struct SpeechSynsContext { const char *text; /* 输入文本 */ co...原创 2017-12-02 12:50:41 · 10563 阅读 · 5 评论 -
FFmpeg-examples-transcode_aac
源码来源于官网FFmpeg-example:https://github.com/FFmpeg/FFmpeg/blob/master/doc/examples/transcoding.c该example官网例子还使用avcodec_encode_audio4 API,以下使用了新的API avcodec_send_packet/avcodec_receive_frame等Version:F原创 2017-07-31 17:47:59 · 1238 阅读 · 0 评论 -
FFmpeg合并视频流与音频流
mux.h #ifndef MUX_H#define MUX_H#ifdef __cplusplusextern "C"{#endif#include"common.h"#include"encode.h" typedef struct AVMuxing { videoParm *vp; AVFormatContext *i_fmt_ctx_v; AVF...原创 2017-12-02 21:13:02 · 5469 阅读 · 0 评论 -
FFmpeg将BGRA帧编码成视频
源码将外部传进来的BGRA帧编码成各种格式的视频文件基于FFFmpeg框架,将外部传来的每一BGRA帧进行编码,生成视频文件,然后将视频和外部传来的MP3文件重新复用(mux),生成各种格式的视频。common.h 导入FFmpeg需要的头文件和库encode.h 对外提供了5个接口: preparing_to_push //设置视频参数和FFmpeg相...原创 2017-12-02 20:51:38 · 2005 阅读 · 0 评论 -
h264手动添加sps和pps到AVCodecContext->extradata
最近编码的时候发现生成的视频不能用Windows Media Player等系统自带的播放器播放,也没有缩略图。找了很久,最后才发现添加一行代码就行了:codec_ctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;调用该行代码后,FFmpeg会在调用avcodec_open2里,在写header时填充sps,pps等信息。不填充编码出来的视频就不能正常原创 2017-09-12 22:07:19 · 9352 阅读 · 2 评论 -
FFmpeg学习笔记-踩坑
意外的endif:/*后应该输入空格再输入注释:/* comment */yuv文件失败:可能是yuv文件已经打开了错误C1010:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?无法解析的外部符号被引用的原因:1、头文件中的函数声明忘记加在extern C内2、忘记动态链接dll为什...原创 2017-07-13 01:07:23 · 5735 阅读 · 0 评论 -
FFmpeg学习笔记-API理解
av_compare_ts:在音视频流复用(MUX)的时候比较时间戳,根据时间戳的先后顺序交叉写入音频包或视频包/** * Compare two timestamps each in its own time base. * * @return One of the following values: * - -1 if `ts_a` is befor原创 2017-07-16 15:10:30 · 1375 阅读 · 0 评论 -
FFmpeg搭建开发环境
win10 64位 VS2015 FFmpeg官网有三个Linking库版本:Static,Shared,Dev.Static:只有三个exeShared:exe加上dllDev:.h+.lib+dll.adll.a和.def不知道怎么用。所以我用了Shared的dll加上Dev的lib和Dev的include目录 先将include和lib文件夹放在项目下(不是...原创 2017-07-29 01:40:53 · 704 阅读 · 0 评论 -
FFmpeg学习笔记-新旧API替换
解码:@deprecated Use avcodec_send_packet() and avcodec_receive_frame().attribute_deprecatedint avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got原创 2017-07-15 22:49:54 · 3629 阅读 · 0 评论