NMM视频技术(旧)

 找回密码
 成为会员
搜索
查看: 3291|回复: 6

很郁闷的问题,关于保持视频时间正常的

[复制链接]
发表于 2009-9-2 11:54 | 显示全部楼层 |阅读模式
弄到了1集tv录制的AVI,放源的人把隔行的东西直接压成逐行,导致交错不能去掉

准备输出图片 手动删除,但是又怕最终片子持续时间不准,有没有啥好办法?


另,老片重播,交错没规律。乱七八糟的,手动删了2分钟的,感觉还可以。



谢谢关注
发表于 2009-9-2 12:18 | 显示全部楼层
"输出图片 手动删除"是怎么样一个过程呢。
直接deinterlace不就成了。
发表于 2009-9-2 12:38 | 显示全部楼层
楼主的处理方法是错误的,不过既然问的是时间的问题,那就根据楼主的思路说一下吧。
手动删帧,而且是没有规律的删除,必须修改帧时间戳。
可以修改被删帧的下一帧的时间戳,最好的方式是编写TCv2来对时间进行修正。

TCv2的格式是:
  1. # timecode format v2
  2. 第0帧从什么时间开始播放
  3. 第1帧从什么时间开始播放
  4. 第2帧从什么时间开始播放
  5. 以此类推...
复制代码
其中每一行就是该帧的时间戳,计算公式是
1000 除以 帧率 乘以 帧号

现在假设你删除了第100帧,那么第101帧的播放时间就提前了(1000/帧率*帧号)这么多的时间,因此必须对TCv2进行修正,使第101帧的播放时间恢复为原来的时间戳。

我想既然楼主愿意一帧一帧的去删除交错帧,也就不在乎一帧一帧的计算TCv2了吧。
 楼主| 发表于 2009-9-6 08:43 | 显示全部楼层
恩,谢谢ls两位大大解答,学会了

除了删除帧以外还有啥办法没有?
发表于 2009-9-6 11:14 | 显示全部楼层
无聊的脚本: deleteframeMOD

deleteframeMOD (删除帧号,复制方向,debug)

删除帧号:被删掉的帧号。
复制方向:1=复制被删帧后一帧,0=复制被删帧前一帧。 [1]
debug:显示一些信息。
  1. function deleteframeMOD (clip v, int "delframe", int "direction", bool "debug") {
  2. fc = v.framecount
  3. debug = default(debug,false)
  4. direction = default(direction,1)
  5. direction = delframe==fc-1 ? 0 : direction
  6. direction = delframe==0 ? 1 : direction
  7. direction = direction!=0 && direction!=1 ? 1 : direction
  8. assert(delframe<fc,"deleteframeMOD Error: delframe>"+string(fc-1))
  9. assert(delframe>=0,"deleteframeMOD Error: delframe<0")
  10. v = debug ? v.info() : v
  11. direction==1 ? v.DeleteFrame(delframe).DuplicateFrame(delframe)
  12. \ : v.DeleteFrame(delframe).DuplicateFrame(delframe-1)
  13. return debug ? last.subtitle("deleteframeMOD Debug : delframe="+string(delframe)+" | direction="+string(direction),align=3)
  14. \ : last
  15. }
复制代码
发表于 2009-9-6 19:02 | 显示全部楼层
Fizick 有个插件叫badframes,可以用临近的帧或混合来替换掉坏掉的帧。

链接
http://avisynth.org.ru/badframes/badframes.html
发表于 2009-9-7 09:55 | 显示全部楼层
谢谢各位大大的耐心解答
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

小黑屋|手机版|NMM视频技术

GMT+8, 2025-6-22 07:31 , Processed in 0.175761 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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