ffplay h264 ts seek流程分析

news/2024/5/20 3:58:46 标签: ffmpeg, h.264, ts

ffplay的流程:
1、seek_flag为seek_by_bytes时,按照估计的pos执行avio_seek到位置。
2、read_thread这个读输入的线程开始av_read_frame,读取pkt。然后把pkt执行packet_queeu_put操作放入is->videoq和is->audioq等。
3、同时还有audio_thread video_thread等进行解码的线程。
video_thread调用decoder_decode_frame来解码视频帧。先从d->queue中取pkt,调用packet_queue_get函数得到pkt,然后将pkt数据输入到avcodec_decode_video2中进行解码。调用decode函数将输入的pkt解码成picture。
4、H264_decode_frame:
其中decode_nal_units,parse pkt得到nal,分别进行解码。
output_frame(h, pict, h->next_output_pic);进行输出。
但是output_frame在h->next_output_pic不为NULL且h->next_output_pic->recovered不为0的情况下才会执行。
Decode_nal_units之后h->next_output_pic不为NULL。
另外一个条件h->next_output_pic->recovered依赖于h->frame_recovered.
而h->frame_recovered变量在一开始h264_init_context中初始化为0.
Seek之后flush(ff_h264_flush_change)操作也会把fram_recovered置为0。
遇到NAL_IDR_SLICE才会改变frame_recovered为1。
因此直到解码完一个I帧之后才会开始output_frame。
总结下来:
H264 ts文件seek之后,从seek的位置开始读取pkt进行解码,但是直到解码到I帧才会开始输出。

以上过程用的FFmpeg代码版本是3.2.


http://www.niftyadmin.cn/n/1795736.html

相关文章

FFmpeg中mov/mp4 seek分析

使用的FFmpeg代码版本为3.2. 1、mov包括mov,mp4,m4a,3gp,3g2,mj2 2、ffplay播放mp4文件,seek之后发现seek_flags为0,在av_seek_frame的时候设置flags为1即AVSEEK_FLAG_BACKWARD。 3、seek_frame_internal调用av_find_default_stream_index得到index一般是…

这篇为我在抽烟的朋友转、希望你们爱惜自己

谁都知道香烟是有害的,可是大多数人只是知道烟的危害只是烟草的尼古丁,其实,真正的香烟的剧毒,藏在“过滤嘴材料”上。 以下我所说的,绝对是真实的:一个在烟草生产行业的朋友,最近向我透露被他们…

FFmpeg中hevc ts文件seek花屏问题

调用FFmpeg库或者使用ffplay播放hevc编码的ts文件时,seek会花屏。会有如下的报错: [hevc 000001e4e2292ac0] Could not find ref with POC 9 [hevc 000001e4e2292ac0] Could not find ref with POC 8 [hevc 000001e4e2292ac0] Could not find ref w…

div+css布局中父层div高度不随子div高度变化的解决方法(clear属性使用方法)

为什么80%的码农都做不了架构师?>>> 在我们布局的时候经常会遇到一种情况就是一个div下面放了两个div,这两个div使用了float浮动后,父层div的高度不跟着两个子div的高度变化,始终是一个字符的高度。 问题截图&#xf…

C_dataGridview导出excel

C# DataGridView控件中数据导出到Excel 方法一: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Reflection;…

win10+visual studio 2015 安装调试opencv(4.2.0)

一、下载opencv4.2.0: opencv官网版本发布地址: https://opencv.org/releases/ 选择需要下载的版本,本文下载的是opencv-4.2.0-vc14_vc15.exe 二、安装vs2015: 下载的opencv可以支持vs2015或vs2017,其中vc14对应…

用UltraISO把硬盘文件制作成ISO格式

转自:https://wenku.baidu.com/view/0052c88dcc22bcd126ff0cbf.html 用UltraISO把硬盘文件制作成ISO格式方法: 制作硬盘ISO文件步骤一 制作硬盘ISO文件步骤二 制作硬盘ISO文件步骤三 制作硬盘ISO文件步骤四

衡量视频质量的新标准ITU-T P.1203、P.1204

简介 ITU-T于2020年初提出了两个创新且宣称高度准确的指标,这两个模型分别是: ITU-T Rec. P.1203,该指标同时考虑视频质量和QoS(例如延迟和卡顿)两个因素,用于计算HTTP自适应流(HAS&#xff09…