ffmpeg
SXM19940913sxm
这个作者很懒,什么都没留下…
展开
-
ffmpeg---自定义IO中断 AVFormatContext::interrupt_callback
情景(原因)avformat_open_input默认是阻塞操作,如果不加控制,等待时间可能会达到30s以上av_read_frame的过程中相机断开连接导致读取码流一直死等解决方法:打开流媒体之前注册FFmpeg回调函数avformat_open_input的长时间默认阻塞问题1、设置成非阻塞(通常是不推荐的) ic->flags |= AVFMT_FLAG_NONBLOCK;2、设置超时时间 rtsp支持;而rtmp不支持,配置参数会报错(ffmpeg bug)3、设置int原创 2020-07-25 12:14:26 · 2309 阅读 · 2 评论 -
ffmpeg---AVPacket
AVPacket(声明于avcodec.h)AVPacket的大小是公共的ABI(public ABI)一部分,这样的结构体在FFmpeg很少,由此也可见AVPacket的重要性。它可以被分配在栈空间上(可以使用语句AVPacket packet; 在栈空间定义一个Packet ),并且除非libavcodec 和 libavformat有很大的改动,不然不会在AVPacket中添加新的字段。官方文档:AVPacket is one of the few structs in FFmpeg,whose原创 2020-06-06 09:36:55 · 224 阅读 · 0 评论 -
ffmpeg---音频---音频格式转换
例如SDL播放音频是不支持平面格式 而ffmpeg支持平面(planar)格式1、AVSampleFormat 音频sample的存储格式enum AVSampleFormat { AV_SAMPLE_FMT_NONE = -1, 1、打包(packed)类型: AV_SAMPLE_FMT_U8, ///< unsigned 8 bits AV_SAMPLE_FMT_S16, ///< signed 16 bits原创 2020-06-06 11:15:01 · 692 阅读 · 0 评论 -
ffmpeg---音频---基本概念 + SDL2播放方法流程(与ffplay相同,仅解码的位置不同)
A/D转换(模数转换,将模拟数据转换为数字数据):音频以重采样的形式将连续波形数据转换成离散数据存放。相关概念:1、采样频率: //其倒数是采样周期 22k Hz 无限广播所用的采样率 44.1k Hz CD音质 48k Hz 数字电视,DVD 96k Hz 192k Hz 蓝光盘,高清DVD 2、采样精度 采集到的点被称为样本(sample),每个样本占用的位数就是采样精度。这点和图像的像素表示比较类似,可以使用8bit,16bit或者24bit来表示采集到的一个样本。同样,原创 2020-06-04 20:43:22 · 338 阅读 · 0 评论 -
ffmpeg----FFplay简易播放器的实现
叶余的博客–音视频开发其中有5篇介绍了简易播放器的实现1、FFmpeg简易播放器的实现1-最简版sws转换时为了将格式转换成SDL所支持的像素格式,否则无法播放2、FFmpeg简易播放器的实现2-视频播放3、FFmpeg简易播放器的实现3-音频播放SDL 开发实战(七): SDL 多线程与锁机制SDL线程函数SDL常用函数结构体4、FFmpeg简易播放器的实现4-音视频播...原创 2020-03-01 23:52:02 · 251 阅读 · 0 评论 -
ffmpeg---转码 from doc\examples\transcoding.c
雷霄骅的最简单的基于FFMPEG的转码程序—修改自 ffmpeg实例文档doc\examples\transcoding.c,仅主函数有变动(难道时当时他用的旧版本原版?,与我下载的ffmpeg新版本仅主函数有差异)以前我遇到的比较多的是frame????????avcodec_encode_video2????????pkt然后写入filter_encode_write_frame():编码一个AVFrame。...原创 2020-02-11 21:20:51 · 205 阅读 · 0 评论 -
ffmpeg-非压缩数据编码 YUV转h264/h265 PCM转AAC
源自ffmpeg实战教程(三)音频PCM采样为AAC,视频YUV编码为H264/HEVC1、没有使用AVFormatContext2、一帧图像的Y U V 独立读取,独立编码,独立写入?关键代码:#if TEST_HEVC AVCodecID codec_id=AV_CODEC_ID_HEVC; char filename_out[]="ws.hevc";#else...原创 2020-02-05 16:33:21 · 788 阅读 · 0 评论 -
ffmpeg--命令 https://www.cnblogs.com/zhangwc/p/9817642.html
linux:推流现有文件ffmpeg -re -i filename.flv -f flv rtmp://192.168.126.128/live/cuc直播推流ffmpeg -f video4linux2 -i /dev/video0 -f flv rtmp://192.168.126.168/live/camera 报错: RTMP_Connect0, failed to co...原创 2020-06-14 15:08:33 · 509 阅读 · 0 评论 -
FFMPEG-摄像头采集保存YUV + 读取摄像头并编码封装保存成flv
最简单的基于FFmpeg的AVDevice例子(读取摄像头)–Libavdevice支持??设备作为输入端/输出端FFmpeg获取DirectShow设备数据(摄像头,录屏)①首先要ffmpeg安装到windows:static版本放到某一个目录下并添加到系统环境变量path中 查看版本:ffmpeg-version②命令:列出设备: ffmpeg -list_devices tru...原创 2020-02-06 22:48:38 · 2678 阅读 · 0 评论 -
ffmpeg---mux原理之示例代码muxing.c
ffmpeg-muxing原理分析前言:源码文件所在路径:/doc/example/muxing.c【凭空造出一个视频文件,完全是无中生有】muxing产生一个人工合成的音频流和视频流,编码后合成为一个输出文件。输出文件格式由文件后缀确定。(flv,avi,mp4,ts等格式)例子使用方法:./muxing 1.avi //会产生一个带音视频同步的视频2、6 写入音视频数据1、写...原创 2020-06-14 13:00:50 · 756 阅读 · 0 评论 -
FFmpeg封装格式处理:视音频复用器(muxer)不同格式中数据有无bsf的差异->-> Filter bitstream_filter实现格式转换:h264_mp4toannexb
视音频复用器,输入的视频不一定是H.264裸流文件,音频也不一定是纯音频文件。可以选择两个封装过的视音频文件作为输入。程序会从视频输入文件中“挑”出视频流,音频输入文件中“挑”出音频流,再将“挑选”出来的视音频流复用起来。PS1:对于某些封装格式(例如MP4/FLV/MKV等)中的H.264,需要用到名称为“h264_mp4toannexb”的bitstream filter。PS2:对...原创 2020-02-06 14:15:00 · 673 阅读 · 0 评论 -
FFmpeg的封装格式处理:视音频的分离器(Demuxer)
分离做法:直接输出解复用之后的的音频数据码流。只需要在每次调用av_read_frame()之后将得到的音频的AVPacket存为本地文件即可。区别: 在分离MP3码流的时候,直接存储AVPacket即可。 在分离AAC码流的时候,直接存储AVPacket后的文件可能是不能播放的。 如果视音频复用格式是TS(MPEG2 Transport Stream),直接存储后的文件是可...原创 2020-02-06 19:47:59 · 450 阅读 · 0 评论 -
ffmpeg--libswscale(图像缩放、颜色空间和像素格式转换操作)
主要函数:(1) sws_getContext():使用参数初始化SwsContext结构体。 可以用另一个接口函数sws_getCachedContext()取代。(2) sws_scale():转换一帧图像。(3) sws_freeContext():释放SwsContext结构体。初始化方式2种:①sws_getContext②sws_al...原创 2020-02-15 14:13:30 · 1163 阅读 · 0 评论 -
ffmpeg---AVfilter滤波器模块如何初始化filter和如何使用?
libavfilter的流程图avfilter_register_all():注册所有AVFilter。avfilter_graph_alloc():为FilterGraph分配内存。avfilter_graph_create_filter():创建并向FilterGraph中添加一个Filter。avfilter_graph_parse_ptr():将一串通过字符串描述的Graph添加...原创 2020-02-10 23:40:13 · 1444 阅读 · 0 评论 -
fmpeg(ignore)------主要函数=通用+解码+编码
FFmpeg中比较重要的函数以及数据结构FFMpeg 中比较重要的函数以及数据结构如下:1. 数据结构:(1) AVFormatContext由于AVFormatConext结构包初始化过程:分步完成(部分变量无值可用→没法初始化)声明: 1.编码 AVFormatContext *avformat_alloc_context(void); 或者av_alloc_format_co...原创 2020-02-10 23:35:45 · 178 阅读 · 0 评论 -
ffmpeg(ignore)---VS2015 搭建fmpeg环境 无法识别__imp____iob_func和 __imp__fprintf
1.去官方下载ffmpeg 可参见:http://ffmpeg.zeranoe.com/builds/包含三个版本:Static、Shared以及DevStatic --- 包含3个应用程序:ffmpeg.exe , ffplay.exe , ffprobe.exe,体积都很大,相关的DLL已经被编译到exe里面去了。Shared --- 除了ffmpeg.exe , ffplay....原创 2020-02-16 19:16:24 · 207 阅读 · 0 评论 -
ffmpeg---ffmpeg + x264 + fdk-aac + mp3lame 安装
下载ffmpeg①从ffmpeg官网:http://ffmpeg.org/download.html下载最新的ffmpeg安装包,然后通过如下命令解压:tar jxf ffmpeg-2.5.3.tar.bz2②用Git从github下载配置进入到ffmpeg目录开始配置ffmpeg./configure --enable-shared --prefix=/usr/local/ffmpe...原创 2020-02-02 15:47:58 · 523 阅读 · 0 评论 -
ffmpeg--封装格式转换 YUV文件 -> 其他格式(freadpFrame.data[012]->编码成目标格式pkt->写入 + flush_encoder)
修改自最简单的基于FFMPEG的视频编码器(YUV编码为H.264)其他类似的代码:最简单的基于FFmpeg的视频编码器-更新版(YUV编码为HEVC(H.265))最简单的基于FFmpeg的编码器-纯净版(不包含libavformat)流程下面附一张使用FFmpeg编码视频的流程图。使用该流程,不仅可以编码H.264的视频,而且可以编码MPEG4/MPEG2/VP8等等各种FFmpeg支...原创 2019-12-18 11:24:31 · 649 阅读 · 0 评论 -
ffmpeg---最关键的结构体及其关系 +最简单的基于FFmpeg的解码器官方参考http://ffmpeg.org/doxygen/3.1/annotated.html
修改自FFMPEG结构体分析:AVFrameFFMPEG中结构体很多。最关键的结构体可以分成以下几类:a) 解协议(http,rtsp,rtmp,mms)AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。URLProtocol存储输入视音频使用的封装格式。每种协议都对应一个URLProtocol结构。(注意:FFMPEG...原创 2019-12-19 08:45:41 · 226 阅读 · 0 评论 -
ffmpeg(ignore)------显示相关-SDL及函数 1.2 2.0版本
SDL2源代码分析获取访问SDL的官方网站(http://www.libsdl.org/),单击左侧的“Download”进入下载页面,然后下载“SourceCode”栏目下的文件就可以了。SDL根据系统的不同调用不同的API完成相应的功能#include <SDL/SDL.h>int screen_w,screen_h; SDL_Surface *screen; S...原创 2019-12-19 08:52:18 · 201 阅读 · 0 评论 -
ffmpeg(ignore)--只改封装(不改编码) 转换FVL(h264+aac)→AVI(h264+aac)
/*本程序实现了视频封装格式之间的转换。*需要注意的是本程序并不改变视音频的编码格式。*/#include "stdafx.h" extern "C"{#include "libavformat/avformat.h"}; int _tmain(int argc, _TCHAR* argv[]){ AVOutputFormat *ofmt = NULL; ...原创 2019-12-19 08:44:12 · 1058 阅读 · 0 评论 -
ffmpeg(ignore)----摄像头设备相关 win和linux上摄像头所使用的不同设备 vfw和directshow---video4linux2, v4l2
linux: video4linux2, v4l2windows: vfw和directshow.(directshow的架构很独立)前期准备:1.虚拟机接管摄像头: 虚拟机菜单栏中选择“虚拟机(M)”->选择“可移动设备”->选择“xxxx Camera”->选择“连接(断开与主机连接)”2.apt install libv4l-dev*安装V4L(否则可能会找...原创 2019-12-19 10:35:17 · 366 阅读 · 0 评论 -
ffmpeg日志系统 av_log()是FFmpeg中输出日志的函数
修改自雷霄骅FFmpeg源代码简单分析:日志输出系统(av_log()等)一般使用Error, Warning, Debug3个级别即可(见下面的颜色)。AV_LOG_QUIET核心函数只有一个:av_log()。一般情况下FFmpeg类库的源代码中是不允许使用printf()这种的函数的,所有的输出一律使用av_log()。av_log()的声明位于libavutil\log.h...原创 2019-12-23 15:32:22 · 537 阅读 · 0 评论 -
ffmpeg-jpeg图片格式详解
jpg/jpeg是24位的图像文件格式,也是一种高效率的压缩格式JPEG格式可以分为1、标准JPEG:只有图片完全被加载和读取完毕之后,才能看到图片的全貌2、渐进式JPEG:(标准的改进)首先呈现图片的大概外貌,然后再逐渐呈现具体的细节部分3、JPEG2000三种格式:作为JPEG的升级版,JPEG2000的压缩率比标准JPEG高约30%,同时支持有损压缩和无损压缩。它还支持渐进式传输,...原创 2019-12-24 15:21:20 · 3190 阅读 · 0 评论 -
ffmpeg---旧函数avcodec_encode_video2要延迟几帧才能got_packet-----设置参数av_opt_set
ffmpeg 编码延迟问题(编码后avcodec_encode_video2要延迟几帧才能got_packet)// gcc temp.c -o 2 -I/root/ffmpeg/include/ -L/root/ffmpeg/lib -lavcodec -lavformat -lavdevice -lavutil -lswscale -lswresample //没有包含x264库//...原创 2020-01-18 08:33:02 · 1171 阅读 · 0 评论