多个视频组合的情况下,如何为每个视频单独添加滤镜
首先非常感谢作者分享这份代码,体验很好,而且有很多值得 借鉴的意义!
这里想问下作者,视频编辑时,通常情况需要多个视频进行组合 videoComposition支持应用滤镜(applyingFilter...),实现中发现只能应用到整个组合的视频中,如何为每个单独的视频应用不同的滤镜,支持预览和导出呢?
期待作者的分享~
videoComposition是针对某个视频的。
你可以这样理解:
1、AVAsset代表一个视频。它包含(视频轨迹、音频轨迹 )[当然还有很多数据,不在这个话题。] 2、对AVAsset + 滤镜s(各种编辑)= new AVAsset (新的视频对象,保存它,然后对下一个AVAsset操作) 3、AVAsset + AVAsset + ... = new AVAsset (合并多个AVAsset) 4、现在预览或到处最终的AVAsset
ps:如果是单个视频,可以先对视频使用时间轴剪切,得到AVAssets,然后对每个AVAsset操作,最终合并。
我还有一个框架(LFVideoSession)没有发布 😉,主要是对AVAsset处理的一些封装(时间剪切、尺寸剪裁、旋转、水印、速率、合并等)。这是一个工具类。这周会发布。
在 2019年6月4日,下午5:43,ganchengkai [email protected] 写道:
首先非常感谢作者分享这份代码,体验很好,而且有很多值得 借鉴的意义!
这里想问下作者,视频编辑时,通常情况需要多个视频进行组合 videoComposition支持应用滤镜(applyingFilter...),实现中发现只能应用到整个组合的视频中,如何为每个单独的视频应用不同的滤镜,支持预览和导出呢?
期待作者的分享~
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/lincf0912/LFMediaEditingController/issues/26?email_source=notifications&email_token=ACNOL4ULYXPXYWCSJO6BK3LPYY2MHA5CNFSM4HS2SQX2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4GXPNHBQ, or mute the thread https://github.com/notifications/unsubscribe-auth/ACNOL4SEKCGTMEAQ3ZDAA2TPYY2MHANCNFSM4HS2SQXQ.
很高兴能收到你的回复 我这里还是有一些疑问,你提到的第二点对单个视频进行滤镜后导出成新的视频吗,因为我现在看到很多视频编辑软件是可以在多个视频组合时对单个视频应用滤镜进行实时修改并且实时预览的,如果应用滤镜后需要导出后再进行组合,这样的操作便利性不够,可能连视频制作的人都不清楚应用哪一个滤镜是最合适的,他们需要不断尝试,频繁改动 我们希望找到这样一种方案(AVAsset+CIFilter) +(AVAsset+CIFilter) + ... = new AVAsset 我看到应用商店确实有很多这样的实现作品,期待作者能提供一些指导建议~
万分非常期待你的下一个作品的发布~ 感谢你的分享~
我不清楚你对这方面的理解程度有多少。或许是我使用了new AVAsset的字眼,导致你认为是导出。其实我是想更好的解析它们的关系。准确的说应该是这样的 AVAsset + 滤镜s(各种编辑)= AVAsset(AVAsset这个对象的地址没有发生变化)。 这里需要明确,在整个编辑的过程中(包含编辑之后的预览)都可以不需要导出。你的方案是可以实现的,但是开发将会是一个很大的挑战。
预览的操作是对AVPlayer的处理,编辑的操作是对AVAsset的处理,当真正完成时才是导出,拿到视频实体。
LFVideoSession延误。测试未过关,卡在滤镜。必要时暂时不支持滤镜。
在 2019年6月6日,上午9:56,ganchengkai [email protected] 写道:
很高兴能收到你的回复 我这里还是有一些疑问,你提到的第二点对单个视频进行滤镜后导出成新的视频吗,因为我现在看到很多视频编辑软件是可以在多个视频组合时对单个视频应用滤镜进行实时修改并且实时预览的,如果应用滤镜后需要导出后再进行组合,这样的操作便利性不够,可能连视频制作的人都不清楚应用哪一个滤镜是最合适的,他们需要不断尝试,频繁改动 我们希望找到这样一种方案(AVAsset+CIFilter) +(AVAsset+CIFilter) + ... = new AVAsset 我看到应用商店确实有很多这样的实现作品,期待作者能提供一些指导建议~
万分非常期待你的下一个作品的发布~ 感谢你的分享~
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/lincf0912/LFMediaEditingController/issues/26?email_source=notifications&email_token=ACNOL4UDLXHNADOEB4ECLQLPZBVE3A5CNFSM4HS2SQX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXBQCFA#issuecomment-499319060, or mute the thread https://github.com/notifications/unsubscribe-auth/ACNOL4SYR4DWSWNQ5H4UCHTPZBVE3ANCNFSM4HS2SQXQ.
很高兴这么快能收到你的回复~
AVFoundation中AVAsset基本的轨道,时间编辑、裁剪,组合,音频混合和Layer动画层基本能理解,现在卡在多个视频组合时+为每个视频添加滤镜这里,目前还没有发现AVAsset能直接+CIFilter的解决方案,很期待能再次收到你的解答~
谢谢谢谢~
用单个视频来举例AVAsset+CIFilter 假设视频是10s,添加了一个滤镜。 预览实现方式:我们一般是拿视频当前显示的CVPixelBufferRef创建CIImage,再通过CIFilter创建全新的CIImage来显示的。 如果只需要在前5s添加滤镜呢? 所以我们除了滤镜之外还需要记录一个值CMTime,用来记录什么时候CIImage才需要使用CIFilter来创建。 你的方案可以理解为:
--CIFilter+ CMTime
AVAsset + { --CIFilter+ CMTime } = new AVAsset (mp4) --CIFilter+ CMTime
在 2019年6月6日,下午3:10,ganchengkai [email protected] 写道:
很高兴这么快能收到你的回复~
AVFoundation中AVAsset基本的轨道,时间编辑、裁剪,组合,音频混合和Layer动画层基本能理解,现在卡在多个视频组合时+为每个视频添加滤镜这里,目前还没有发现AVAsset能直接+CIFilter的解决方案,很期待能再次收到你的解答~
谢谢谢谢~
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/lincf0912/LFMediaEditingController/issues/26?email_source=notifications&email_token=ACNOL4QUARRU5KD3E6BT343PZCZ6RA5CNFSM4HS2SQX2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXB6FQA#issuecomment-499376832, or mute the thread https://github.com/notifications/unsubscribe-auth/ACNOL4WL5AZPHIUNZKZC4QLPZCZ6RANCNFSM4HS2SQXQ.
本来想找点视频尺寸调整编辑的相关资料,没想到又搜到了大神的,,,留言路过。
期待大神的LFVideoSession
实在抱歉。恐怕是要流产了。它原本只是想表达一个封装思想。目前已经有很多优秀的框架。例如:https://github.com/CoderHenry66/WAVideoBox https://github.com/CoderHenry66/WAVideoBox
2020年8月5日 下午5:39,iilrac [email protected] 写道:
期待大神的LFVideoSession
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/lincf0912/LFMediaEditingController/issues/26#issuecomment-669092952, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACNOL4Q6PLZ4UNIMUQ2PYTDR7ESGPANCNFSM4HS2SQXQ.