服务器端视频混合

时间:2009-12-25 09:07:09

标签: ffmpeg video-encoding

我有一系列以mpeg2编码的视频文件(我可以改变这种编码),我必须在flash flv中制作一部电影(这是一项要求,我不能改变那种编码)。

一部目的地电影是不同源视频文件的汇编。

我有一个定义目标电影的播放列表。例如:

Video file        Position        Offset       Length 
little_gnomes     0               0            8.5
fairies           5.23            0.12         12.234
pixies            14              0            9.2

视频文件是文件的名称,位置是应该启动文件的时间(在主时间轴中),offset是视频文件中的偏移量,length是要播放的视频的长度。数字是秒(双倍)。

这会产生类似的结果(最终电影时间轴):

               0--5.23|--8.5|--14|--17.464|--23.2|
little_nomes   **************
fairies               *********************
pixies                           *****************

如果视频重叠,则要添加的最后一个视频将覆盖最后一个视频,音频应该混合。

生成的视频曲目将是:

               0--5.23|--8.5|--14|--17.464|--23.2|
little_nomes   *******
fairies               ***********
pixies                           *****************

结果音频将是:

               0--5.23|--8.5|--14|--17.464|--23.2|
little_nomes   11111112222222
fairies               222222211112222222222
pixies                           22222222221111111

其中1或2是混合音轨的数量。

最多可以有3个音轨。

我需要编写一个程序,将播放列表作为输入并生成flv文件。我愿意接受任何解决方案(必须是免费/开源的)。

可以做到这一点的现有工具最简单,但我找不到。至于制作我自己的解决方案,我发现只有ffmpeg,我能用它做基本的事情,但文档非常缺乏。

它可以是任何语言,它不一定非常快(如果制作1h电影需要30分钟就可以了)。

该解决方案将在基于opensolaris的x64服务器上运行。如果我必须使用linux,这也可以。但窗户是不可能的。

4 个答案:

答案 0 :(得分:2)

我终于使用ffmpeg库从头开始编写我的解决方案了。这是很多锅炉板代码,但最终逻辑并不复杂。

我发现MLT framework给了我很大的帮助。

答案 1 :(得分:0)

以下是两个相关问题:

Command line video editing tools

https://superuser.com/questions/74028/linux-command-line-tool-for-video-editing

Avisynth听起来好像可以做你想要的,但它只是Windows。

您最终可能会使用FFmpeg库编写自己的应用程序。你是对的,文档可能会更好......但tutorial by Stephen Dranger是一个很好的起点(如果你还不知道的话)。

答案 2 :(得分:0)

好吧,如果您更喜欢Java,我使用Xuggler的API编写了几个类似的程序。

答案 3 :(得分:0)

如果您的视频/图片已在线,则可以使用Stupeflix API创建最终视频。您可以更改音轨,为视频添加过滤器等等。这里是文档和在线演示:https://developer.stupeflix.com/documentation/