流媒体
文章平均质量分 80
一切归于平静
这个作者很懒,什么都没留下…
展开
-
ffplay源码分析7-播放控制
7. 播放控制7.1. 暂停/继续暂停/继续状态的切换是由用户按空格键实现的,每按一次空格键,暂停/继续的状态翻转一次。7.1.1 暂停/继续状态切换函数调用关系如下:main() -->event_loop() -->toggle_pause() -->stream_toggle_pause()stream_toggle_pause()实现状态翻转:/* pause or resume the video */static void stream转载 2022-01-01 23:01:21 · 423 阅读 · 0 评论 -
ffplay源码分析6-音频重采样
6. 音频重采样FFmpeg解码得到的音频帧的格式未必能被SDL支持,在这种情况下,需要进行音频重采样,即将音频帧格式转换为SDL支持的音频格式,否则是无法正常播放的。音频重采样涉及两个步骤:打开音频设备时进行的准备工作:确定SDL支持的音频格式,作为后期音频重采样的目标格式 音频播放线程中,取出音频帧后,若有需要(音频帧格式与SDL支持音频格式不匹配)则进行重采样,否则直接输出6.1 打开音频设备音频设备的打开实际是在解复用线程中实现的。解复用线程中先打开音频设备(设定音频回调函数供SD转载 2022-01-01 22:59:19 · 493 阅读 · 0 评论 -
ffplay源码分析5-图像格式转换
5. 图像格式转换FFmpeg解码得到的视频帧的格式未必能被SDL支持,在这种情况下,需要进行图像格式转换,即将视频帧图像格式转换为SDL支持的图像格式,否则是无法正常显示的。图像格式转换是在视频播放线程(主线程中)中的upload_texture()函数中实现的。调用链如下:main() -- >event_loop -->refresh_loop_wait_event() -->video_refresh() -->video_display() -->转载 2022-01-01 22:57:02 · 408 阅读 · 0 评论 -
ffplay源码分析4-音视频同步
4. 音视频同步音视频同步的目的是为了使播放的声音和显示的画面保持一致。视频按帧播放,图像显示设备每次显示一帧画面,视频播放速度由帧率确定,帧率指示每秒显示多少帧;音频按采样点播放,声音播放设备每次播放一个采样点,声音播放速度由采样率确定,采样率指示每秒播放多少个采样点。如果仅仅是视频按帧率播放,音频按采样率播放,二者没有同步机制,即使最初音视频是基本同步的,随着时间的流逝,音视频会逐渐失去同步,并且不同步的现象会越来越严重。这是因为:一、播放时间难以精确控制,二、异常及误差会随时间累积。所以,必须要采转载 2022-01-01 22:55:10 · 553 阅读 · 0 评论 -
ffplay源码分析3-代码框架
3. 代码框架本节简单梳理ffplay.c代码框架。一些关键问题及细节问题在后续章节探讨。3.1 流程图3.2 主线程主线程主要实现三项功能:视频播放(音视频同步)、字幕播放、SDL消息处理。主线程在进行一些必要的初始化工作、创建解复用线程后,即进入event_loop()主循环,处理视频播放和SDL消息事件:main() -->static void event_loop(VideoState *cur_stream){ SDL_Event eve.转载 2022-01-01 22:50:26 · 349 阅读 · 0 评论 -
ffplay源码分析2-数据结构
2. 数据结构几个关键的数据结构如下:2.1 struct VideoStatetypedef struct VideoState { SDL_Thread *read_tid; // demux解复用线程 AVInputFormat *iformat; int abort_request; int force_refresh; int paused; int last_paused; int queue_attach转载 2022-01-01 22:48:41 · 152 阅读 · 0 评论 -
音视频同步原理及实现
本文主要描述音视频同步原理,及常见的音视频同步方案,并以代码示例,展示如何以音频的播放时长为基准,将视频同步到音频上以实现视音频的同步播放。内容如下:1.音视频同步简单介绍2.DTS和PTS简介2.1I/P/B帧2.2时间戳DTS、PTS3.常用同步策略4.音视频同步简单示例代码1.音视频同步简单介绍对于一个播放器,一般来说,其基本构成均可划分为以下几部分:数据接收(网络/本地)->解复用->音视频解码->音视频同步->音视频输出。基本框架如下图所示:为什么需转载 2021-12-26 21:59:33 · 922 阅读 · 1 评论 -
FFMPEG结构体:AVPacket解析
因为FFmpeg更新的比较快,API也会跟着有所变动,所以声明一下,本文使用的FFmpeg版本为V3.3.5。1.AVPacket简介AVPacket是FFmpeg中很重要的一个数据结构,它保存了解复用(demuxer)之后,解码(decode)之前的数据(仍然是压缩后的数据)和关于这些数据的一些附加的信息,如显示时间戳(pts),解码时间戳(dts),数据时长(duration),所在流媒体的索引(stream_index)等等。对于视频(Video)来说,AVPacket通常包含一个压缩的F转载 2021-11-25 15:23:41 · 1300 阅读 · 0 评论 -
个人关于FFmpeg编解码中涉及到的pts总结(关于时间戳和时间基)
想要播放一个视频,需要拿到视频画面和音频数据,然后对比一下他们的时间,让他们的时间对齐,再放入显示器和扬声器中播放。在FFmpeg里,对于视频,它把画面一帧一帧增加认为是一个单元,因此对于视频来说,一个帧率为10帧每秒的视频,那么在1秒内它就是1 2 3 4 5 6 7 8 9 10这样的一个计数,可以简单地认为这里的1 2 3 4 5 6 7 8 9 10就是其中的一个时间戳(pts)解码部分:AVStream.time_base是AVPacket中pts和dts的时间单位。解码时通过av_read_转载 2021-10-11 16:53:19 · 3428 阅读 · 0 评论 -
ffmpeg编译命令
1、ffmpeg编译命令./configure --prefix=/usr/local --enable-shared --enable-libx264 --enable-libwebp --enable-nonfree --enable-gpl --enable-libfreetype --enable-libfontconfig --enable-libfribidi --enable-debug --disable-asm --disable-stripping --enable-open原创 2021-09-28 19:04:06 · 309 阅读 · 0 评论 -
海康摄像头PS流格式解析(RTP/PS/H264)
概览上文记录了如何模拟 SIP Server 和 SIP Client 基于 GB28181 从海康 IPC 摄像头获取 PS 流,本篇文章结合实例,用于记录分析推送过来的 PS 流的内容及结构。上图为国标 GB28181 关于数据封装说明,能够接入 GB28181 平台的 IPC 符合上述标准。先行准备如果已经能够接收到海康的 RTP 流,那么用 wireshark 来看就行,或者下载我本次使用的二进制数据,它就是 wireshark 的 Payload 部分:hikvision-ps转载 2021-07-19 10:31:17 · 7865 阅读 · 0 评论 -
流媒体:RTMP 协议完全解析
转自:流媒体:RTMP 协议完全解析 - 知乎 (zhihu.com)背景RTMP(Real Time Messaging Protocol) 是由 Adobe 公司基于 Flash Player 播放器对应的音视频 flv 封装格式提出的一种,基于TCP 的数据传输协议。本身具有稳定、兼容性强、高穿透的特点。常被应用于流媒体直播、点播等场景。常用于推推流方(主播)的稳定传输需求。一、RTMP 的传输:消息块 & 消息封包传输RTMP 协议为了维持稳定连续传递,避免单次传输数据量问题,转载 2021-07-19 09:49:43 · 1495 阅读 · 0 评论 -
如何将HLS延时缩短至4秒,HLS+技术详解
转自:在直播应用中,RTMP 和 HLS 是两种较为成熟且广泛应用的流媒体协议,基本上可以覆盖所有客户端。RTMP 是互联网 TCP/IP 五层体系结构中应用层的协议,主要优势就是实时性高,基本可将直播延时控制在3秒以内,因此广泛应用于低延时直播。HLS是由 Apple 公司实现的基于 HTTP 的流媒体传输协议,拥有性能高、完美支持 iOS等优势。相比于 RTMP 协议,HLS 无需在移动端安装 APP,同时兼容HTML5,因此在移动直播的传播和体验上都拥有巨大的优势。不过HLS 的实时性较差,业转载 2021-06-11 16:48:23 · 1192 阅读 · 0 评论 -
关于hls切片和rtmp视频源的gop有关
二.GoP性能调优分析Group of Picture(以下简称GoP)顾名思义就是有一组帧组成的一个序列。Wikipedia上给出的一个图简单的解释了GoP是怎么回事GoP由I帧开始,后面跟随者一组B帧和P帧,直到下一个I帧之前的帧为一个GoP。了解了GoP之后,就会发现播放器只有在拿到某个GoP中的I帧之后才能播放视频。对于GoP来说,编码器都是可以进行设置的,像OBS,ffmpeg等程序可以通过对应的设置和参数对视频的GoP进行设置。那么引出了一个问题:GoP到底应该设置多大...转载 2021-06-11 16:42:29 · 970 阅读 · 0 评论 -
HLS协议解析
转自:https://www.cnblogs.com/jimodetiantang/p/9133564.html转载 2021-06-02 18:38:41 · 1850 阅读 · 0 评论 -
m3u8 文件格式详解
简介M3U8 是 Unicode 版本的 M3U,用 UTF-8 编码。"M3U" 和 "M3U8" 文件都是苹果公司使用的 HTTP Live Streaming(HLS) 协议格式的基础,这种协议格式可以在 iPhone 和 Macbook 等设备播放。上述文字定义来自于维基百科。可以看到,m3u8 文件其实是 HTTP Live Streaming(缩写为 HLS) 协议的部分内容,而 HLS 是一个由苹果公司提出的基于 HTTP 的流媒体网络传输协议。HLS 的工作原理是把整个流分转载 2021-06-02 15:01:00 · 3298 阅读 · 0 评论 -
RTP协议分析
转自:https://blog.csdn.net/u011006622/article/details/80675054RTP协议分析第1章.RTP概述1.1.RTP是什么RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本)。RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Proto...转载 2021-05-07 15:27:35 · 155 阅读 · 0 评论 -
FLV协议5分钟入门浅析
转自:https://www.cnblogs.com/chyingp/p/flv-getting-started.htmlFLV协议简介FLV(Flash Video)是一种流媒体格式,因其体积小、协议相对简单,很快便流行开来,并得到广泛的支持。常见的HTTP-FLV直播协议,就是使用HTTP流式传输通过FLV封装的音视频数据。对想要了解HTTP-FLV的同学来说,了解FLV协议很有必要。概括地说,FLV 由 FLV header 跟 FLV file body 两部分组成,而 FLV fi转载 2021-04-23 15:51:03 · 565 阅读 · 0 评论 -
流媒体基础知识TS流 PS流 ES流区别
转自:https://blog.csdn.net/xswy1/article/details/81609427IP数据报有首部和数据两部分组成的,首部的前一部分是固定长度20字节,是所有IP数据报必须具有的。首部包括:总长度、标识、MF、DF、片偏移。 数字信号实际传送的是数据流,一般数据流包括以下三种: (1)ES流(Elementary Stream):也叫基本码流,包含视频、音频或数据的连续码流。 (2)PES流(Packet Elementary Stre...转载 2021-04-07 18:47:24 · 686 阅读 · 0 评论 -
RTP协议分析
转自:https://blog.csdn.net/u011006622/article/details/80675054第1章.RTP概述1.1.RTP是什么RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本)。RFC3550不仅定义了RTP,而且定义了配套的相关协议RTCP(Real-time Transport Control Protocol,即实时传输...转载 2020-10-26 16:55:06 · 283 阅读 · 0 评论 -
H.323协议分析
转自:https://blog.csdn.net/jzjhome/article/details/75431714第1章.文档说明H.323是ITU-T提出的一个建议书。它是一个协议族,用来在IP分组交换网上实现语音通信、视频通信和数据会议。H.323当前已发展到了第6个版本。H.323第6版本的建议书长达300多页,限于篇幅,不可能一一叙述。为了对H.323有个直观的了解,本文首先介绍H.323协议族的组成,这个部分主要介绍协议族中相关协议的功能;然后介绍H.323的各个组件,这个部...转载 2020-09-28 19:03:05 · 2353 阅读 · 0 评论 -
RTP/RTCP协议解析
RTP协议实时传输协议RTP(Real-time Transport Protocol)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的,后在RFC3550中进行更新。 国际电信联盟ITU-T也发布了自己的RTP文档,作为H.225.0,但是后来当IETF发布了关于它的稳定的标准RFC后就被取消了。它作为因特网标准在[ RFC 3550 ]有详细说明.RTP协议详细说明了在互联网上传递音频和视频的标准数...转载 2020-09-28 18:43:26 · 956 阅读 · 0 评论 -
RSVP协议介绍
Internet是一种互连网络,网络中存在着大量的中间节点(即路由器)。如果用户使用无连接协议来传输数据流,则该数据流的各个数据报在通过中间节点转发时可能会产生两个问题,一是各个数据报的转发路径不同,并非顺序到达目的端,有些数据报可能会延迟到达;二是数据报在中间节点排队等待转发时,其排队时间是不确定的,并且中间节点因资源缺乏而发生拥塞时,将会采取丢包策略来疏导交通,这对于端到端通信来说将意味着传输延迟和延迟抖动。这些对多媒体通信来说都是不利的,严重影响端到端多媒体通信的服务质量。解决这个问题的基本方法是端.转载 2020-09-28 17:36:52 · 8418 阅读 · 0 评论 -
RTSP协议详解
一、RTSP协议介绍什么是rtsp?RTSP协议以客户服务器方式工作,,如:暂停/继续、后退、前进等。它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,因此 RTSP 又称为“因特网录像机遥控协议”。RTSP(Real-Time Stream Protocol)是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似。 是TCP/IP协议体系中的一个应用层协议, 由哥伦比亚大学, 网景和RealNetworks...转载 2020-09-28 14:07:09 · 2238 阅读 · 0 评论