ffmpeg学习
文章平均质量分 56
陈纪建
关注行业动态,找出最适合自己的发展道路
展开
-
ffmpeg多个不同帧率不同格式的视频合并
相同视频编码格式之间是很好合并的,只需要按照流程打开文件,然后一帧一帧的读取,连生成视频的参数都不需要变得,唯一需要的就是改下pts就好了但是这块我一般不会拷贝原有的视频流参数,因为那样时间戳不好控制,不同编码格式的视频合并就需要先解码每一帧数据,解码成最原始的YUV格式,然后在编码成你想要的编码格式。这样几乎所有的数据都一样了FFMPEG解码流程: 1. 注册所有容器格式和CODE原创 2017-02-07 17:19:06 · 16614 阅读 · 3 评论 -
Unbantu 编译ffmpeg Android版本库
首先需要去FFmpeg的官网http://www.ffmpeg.org/去下载FFmpeg的源码,目前的版本号为FFmpeg3.3(Hilbert)。下载的文件为压缩包,解压后得到ffmpeg-3.3目录。修改ffmpeg-3.3的configure文件:# 原来的配置内容:SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJO原创 2017-06-07 11:18:23 · 354 阅读 · 0 评论 -
FFmpeg跳转函数调用
调用avformat_seek_file后需要调用avcodec_flush_buffers来清除解码器缓存原创 2017-06-08 17:46:47 · 828 阅读 · 1 评论 -
FFMPEG 硬件解码
要: 对FFmpeg多媒体解决方案中的视频编解码流程进行研究。结合对S3C6410处理器视频硬件编解码方法的分析,阐述了嵌入式Linux下基于FFmpeg的H.264视频硬件编解码在S3C6410处理器上的实现方法,为嵌入式多媒体开发提供参考。关键词: 计算机应用技术;嵌入式系统;FFmpeg;S3C6410;视频硬件编解码;H.264Video Hardware Codec Based转载 2017-07-10 14:25:56 · 516 阅读 · 0 评论 -
libjpeg库编码图片为jpg(ffmpeg解码视频存储图片:RGB格式位图压缩为jpg格式图片)
压缩流程(结合网上大家的资料以及libjpeg库的example.c示例:都大同小异):1、如何分配和初始化一个jpeg压缩对象: 在libjpeg中jpeg压缩对象被定义为struct jpeg_compresss_struct这样一个结构体(在这个结构体中有一些子结构体,而这些子结构体是通过malloc来分配的); 另外我们还需要定义一个错误处转载 2017-07-19 17:18:32 · 2049 阅读 · 0 评论 -
ffmpeg + SDL2 实现的视频播放器「视音频同步」
日期:2016.10.8 作者:isshe github:github.com/isshe 邮箱:i.sshe@outlook.com 平台:ubuntu16.04 64bit前言这个程序使用的视音频同步方法是视频同步音频。接下来大概还会学习其他方法,不过下一步应该是先完善功能,实现暂停,播放之类的。这个版本中是用的是较新的两个解码函数avcodec_send_转载 2017-11-17 14:10:24 · 1827 阅读 · 0 评论 -
ffmpeg视音频同步
视音频同步的简单介绍DTS 和 PTS计算视频中Frame的显示时间获取Audio clock(audio的播放时长)将视频同步到音频上,实现视音频同步播放视音频同步简单介绍一般来说,视频同步指的是视频和音频同步,也就是说播放的声音要和当前显示的画面保持一致。想象以下,看一部电影的时候只看到人物嘴动没有声音传出;或者画面是激烈的战斗场景,而声音不是枪炮声却是人物说话的声音,这是非常差的一种体验。在...转载 2017-12-09 17:03:33 · 240 阅读 · 0 评论 -
directshow原理分析之filter到filter的连接
Filter是Directshow中最基本的概念。Directshow使用filter graph来管理filter。filter graph是filter的容器。Filter一般由一个或者几个Pin组成。filter之间通过Pin来连接,组成一条链。PIN也是一种COM组件,每一个PIN都实现了IPin接口。试图链接的两个Pin必须在一个filter graph中。转载 2017-12-11 17:39:22 · 434 阅读 · 0 评论 -
DirectShow简介
3.1 DirectShow 的功用(1) 保证数据量庞大的多媒体数据处理的高效性; (2) 时刻保持音频和视频的同步; (3) 用简单的方法处理复杂的媒体源问题,包括本地文件,计算机网络,广播电 视以及其他数码产品; (4) 处理各种各样的媒体格式问题,包括 AVI,ASF,MPEG,DV,MOV 等; (5) 支持目标系统中不可预知的硬件; DirectShow 的设计初衷就是尽量要让转载 2017-12-11 18:07:25 · 5268 阅读 · 1 评论 -
ffmpeg怎么样处理网络流
#include "utils.h"#include <pthread.h>#include <libavcodec/avcodec.h>#include <libavformat/avformat.h>UdpQueue recvqueue;UdpParam udpParam;//注册av_read_frame的回调函数,这里只是最简处理,实际应用中应加上出错处...转载 2018-04-11 16:32:41 · 376 阅读 · 0 评论 -
rtsp获取视频帧 ffmpeg解码h264数据 D3D显示yv12数据
代码下载地址: http://download.csdn.net/detail/mtour/8302907本代码实现了 通过rtsp协议获取视频流数据,通过ffmpeg解码为yv12数据,通过D3D进行图像显示整个程序包含 RtspStream模块 H264Decoder模块 D3D模块RtspStream模块源码可在之前的文章中找到。...转载 2018-06-04 17:14:40 · 1235 阅读 · 0 评论 -
FFmpeg滤镜实现区域视频增强 及 D3D实现视频播放区的拉大缩小
1.区域视频增强 FFmpeg滤镜功能十分强大,用滤镜可以实现视频的区域增强功能。 用eq滤镜就可以实现亮度、对比度、饱和度等的常用视频增强功能。 推荐两篇写得不错的博文: (1)ffmpeg综合应用示例(二)——为直播流添加特效 - 张晖的专栏 - 博客频道 - CSDN.NET; (2)ffmpeg 滤镜及其效果 - 党玉涛 - 博客频道 - CS...转载 2018-06-05 18:38:59 · 667 阅读 · 0 评论 -
ffmpeg编程推流器,收流器实现直播功能
基于FFmpeg的推流器(simplest ffmpeg streamer)。推流器的作用就是将本地的视频数据推送至流媒体服务器。本文记录的推流器,可以将本地的 MOV / AVI / MKV / MP4 / FLV 等格式的媒体文件,通过流媒体协议(例如RTMP,HTTP,UDP,TCP,RTP等等)以直播流的形式推送出去。目前主要的推流器如下:TMP流媒体服务器(例如 Flash Media ...转载 2018-09-17 09:43:09 · 1211 阅读 · 0 评论 -
Android中使用ffmpeg编码进行rtmp推流
要理解RTMP推流,我们就要知道详细原理,这方面的文章有很多,我也看到过学习过很多这样的文章,但是很多都没有详细的去给大家展示,都没有一个完整的流程,使得初学者难以弄懂其中的原理,下面我将详细的来给大家介绍RTMP推流原理以及如何推送到服务器,首先我们了解一下推流的全过程:image我们将会分为几个小节来展开:一. 本文用到的库文件:1.1 本项目用到的库文件如下图所示,用到了f...转载 2018-09-10 10:08:02 · 3118 阅读 · 2 评论 -
ffmpeg实现H264压缩并且推流至RTSP
一、整体思路 1 利用ffmpeg读取出视频的一帧图像 存储在pFrame中 2 利用ffmpeg进行格式转换 sws_scale 3 利用ffmpeg编码存在pFrame中的图像 H264压缩 4 利用ffmpeg的 av_interleaved_write_frame( ) 写入到rtsp端 5 辅助部分:解码、编码初始化,QT...转载 2018-09-13 11:28:16 · 13742 阅读 · 2 评论 -
ffmpeg中调用解码器过程
该文将以X264编码器为例所有编码器和解码器都是在avcodec_register_all()函数中注册的。从中可以找到视频的H264解码器和X264编码REGISTER_DECODER(H264, h264);REGISTER_ENCODER(LIBX264, libx264);#define原创 2017-06-06 11:17:56 · 1942 阅读 · 0 评论 -
ffmpeg RTP over TCP
char filepath[]="rtsp://admin:jjchen12345678@192.168.3.25:554/h264/ch1/main/av_stream";AVDictionary *optionsDict = NULL;av_register_all();avformat_network_init();pFormatCtx = avformat_alloc_原创 2017-03-16 17:48:27 · 2057 阅读 · 0 评论 -
FFmpeg 编码器AVCodecContext参数设置
AVCodecContext * pCodecCtxEnc; AVCodec *codec;//编码器codec = avcodec_find_encoder(AV_CODEC_ID_H264);//h.264编码器查找 /*AVCodecContext 相当于虚基类,需要用具体的编码器实现来给他赋值*/ pCodecCtxEnc=avcodec_alloc_context3转载 2017-02-08 09:28:35 · 4166 阅读 · 0 评论 -
FFmpeg缩放swscale函数
利用ffmpeg进行图像数据格式的转换以及图片的缩放应用中,主要用到了swscale.h文件中的三个函数,分别是: struct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH,转载 2017-02-10 15:45:41 · 2439 阅读 · 0 评论 -
ffmpeg时间戳设置以及含义
FFMPEG的很多结构中有AVRational time_base;这样的一个成员,它是AVRational结构的typedef struct AVRational{ int num; /// int den; ///} AVRational;AVRational这个结构标识一个分数,num为分数,den为分母。实际上time_base的意思就是转载 2017-01-22 19:21:35 · 5788 阅读 · 0 评论 -
ffmpeg 编码器AVCodecContext 的配置参数
1、先说一些基本的API[cpp] view plaincopyAVFormatContex * pFormatCtxEnc; AVCodecContext * pCodecCtxEnc; AVStream * video_st; AVOutputFormat * pOutputFormat; pOut转载 2017-01-24 14:15:31 · 638 阅读 · 0 评论 -
ffmpeg 将图片合成视频以及将内存数据合成视频
av_register_all();//初始化解码器和复用器AVFormatContext* ofmt_ctx = NULL;//其包含码流参数较多,是一个贯穿始终的数据结构,很多函数都要用到它作为参数//首先创建一个封装格式,avformat_alloc_output_context2(&ofmt_ctx, NULL, NULL, out_filenam原创 2017-01-24 17:30:09 · 5109 阅读 · 5 评论 -
解析PSNR和SSIM
PSNR(Peak Signal to Noise Ratio)峰值信噪比,一种全参考的图像质量评价指标。其中,MSE表示当前图像X和参考图像Y的均方误差(Mean Square Error),H、W分别为图像的高度和宽度;n为每像素的比特数,一般取8,即像素灰阶数为256. PSNR的单位是dB,数值越大表示失真越小。PSNR是最普遍和使用最为广泛的一种图像客观评价指标,然而转载 2017-03-17 17:11:38 · 1732 阅读 · 0 评论 -
给RGB加上BMP文件头
实现过程:A、写入文件头B、写入信息头C、写入图像RGB数据(无调色板)//////////////////////////////////////////////////////////////////////////////////////////程序在VC6.0下实现: [cpp] view plain copy转载 2017-03-20 09:49:58 · 756 阅读 · 0 评论 -
ffmpeg源码分析一
ffmpeg源码分析一:概述 (转1)原帖地址:http://blog.csdn.net/austinblog/article/details/24800381 首先先看ffmpeg.c文件,有类似于如下的一些变量: InputStream **input_streams = NULL;int nb_inp转载 2017-03-11 22:23:30 · 310 阅读 · 0 评论 -
ffmpeg源码分析二:main函数和transcode函数 (转2)
ffmpeg源码分析二:main函数和transcode函数 (转2)原帖地址:http://blog.csdn.net/austinblog/article/details/24804455 首先从main函数看起,关键解释部分已加注释,该函数在ffmpeg.c文件中。代码如下: int main(int argc, char **argv){转载 2017-03-11 22:24:08 · 290 阅读 · 0 评论 -
ffmpeg源码分析三:transcode_init函数 (转3)
ffmpeg源码分析三:transcode_init函数 (转3)原帖地址:http://blog.csdn.net/austinblog/article/details/25061945 transcode_init()函数是在转换前做准备工作的。下面看看其源代码: static int transcode_init(void){ int ret转载 2017-03-11 22:24:43 · 268 阅读 · 0 评论 -
ffmpeg源码分析四:transcode_step函数 (转4)
ffmpeg源码分析四:transcode_step函数 (转4)原帖地址:http://blog.csdn.net/austinblog/article/details/25099979 该函数的主要功能是一步完整的转换工作,下面看看源代码: static int transcode_step(void){ OutputStream *ost;转载 2017-03-11 22:25:17 · 312 阅读 · 0 评论 -
ffmpeg源码分析五:ffmpeg调用x264编码器的过程分析 (转5)
ffmpeg源码分析五:ffmpeg调用x264编码器的过程分析 (转5)原帖地址:http://blog.csdn.net/austinblog/article/details/25127533 该文将以X264编码器为例,解释说明FFMPEG是怎么调用第三方编码器来进行编码的。 所有编码器和解码器都是在avcodec_register_all()函数中转载 2017-03-11 22:25:44 · 247 阅读 · 0 评论 -
ffmpeg常用基本命令(转)
ffmpeg常用基本命令(转)【FFmpeg】FFmpeg常用基本命令 1.分离视频音频流ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流2.视频解复用转载 2017-03-11 22:27:22 · 201 阅读 · 0 评论 -
ffmpeg强制使用TCP方式读取rtsp流
ffmpeg强制使用TCP方式读取rtsp流ffmpeg强制使用TCP方式处理rtsp流,参考网上资料,得知可以使用如下命令:“ffmpeg -rtsp_transport tcp -i rtsp://admin.......”可以是使用抓包工具进行验证一下是否强制使用了TCP方式。参考:https://freshventure.wordpress.com/?s=ffm转载 2017-03-11 22:27:52 · 2247 阅读 · 0 评论 -
从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题 .
近日在做一个分布式转码服务器,解码器是采用开源的ffmpeg,在开发的过程中遇到一个问题:编码延迟多大5、6秒钟,也就是最初编码的几十帧并不能马上取出,而我们的要求是实时编码!虽然我对视频编码方面不是很熟悉,但根据开发的经验,我想必定可以通过设置一些参数来改变这些情况。但我本人接触ffmpeg项目时间并不长,对很多与编解码方面参数的设置并不熟悉,于是google了很久,网上也有相关方面的讨论,说什转载 2017-03-11 22:30:12 · 1793 阅读 · 0 评论 -
ffmpeg关于timebase的理解
ffmpeg关于timebase的理解一:ffmpeg的分层结构写这篇文章的时候先把ffmpeg分层问题大致说明一下,我们按照最常见的 "转码程序" 和 "摄像头采集" 以及 "播放器" 三个模型总结。1:转码转码基本流程:flv格式数据-->h264/aac数据-->yuv/pcm数据-->h264/aac数据-->mp4格式数据。a:我们把转载 2017-03-24 09:13:32 · 566 阅读 · 0 评论 -
FFmpeg简易播放器的实现-最简版
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10040202.html本文为作者原创:https://www.cnblogs.com/leisure_chn/p/10040202.html,转载请注明出处基于FFmpeg和SDL实现的简易视频播放器,主要分为读取视频文件解码和调用SDL播放两大部分。本实验仅实现最简单的视频播...转载 2019-05-28 22:50:58 · 1082 阅读 · 0 评论