当前位置: 首页 > 知识库问答 >
问题:

为什么我在编码到H264时丢失了PTS信息?

乜嘉悦
2023-03-14

我有一个视频文件,与此视频流:

ffmpeg-i原创。avi

流#0:0:视频:h264(主)(h264/0x34363248),yuv420p(电视,bt709,渐进式),1920x1080[SAR 1:1 DAR 16:9],4204kb/s,59.94fps,59.94tbr,59.94tbn,59.94tbc

我可以通过运行获得PTS信息:

ffprobe-v0-of csv=p=0-select_streams v-show_entries packet=pts_time original。avi

我一行一行地得到每帧的PTS:

0.016683
0.116783
0.033367
0.050050
0.166833
0.083417
0.100100
0.216883
...

现在我需要将视频编码到H264,并且之后能够获得相同的PTS信息,所以我使用了:

ffmpeg -i original.avi -vcodec libx264 output.avi

使用此视频流:

流#0:0:视频:h264(高)(h264/0x34363248),yuv420p(渐进),1920x1080[SAR 1:1 DAR 16:9],2289 kb/s,59.94 fps,59.94 tbr,59.94 tbn,119.88 tbc

但是当我试图从输出中获取PTS信息时。avi我只得到:

N/A
N/A
N/A
N/A
N/A
N/A
...

为了保存PTS信息,我应该更改命令中的哪些内容?

共有1个答案

易骁
2023-03-14

AVI并不真正支持H.264。

有一些黑客使它工作,但你会有一些副作用并不奇怪。考虑改用MP4或MKV。

 类似资料:
  • 我编写了一个非常简单的Flink流媒体作业,它使用从Kafka获取数据。 这工作得很好,每当我在Kafka上将某些内容放入主题时,它都会被我的Flink作业接收并处理。现在我试图看看如果我的Flink作业由于某种原因不在线会发生什么。所以我关闭了flink作业并继续向Kafka发送消息。然后我再次开始我的Flink作业,并期望它会处理同时发送的消息。 然而,我得到了以下信息: 因此,它基本上忽略了

  • 我错过了什么? AMQ版本5.13.2 Java 1.8.0\u 74 Windows 10 给定一个简单的测试用例,传输两条Object消息,一条带有数据,另一条是数据结束标记。只有数据结束标记被接收。 队列在作业开始时创建,并在作业完成后销毁。 如果我运行更多的事务,我会看到大约50%的接收率。 日志清楚地显示接收器在第一条消息被放入队列之前就已启动,两条消息都被放入队列,但实际上只有第二条消

  • 我试图解决Dijkstra算法上的一个hackerrank问题--https://www.hackerrank.com/challenges/dijkstrashortreach。我在使用我自己的Dijkstra代码逻辑。虽然我的代码解决了更容易的测试用例,但它在更高的测试用例上失败了。我猜我的代码在某个地方缺少了一些传递性,并且我得到的某个节点的值高于预期。你能帮我找出我的错误吗?问题:输入格式

  • 当我从SonarQube版本4.5.1迁移到SonarQube版本4.5.4时,我面临着这个问题 在我的4.5.1中,我在规则鱿鱼中做了一个自定义更改:方法循环复杂性。我将默认复杂度从10更改为12。现在,当我在4.5.4中尝试相同的Java配置文件时,我再次得到默认的复杂度值10而不是12。 以下是我遵循的步骤。 > 下载了新的SonarQube4.5.4.zip 启动服务器 使用恢复配置文件选

  • 问题:Libav/FFmpeg解码管道需要什么才能在解码的AVFrames中生成有效的表示时间戳(PTS)? 我正在解码通过RTSP接收的H264流。我使用Live555解析H264并将流提供给我的LibAV解码器。解码和显示效果很好,只是我没有使用时间戳信息,而且有些口吃。 获取带有的帧后,不设置演示时间戳(PTS)。 我需要PTS,以找出每帧需要显示多长时间,并避免任何口吃。 我通过Live5

  • 我很困惑,为什么这段代码在我包含一条返回语句的情况下却没有返回语句。任何帮助都将不胜感激! 问题代码: