一、前言 最近需要实现一个录屏功能,网上查了好多资料,最可靠的方案当然还是用FFmpeg实现,但是也踩了很多坑,包括FFmpeg版本问题,vs2019里相关编译问题,FFmpeg也不太熟悉,很多代码不太容易看懂,想要按自己熟悉的方式实现录屏功能,花了一番功夫。 如果你进来了,可以不用走了,应该能帮到你。二、环境 VS2019+Qt5+FFmpeg4.2.2 FFmpeg的版本比较重要,不同的版本很多函数没法通用。0、查看FFmpeg版本:extern"C"{#include"libavutil/version.h"}constchar*versionInfo=av_ve
HLS(HTTPLiveStreaming)是苹果推出的视频流协议,HLS格式的视频包含一个m3u8文本文件,以及众多的.ts的视频片段,而m3u8文本文件的作用就是将这些ts片段索引起来。因为HLS协议是将视频切分成很多小的ts片段,这些小片段很适合放到cdn上,有很多视频文章都使用了hls格式传输视频。今天我在这里教大家如何用ffmpeg将mp4格式的视频转为HLS(m3u8)格式。 如果不对视频重新编码的话,命令也很简单,如下:ffmpeg-iinput.mp4-c:vcopy-hls_time2-hls_segment_filename%d.ts-fhlsoutput/playl
(本文基本逻辑:音画原始数据分析工具介绍→编码数据分析工具介绍→封装格式分析工具介绍)工欲善其事,必先利其器。在音视频开发中,为了方便、快捷、直观的分析音视频数据,最好能有一些可视化的分析工具来帮助我们,这篇文章就来介绍一下常见的可视化音视频分析工具。1、音画原始数据分析工具1.1、AdobeAuditionAdobeAudition[1]是由Adobe公司开发的一个专业音频编辑和处理工具,支持多音轨、多种音频特效、多种音频格式。用它来分析PCM、AAC等格式的音频数据自然不在话下。由于PCM数据是裸的音频数据,不包含数字音频要素属性信息,所以在打开PCM数据文件时,如下图所示,需要指定对应的
(本文基本逻辑:音画原始数据分析工具介绍→编码数据分析工具介绍→封装格式分析工具介绍)工欲善其事,必先利其器。在音视频开发中,为了方便、快捷、直观的分析音视频数据,最好能有一些可视化的分析工具来帮助我们,这篇文章就来介绍一下常见的可视化音视频分析工具。1、音画原始数据分析工具1.1、AdobeAuditionAdobeAudition[1]是由Adobe公司开发的一个专业音频编辑和处理工具,支持多音轨、多种音频特效、多种音频格式。用它来分析PCM、AAC等格式的音频数据自然不在话下。由于PCM数据是裸的音频数据,不包含数字音频要素属性信息,所以在打开PCM数据文件时,如下图所示,需要指定对应的
前言之前实现了Android手机摄像头数据的TCP实时传输,今天接着聊聊,如何在PC端把接收到的H264视频流实时解码并渲染出来。这次使用的语言是C++,框架有FFmpeg和SDL2。解码解码部分使用FFmpeg,首先,需要初始化H264解码器:intH264Decoder::init(){codec=avcodec_find_decoder(AV_CODEC_ID_H264);if(codec==nullptr){printf("NoH264decoderfound\n");return-1;}codecCtx=avcodec_alloc_context3(codec);codecCtx->
一、FFmpeg简介。二、FFmpeg常用参数及命令。三、FFmpeg在Unity3D中的使用。 1、FFmpeg录屏。 2、FFmpeg推流。 3、FFmpeg其他功能简述。一、FFmpeg简介对于FFmpeg,其官网上是这样介绍的:FFmpegistheleadingmultimediaframework,abletodecode,encode,transcode,mux,demux,stream,filterandplayprettymuchanythingthathumansandmachineshavecreated.FFmpeg能够实现对视频音频编码、解码、转码、流传输等等一
前言本工程qt用的版本是5.8-32位,ffmpeg用的版本是较新的5.1版本。它支持TCP或UDP方式拉取实时流,实时流我采用的是监控摄像头的RTSP流。音频播放采用的是QAudioOutput,视频经ffmpeg解码并由YUV转RGB后是在QOpenGLWidget下进行渲染显示。本工程的代码有注释,可以通过本博客查看代码或者在播放最后的链接处下载工程demo。一、界面展示二、功能代码1.以下是主界面相关代码:mainwindow.hmainwindow.cppmainwindow.h#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include#includ
前言本工程qt用的版本是5.8-32位,ffmpeg用的版本是较新的5.1版本。它支持TCP或UDP方式拉取实时流,实时流我采用的是监控摄像头的RTSP流。音频播放采用的是QAudioOutput,视频经ffmpeg解码并由YUV转RGB后是在QOpenGLWidget下进行渲染显示。本工程的代码有注释,可以通过本博客查看代码或者在播放最后的链接处下载工程demo。一、界面展示二、功能代码1.以下是主界面相关代码:mainwindow.hmainwindow.cppmainwindow.h#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include#includ
1FFmpeg命令参数1.1主要参数-i设定输入流-f设定输出格式(format)-ss开始时间-t时间长度#修改音视频容器格式为flv,拷贝编码格式,复制0-20s数据ffmpeg-itest.mp4-ss0-t20-codeccopy-fflvout.flv#-f参数可以省略,自动识别输出格式ffmpeg-itest.mp4-ss0-t20-codeccopyout.flv1.2视频参数-vframes设置要输出的视频帧数-b设定视频码率-b:v视频码率-r设定帧速率-s设定画面的宽与高-vn不处理视频-aspectaspect设置横纵比4:316:9或1.33331.7777-vcode
1FFmpeg命令参数1.1主要参数-i设定输入流-f设定输出格式(format)-ss开始时间-t时间长度#修改音视频容器格式为flv,拷贝编码格式,复制0-20s数据ffmpeg-itest.mp4-ss0-t20-codeccopy-fflvout.flv#-f参数可以省略,自动识别输出格式ffmpeg-itest.mp4-ss0-t20-codeccopyout.flv1.2视频参数-vframes设置要输出的视频帧数-b设定视频码率-b:v视频码率-r设定帧速率-s设定画面的宽与高-vn不处理视频-aspectaspect设置横纵比4:316:9或1.33331.7777-vcode