请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站
开启辅助访问
切换到宽版

ChinaFFmpeg

 找回密码
 立即注册

QQ登录

只需一步,快速开始

用新浪微博登录

只需一步,快速搞定

搜索
热搜: 活动 交友 discuz
查看: 290|回复: 6

[Windows] image2 muxer 的 -frame_pts 选项 输出不正确

[复制链接]
扫一扫,手机访问本帖
发表于 2018-1-19 09:43:05 | 显示全部楼层 |阅读模式
求助:
我正在用去年 T-bagwell 给 image2 muxer添加了  -frame_pts 的功能,link: https://github.com/FFmpeg/FFmpeg ... 3040da7ac06387970f0

但是在运行的时候,我发现输出不对。我用的命令如下:
ffmpeg.exe -i bear.mp4 -t 10 -f image2 -frame_pts true "images\image-%d.jpg"

输出总是:
image-0.jpg
image-1.jpg
image-2.jpg
image-3.jpg
........
连续的 0, 1,2,。。。序列。


求助,是不是我哪里弄错了?

回复

使用道具 举报

发表于 2018-1-19 12:06:03 | 显示全部楼层
好巧,这个就是我提交的

这个是因为从pkt->pts拿到的pts就是这样的了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-19 12:51:20 | 显示全部楼层
孙悟空 发表于 2018-1-19 12:06
好巧,这个就是我提交的

这个是因为从pkt->pts拿到的pts就是这样的了

其实我就是根据 你github里面的link 才找到这个网站的。

你说得对, pkt->pts 的确就是这个值,我有设断点看过。
但是我比较不理解为什么 pts会是这样,presentation time stamp 怎么会是 0, 1, 。。。 ?
能麻烦您稍微给解释一下么? 我的理解pts应该是以timescale为单位的、显示时间?

谢谢!
回复 支持 反对

使用道具 举报

发表于 2018-1-19 13:16:04 | 显示全部楼层
junli1026 发表于 2018-1-19 12:51
其实我就是根据 你github里面的link 才找到这个网站的。

你说得对, pkt->pts 的确就是这个值,我有设 ...



并没有问题:

[AppleScript] 纯文本查看 复制代码
demuxer -> ist_index:0 type:video next_dts:2067334 next_dts_time:2.06733 next_pts:1933867 next_pts_time:1.93387 pkt_pts:186060 pkt_pts_time:2.06733 pkt_dts:186060 pkt_dts_time:2.06733 off:0 off_time:0
demuxer+ffmpeg -> ist_index:0 type:video pkt_pts:186060 pkt_pts_time:2.06733 pkt_dts:186060 pkt_dts_time:2.06733 off:0 off_time:0
decoder -> ist_index:0 type:video frame_pts:174048 frame_pts_time:1.93387 best_effort_ts:174048 best_effort_ts_time:1.93387 keyframe:0 frame_type:1 time_base:1/90000
filter -> pts:58 pts_time:1.93527 exact:57.958046 time_base:1001/30000
encoder <- type:video frame_pts:58 frame_pts_time:1.93527 time_base:1001/30000
encoder -> type:video pkt_pts:54 pkt_pts_time:1.8018 pkt_dts:54 pkt_dts_time:1.8018



从这段内容可以看到,通过与time_base计算之后的时间是正确的
回复 支持 反对

使用道具 举报

发表于 2018-1-19 14:03:14 | 显示全部楼层
可以通过debug_ts 看到过程
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-24 03:03:19 | 显示全部楼层
孙悟空 发表于 2018-1-19 14:03
可以通过debug_ts 看到过程

谢谢你的帮忙。

好像看上去这个 frame_pts 用的 muxer 出来的pts, 所以永远都是 0, 1, 2, 3 ....
我原以为它会用  demuxer 的pts(在视频中某一帧的pts)。

不知道我这样的理解对不对?
回复 支持 反对

使用道具 举报

发表于 2018-1-24 11:02:09 | 显示全部楼层
junli1026 发表于 2018-1-24 03:03
谢谢你的帮忙。

好像看上去这个 frame_pts 用的 muxer 出来的pts, 所以永远都是 0, 1, 2, 3 ....

不对,是demuxer之后的pts 与时间基处理之后,在与muxer的时间基换算之后得到的muxer的pts

你可以尝试-ss 去seek到某一帧,用-copyts,然后就会得到对应的pts,不是从0开始的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|Archiver|ChinaFFmpeg    

GMT+8, 2018-5-20 21:39 , Processed in 0.032206 second(s), 21 queries .

Powered by ChinaFFmpeg

© 2013 - 2018 www.chinaffmpeg.com

快速回复 返回顶部 返回列表