ffmpeg 硬解hevc文件生成yuv 文件时候 ,丢帧了,因为pts ,dts ,pkt_dts值都无效是怎么回事
时间: 2024-06-12 18:06:10 浏览: 13
这可能是因为ffmpeg硬件解码器无法正确解码HEVC文件,导致输出的帧丢失或错误。这可能是由于硬件解码器与HEVC文件格式不兼容或存在兼容性问题导致的。
另外,PTS(Presentation Time Stamp)、DTS(Decode Time Stamp)和pkt_dts(Packet Decode Time Stamp)是用于时间戳同步的参数。如果它们的值无效,则可能导致视频帧的丢失或错误。
您可以尝试使用其他解码器或使用软解码器来处理HEVC文件,以解决此问题。同时,您也可以尝试更新ffmpeg版本或升级您的硬件设备,以获得更好的兼容性和性能。
相关问题
ffmpeg 硬解时候pkt_dts应该如何设置
ffmpeg 硬解时,pkt_dts(packet的dts)应该设置为解码后的视频帧的时间戳。这个时间戳通常是从解码器中获取的,可以通过调用`AVFrame->pkt_dts`来获取。
如果解码器没有提供pkt_dts信息,则可以通过计算pkt_pts(packet的presentation time stamp)和pkt_duration(packet的时长)来估算pkt_dts,例如:
```
pkt_dts = pkt_pts - pkt_duration;
```
注意,对于某些特殊格式,如MPEG-2 TS,可能需要额外的处理来确定pkt_dts。在这种情况下,建议查阅相关文档或参考其他现有的实现。
ffmpeg 硬解时候AVFrame->pkt_dts如何计算
在FFmpeg中,硬件解码器解码出来的AVFrame的pkt_dts字段是通过硬件解码器的输出时间戳进行计算的。硬件解码器会根据输入的时间戳和输出的时间戳进行同步,然后将输出的时间戳填充到AVFrame的pkt_dts字段中。
具体来说,硬件解码器会根据输入的时间戳和输出的时间戳之间的差异来计算pkt_dts字段。如果输入的时间戳为pts,输出的时间戳为dts,则pkt_dts字段的值为dts - (pts - dts)。也就是说,pkt_dts字段表示的是输出时间戳相对于输入时间戳的偏移量。
需要注意的是,不同的硬件解码器可能有不同的时间戳计算方式,因此具体的计算方法可能会有所不同。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)