ffmpeg
sunshineywz
这个作者很懒,什么都没留下…
展开
-
FFmpeg的H.264解码器源代码简单分析:概述
原创 2020-12-06 16:49:35 · 161 阅读 · 0 评论 -
rtp_parse_one_packet
static int rtp_parse_one_packet(RTPDemuxContext *s, AVPacket *pkt, uint8_t **bufptr, int len){ uint8_t *buf = bufptr ? *bufptr : NULL; int flags = 0; uint32_t timestamp; int rv = 0; if (!buf) { .原创 2020-06-09 14:14:15 · 320 阅读 · 0 评论 -
工具使用:利用SRS和FFmpeg搭建流媒体直播和点播系统
问题背景:最近解决一些摄像头上云问题,由于自研播放器有时存在一些播放问题,按照音视频常见问题分析和解决:延时和抖动这篇文章说的定位问题思路,我决定搭建一些RTMP流媒体服务器,供测试用标准播放器如VLC交叉验证。之所以存在这么多奇怪的问题,是因为接上来的摄像头或者平台总是存在一些私有码流或者码流格式不规范导致。下面简单说下RTMP服务器搭建和测试方法,包括FMS和SRS在win和linux下的搭...原创 2020-05-31 15:07:55 · 2185 阅读 · 0 评论 -
simplest_ffmpeg_decoder_pure.c
#if 1/** * 最简单的基于FFmpeg的视频解码器(纯净版) * Simplest FFmpeg Decoder Pure * * 雷霄骅 Lei Xiaohua * leixiaohua1020@126.com * 中国传媒大学/数字电视技术 * Communication University of China / Digital TV Technology * ht...原创 2020-05-31 15:07:06 · 212 阅读 · 0 评论 -
H264-YUV通过RTP接收视频流ffmpeg解码SDL实时播放
写在前面的话写一个简单的播放器,通过RTP接收视频流,进行实时播放。最初,使用ffplay或者vlc接收按照SDP协议文件可以播放视频,但是视频中断后重启,不能正确的解包,时常会出现如下的错误信息。[sdp @ 0x7ffb35034e00] RTP: dropping old packet received too late Last message repeated 15 times使用ffplay播放udp视频。➜ view-show ffplay -protocol_whitel原创 2020-05-31 15:06:16 · 1621 阅读 · 0 评论 -
ffmpeg-----流程图
原创 2020-05-31 15:06:02 · 307 阅读 · 0 评论 -
FFmpeg发送流媒体的命令(UDP,RTP,RTMP)
2. RTP2.1. 发送H.264裸流至组播地址。下面命令实现了发送H.264裸流“chunwan.h264”至地址rtp://233.233.233.223:6666ffmpeg -re -i chunwan.h264 -vcodec copy -f rtp rtp://233.233.233.223:6666>test.sdpffmpeg -re -i test.264 -vcodec copy -f rtp rtp://127.0.0.1:15000 > test.sd原创 2020-05-30 15:11:34 · 1368 阅读 · 0 评论 -
gcc
#! /bin/shgcc simplest_ffmpeg_decoder_pure.cpp -g -o simplest_ffmpeg_decoder_pure.out -I /usr/local/include -L /usr/local/lib -lavcodec -lavutil -lswscale原创 2020-05-30 09:39:46 · 98 阅读 · 0 评论 -
FFmpeg源代码简单分析:makefile
FFmpeg中与Makefile相关的文件FFmpeg中与Makefile相关的文件主要有以下几个:根目录Makefile:最基本的Makefile;config.mak:由configure生成的Makefile,保存了Configure的设置信息;libavXXXX/Makefile:每个类库的Makefile(仅仅设置了几个变量);library.mak:编译类库的Makefile...原创 2020-05-30 09:38:45 · 1987 阅读 · 0 评论 -
FFmpeg源代码简单分析:configure
本文记录FFmpeg的Configure脚本的源代码。Configure一方面用于检测FFmpeg的编译环境,另一方面根据用户配置的选项生成config.mak,config.h文件(可能还有config.asm),提供给Makefile使用。由于FFmpeg的configure脚本很复杂(一个4000-5000行的Shell脚本),难以逐行细致的分析,因此本文简单梳理一下它的结构。PS1:Co...原创 2020-05-30 09:38:28 · 423 阅读 · 0 评论 -
音视频核心技术
原创 2020-02-22 17:47:21 · 408 阅读 · 0 评论 -
最简单的基于FFmpeg的解码器-纯净版(不包含libavformat)
这个播放器调用了FFmpeg中的libavformat和libavcodec两个库完成了视频解码工作。但是这不是一个“纯净”的解码器。该解码器中libavformat完成封装格式的解析,而libavcodec完成解码工作。一个“纯净”的解码器,理论上说只需要使用libavcodec就足够了,并不需要使用libavformat。本文记录的解码器就是这样的一个“纯净”的解码器,它仅仅通过调用lib...原创 2020-05-21 12:15:00 · 4658 阅读 · 0 评论 -
最简单的基于FFmpeg的封装格式处理:视音频分离器(demuxer)
简介打算记录一下基于FFmpeg的封装格式处理方面的例子。包括了视音频分离,复用,封装格式转换。这是第2篇。本文记录一个基于FFmpeg的视音频分离器(Simplest FFmpeg demuxer)。视音频分离器(Demuxer)即是将封装格式数据(例如MKV)中的视频压缩数据(例如H.264)和音频压缩数据(例如AAC)分离开。如图所示。在这个过程中并不涉及到编码和解码。本文记录的程序...原创 2020-05-21 12:14:51 · 393 阅读 · 0 评论 -
FFmpeg源代码简单分析:av_find_decoder()和av_find_encoder()
本文记录FFmpeg的两个API函数:avcodec_find_encoder()和avcodec_find_decoder()。avcodec_find_encoder()用于查找FFmpeg的编码器,avcodec_find_decoder()用于查找FFmpeg的解码器。avcodec_find_encoder()的声明位于libavcodec\avcodec.h,如下所示。/** ...原创 2020-05-21 12:14:32 · 504 阅读 · 0 评论 -
FFMPEG源码分析:avformat_open_input()(媒体打开函数)
本文分析了FFMPEG中的媒体打开函数avformat_open_input()//参数ps包含一切媒体相关的上下文结构,有它就有了一切,本函数如果打开媒体成功, //会返回一个AVFormatContext的实例. //参数filename是媒体文件名或URL. //参数fmt是要打开的媒体格式的操作结构,因为是读,所以是inputFormat.此处可以 //传入一个调用者定义...原创 2020-05-21 12:13:24 · 752 阅读 · 0 评论 -
Avformat_open_input函数的分析之--HTTP篇
接口参数的解析函数的关键函数实现init_input函数ffio_open_whitelist函数ffurl_open_whitelist函数ffurl_connect函数http_open函数http_open_cnx_internal函数1.接口参数的解析首先看函数的声明int avformat_open_input(AVFormatContext **ps, const ...原创 2020-05-21 12:13:09 · 811 阅读 · 0 评论 -
av_probe_input_buffer函数中的数据流向
简介本文主要探索在转码前探测流格式和流信息完成后,怎样将处理过的数据进行转码,而不至于丢失。这个问题实际上就是要探索ffmpeg中的读取数据和缓冲数据系统是如何运作的。了解了这些可以帮助 我们在转码过程中方便的处理数据。各函数探索从内存获取数据的设置方法从内存获取数据时,调用如下AVIOContext * inpb = avio_alloc_context(Buf, BUF_SIZE...原创 2020-05-21 12:02:49 · 870 阅读 · 0 评论 -
在视频交友app开发中,针对延迟能做哪些优化?
试想一下,当你和朋友进行视频聊天时,这时突然画面卡住不动了,而且声音变得断断续续,是不是会感到特别的尴尬?为了避免这些情况,那么在视频交友app开发过程中,针对于延迟,在技术上能对哪些方面进行优化呢?下面就来简单介绍下。一、编码优化首先,确保Codec开启了最低延迟的设置。Codec一般都会有低延迟优化的开关,对于H.264来说其效果尤其明显。另外,编码器一般都会有码控造成的延迟,把它当成编码器和解码器比特流之间的缓存,在不影响视频质量的情况下,将其设置得尽可能小也可以降低延迟。还有,最好不要使用视原创 2020-05-21 11:58:27 · 354 阅读 · 0 评论 -
如何做好 Android 端音视频测试?
在用户眼中,优秀的音视频产品应该具有清晰、低延时、流畅、秒开、抗丢包、高音效等特征。为了满足用户以上要求,网易云信的工程师通过自建源站,在SDK端为了适应网络优化进行QoS优化,对视频编码器进行优化,同时对音频算法进行优化。弱网环境测试网易云信直播项目上线后,出现了音视频卡顿的问题,音视频卡顿现象通常出现在网络条件不是特别理想的情况,一般直播画面频繁出现缓冲标志或者直播画面一卡一卡的现象。造成直播视频卡顿的原因:1、CDN节点覆盖不全:CDN服务器覆盖不足导致区域卡顿、运营商覆盖力度不足导致区域性卡原创 2020-05-21 11:57:45 · 278 阅读 · 0 评论 -
如何正确处理直播过程中的高并发问题
对于爱好观看直播的用户来说,能够如丝般顺滑地浏览视频是一大极致享受。但实际情况是,当某时段大量用户数据涌入(如观看人数上升,弹幕消息爆发等),若并发结构没有优化好,我们很难不遇到画面卡顿的情况。所以在直播系统源码开发过程中,如何正确处理高并发带来的这些卡顿问题呢?一、防盗链处理如果是网页直播间,当前站点没有做防盗链的话,就很容易遭受恶意请求。而过多的恶意请求,会对本身流量就比较大的直播间造成很大负担。比如说有A、B两个直播网站,A站享用了B站的资源,页面嵌入了B站的图片、JS、CSS。A站并不关心B站会原创 2020-05-21 11:57:29 · 2388 阅读 · 0 评论 -
FFmpeg源代码简单分析:avformat_write_header()
打算写两篇文章简单分析FFmpeg的写文件用到的3个函数:avformat_write_header(),av_write_frame()以及av_write_trailer()。其中av_write_frame()用于写视频数据,avformat_write_header()用于写视频文件头,而av_write_trailer()用于写视频文件尾。本文首先分析avformat_write_header()。PS:需要注意的是,尽管这3个函数功能是配套的,但是它们的前缀却不一样,写文件头Header的原创 2020-05-21 09:39:14 · 751 阅读 · 1 评论 -
avio_w8
avio_w8void avio_w8(AVIOContext *s, int b){ av_assert2(b>=-128 && b<=255); *s->buf_ptr++ = b; if (s->buf_ptr >= s->buf_end) flush_buffer(s);}原创 2020-05-21 09:39:00 · 256 阅读 · 0 评论 -
ffmpeg函数库
原创 2020-01-16 21:17:08 · 169 阅读 · 0 评论 -
rtsp程序图
原创 2020-01-16 20:46:05 · 220 阅读 · 0 评论 -
AVFormatContext
原创 2020-01-16 20:41:05 · 130 阅读 · 0 评论 -
ffmpeg框图
原创 2019-12-20 20:29:31 · 234 阅读 · 0 评论 -
FFPlay主要结构
原创 2019-12-20 20:29:05 · 159 阅读 · 0 评论 -
编译ffmpeg下载ffmpeg12curl
编译ffmpeg下载ffmpeg12curl https://ffmpeg.org/releases/ffmpeg-3.1.10.tar.gz -o ffmpeg-3.1.10.tar.gztar -zxvf ffmpeg-3.1.10.tar.gz编译ffmpeg1234cd ffmpeg-3.1.10/./configure --disable-programsmake -j4...原创 2019-09-13 09:25:08 · 290 阅读 · 0 评论 -
分离视频音频流
1.分离视频音频流ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流2.视频解复用ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264...原创 2019-09-13 09:25:47 · 838 阅读 · 0 评论 -
libavformat
libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能,包含demuxers和muxer库。libavcodec:用于各种类型声音/图像编解码。libavutil:包含一些公共的工具函数。libswscale:用于视频场景比例缩放、色彩映射转换。libpostproc:用于后期效果处理。ffmpeg:是一个命令行工具,用...原创 2019-09-13 09:26:21 · 1804 阅读 · 0 评论 -
将mp4文件转换为flv
# 将mp4文件转换为flvffmpeg -i IU.mp4 -acodec aac test.flv -i "1.avi" # 输入文件是-title "Test" # 影片的标题-s 368x208 # 输出的分辨率为368x208,注意片源一定要是16:9的不然会变形-r 29.97 # 帧数-b 1500 # 视频数据流量,用-b xxxx的指令则使用固定码率...原创 2019-09-14 08:59:48 · 793 阅读 · 0 评论 -
FFmpeg是什么
FFmpeg是什么ffmpeg(命令行工具) 是一个快速的音视频转换工具。FFmpeg使用方法ffmpeg [全局选项] {[输入文件选项] -i ‘输入文件’} … {[输出文件选项] ‘输出文件’}主要选项‘-f fmt (input/output)’ 强制输入或输出文件格式。通常,输入文件的格式是自动检测的, 输出文件的格式是通过文件扩展名来进行猜测的,所有该选项大 多数时...原创 2019-09-14 09:00:02 · 7746 阅读 · 0 评论 -
FFprobe使用指南
FFprobe使用指南FFprobe 是什么 ? ffprobe 是一个多媒体流分析工具。它从多媒体流中收集信息,并且以人类和机器可读的形式打印出来。它可以用来检测多媒体流的容器类型,以及每一个多媒体流的格式和类型。它可以作为一个独立的应用来使用,也可以结合文本过滤器执行更复杂的处理。FFprobe 使用示例最简单的使用方式shell ffprobe test.mp4不显示欢迎信息...原创 2019-09-14 09:00:17 · 538 阅读 · 0 评论 -
parse_h26x_desc
HD_RESULT parse_h26x_desc(UINT32 codec, UINT32 src_addr, UINT32 size, BOOL *is_desc){ HD_RESULT r = HD_OK; UINT32 start_code = 0, count = 0; UINT8 *ptr8 = NULL; if (src_addr == 0) { printf("bu...原创 2019-09-14 09:02:28 · 175 阅读 · 0 评论