目前在开发视频编辑功能,想法是用 ffmpeg 解码得到所有的帧,处理帧图像最后重新打包。 想问下有开发过的大大能分享下你们的做法吗
1
rust 2020-12-07 17:42:50 +08:00
为什么要解码所有帧?
用户要编辑哪一片段,你再去解码那些帧啊.然后处理完再拼接回去. 记得用 MediaCodec 的硬件加速来 |
2
hello2060 2020-12-07 18:12:14 +08:00 via iPhone
@rust 基本没有办法拼接回去的吧。输出就是一个写文件 muxing 的过程,哪怕最简单的文件格式不变,所有没变化的 packet 直接原样重新输出,只编码编辑过的帧我觉得就挺难的。
|
3
rust 2020-12-07 18:23:07 +08:00
@hello2060 我的意思是,用户选中视频片段的时候就后台切片,用户编辑过的导出成视频片段,然后按照对应的时间段拼接回去.最终合并成完整的一个视频
|
4
renmu123 2020-12-07 18:25:36 +08:00 via Android 1
博客 teahour 有一期请了搞手机端搞这个的,可以去听一下
|
5
AX5N 2020-12-07 18:31:05 +08:00
电脑不香吗
|
6
gggxxxx 2020-12-07 18:43:26 +08:00 via iPhone
思路是比较靠谱的,只不过不用解码所有帧。一般是预览到哪一针才解码那一针,跟播放视频是一样的。
所谓编辑就是记录修改参数,preview 和 export 的时候直接套用 |
7
hello2060 2020-12-07 18:48:47 +08:00
@rust 难度应该就在拼接这一块可能,时间戳不会是问题,哪怕稍微有点不准确。因为视频文件不仅仅是音视频帧,还有 metadata, 比如 mp4 就有一个 moov 里面具体指明了每一帧在文件中的位置大小时间长度,当然这些都是 muxer 输出的,而且一个文件同时有原编码器产生的帧和新编码器产生的帧,不知道是否能够无缝合作。
我记得我们当时 h.264 的帧有 NAL 有两种编码方式,你必须读出原来的格式,强制新编码器也用这种格式。反正具体的细节挺多的。而且你看这只是一种视频编码,不同的视频编码方法可能会有不同的问题。 不过我我是做库的,具体没做过视频编辑啦。 |
9
Lemeng 2020-12-07 21:53:57 +08:00
所有的桢啊
|
10
small3flower 2020-12-08 11:35:04 +08:00
@renmu123 这个博客很赞,我翻了一遍标题没找到有关于移动端视频的,麻烦大佬抽空找下看看是哪一期呢
|
11
renmu123 2020-12-08 11:45:21 +08:00
@small3flower #10 我记错了,是另一个博客《 ggtalk 》里面的一期《聊聊音视频技术》
|
12
small3flower 2020-12-08 14:12:14 +08:00
@renmu123 哦哦,好的,这个我听过了,谢谢
|