2012-11-27 79 views
3

我有两个.OGG文件的大小相似,FPS和持续时间。我的目标是使用FFMPEG将它们组合成一个并排的演示文稿。为此我已经试过以下CMD:FFMPEG - 合并视频时出错

的ffmpeg -i subject.ogg室颤“[中]垫= 3 * IW:3 * IH [左];电影= clinician.ogg [右] ; [left] [right] overlay = 100:0 [out]“combined.ogg

只需说最终的视频是不可播放的。在组合过程中FFMPEG打印很多,上面写着类似的错误:

[Parsed_overlay_2 @ 0x1eb7d3e0]缓冲区队列溢出,滴

这是什么告诉我?

注:

  • 两个源文件可播放
  • 我补齐“输出”是在试图了解PARAMS
  • 在100第二视频的位置相当大:0是任意的。一旦我获得了cmd的工作,我会将它移到输出中更好的位置。
  • 这两个视频都是从网络摄像机录制的.FLV开始的。我将它们转换为.ogg文件,因为FFMPEG不想合并两个.FLV文件。如果有更好的途径,请告诉我。

所以 - 我的参数有什么问题,我在做什么导致这些FFMPEG错误?

编辑:
的ffmpeg -i clinician.ogg

输入#0,OGG,从 'clinician.ogg':
时间:00:05:20.98,启动:0.001000,比特率:2273 kb/s的
流#0:0:视频:Theora的,YUV420P,500×500 [SAR 1:1 DAR 1:1],1K TBR,1K TBN,1K TBC
元数据:
SERVER:Red5的服务器1.0.0 RC1 $ Rev:4193 $
CANSEEKTOEND:true
编码器:Lavf54.31.100
流#0:1:音频:Vorbis格式,8000赫兹,立体声,S16
元数据:
SERVER:Red5的服务器1.0.0 RC1版本$:4193 $
CANSEEKTOEND:真
编码器:Lavf54.31.100

的ffmpeg -i subject.ogg

输入#0,OGG,从 'subject.ogg':
持续时间:00:05:17.60,开始:0.001000,比特率:1341 kb/s
Stream#0:0:视频:theora,yuv420p,300x300 [SAR 1:1 DAR 1:1],83.33 tbr,1k tbn, 1k tbc
元数据:
SERVER:Red5 Server 1.0。0 RC1版本$:4193 $
CANSEEKTOEND:真
编码器:Lavf54.31.100
流#0:1:音频:Vorbis格式,8000赫兹,立体声,S16
元数据:
SERVER:Red5的服务器1.0.0 RC1版本$:4193 $
CANSEEKTOEND:真
编码器:Lavf54.31.100

+2

那么不要期望在这里得到答案,但它应该是有帮助的,如果你添加'ffmpeg -i subject.ogg'和'ffmpeg -i clinician.ogg'的输出。 – rekire

+0

第一个命令的完整控制台输出将很有用(您可以排除重复错误)。此外,我们可以看看你是否使用ffmpeg的古代版本或更近的东西。 – LordNeckbeard

回答

0

它可能比较容易做到这一点使用Avisynth

进行以下input.avs文件:

a = AviSource("first.avi") 
b = AviSource("second.avi") 
StackHorizontal(a,b) 

然后运行的ffmpeg -i input.avs output.avi ...加上你想要的任何其他选项。

编辑:另一种方式来做到这一点(不是快)是从两个文件中的帧转储到PNG,并与ImageMagick的将它们结合起来(例如montage)或类似的图像处理工具。

#!/bin/bash 
ffmpeg -i first.avi first_%05d.png 
ffmpeg -i second.avi second_%05d.png 
for file in first_*.png ; do montage ${file} ${file/first/second} ${file/first/output} ; done 
ffmpeg -i output_%05d.png output.avi 

这实际上让你做了很多图像处理不仅仅是并排侧,你可以做任意缩放/覆盖/背景/等。问题是如果一个文件的第N帧与其他文件的第N帧可能不完全相同,如果它们是可变的帧速率,则这是AviSynth完美处理的东西。如果剪辑的帧率恒定不成问题。

通过制作一个包含这两种图像的新剪辑(无论是否通过avisynth)来合并剪辑需要重新压缩视频,并降低视频质量/增加文件大小。

我不知道如何将ogg文件读入Avisynth,但有可能是一种方法。检查the FAQ on input formats

方评论:Theora/ogg的选择很奇怪。更好:H.264在mp4容器中。

+0

仅仅是avisynth窗口?我能找到的所有Linux版本都是avxsynth,但它不会为我构建。 – ethrbunny

+0

只有窗户,对不起,但avxsynth也可以。 –

+0

使用imagemagick添加了一种方法来执行此操作。 –

2

转换为x264是一个很好的建议。这似乎改变了潮流。

下面是对子孙后代的一些注意事项:

  • 的FLV转换为X264和正确的音频同步问题:

的ffmpeg -y -i subject_s_2242_r_1658.flv -async 1 -ac 2 -strict -2 -acodec Vorbis格式\
-c:v libx264 -PRESET减缓-crf 22 subject.mkv

  • 两个X264文件合并成一个单一的并排端的文件,并把两个单声道音轨,立体声生成的文件中:

的ffmpeg -y -i clinician.mkv -vf: “movie = subject.mkv [right]; pad = iw * 2:ih:0:0 [left]; [left] [right] overlay = 500:0”\
-filter_complex“amovie = clinician.mkv [l ]; amovie = subject.mkv [r]; [l] [r] amerge“final。mkv

我无法安装AVISYNTH(在CentOS 6.2上运行),但它确实看起来像一个很好的解决方案。

+0

是的,这个过滤器工作时,一个发球员给了很多“缓冲区队列溢出,丢弃”错误:'ffmpeg -i in1.mov -i in1.mov -filter_complex“[0:v] setpts = PTS-STARTPTS,pad = iw * 2:ih [bg]; [1:v] setpts = PTS-STARTPTS [fg]; [bg] [fg] overlay = w; amerge,pan = stereo:c0