6

我正在构建一个应用程序,用户可以在其中录制截屏视频。应用程序的组成部分是,可以暂停录制并在以后随时恢复(会话在服务器端维护)。

所以说当用户开始录制屏幕时,宽度和高度是:1024*768。使用 xuggler(ffmpeg 的 java 包装器),我能够生成视频。但是后来说他在不同的系统上,希望恢复投屏,然后分辨率变为1080 * 720。这个阶段,我单独录制,然后尝试合并两个文件。但由于宽度和高度不同,我得到以下异常:

16:38:03.916 [main] 警告 com.xuggle.xuggler - 出现错误:图片与此编码器的宽度不同 (../../../../../../../ csrc/com/xuggle/xuggler/StreamCoder.cpp:1430) 线程“主”java.lang.RuntimeException 中的异常:无法编码视频

解决此问题的最佳方法是什么。用户可以在不同宽度和高度的屏幕上。如何合并(或任何其他替代方案,可能附加)不同宽度和高度的视频文件?

4

1 回答 1

4

我不了解 xuggler,但使用 FFMpeg 我能够使用以下命令序列连接具有不同分辨率的视频。对于每个视频,我使用以下命令

ffmpeg -i input(n).mp4 -c copy -vbsf h264_mp4toannexb -f mpegts -s 1280*720 out(n).ts

在生成所有 out.ts 文件后,我使用以下命令连接所有视频

ffmpeg -i "concat:out1.ts|out2.ts" -c:v libx264 -strict experimental -bsf:a aac_adtstoasc -ar 48000 -r 20 output.mp4
于 2013-11-28T08:13:59.220 回答