我想創建一個新視頻(finalVideo.mp4):
- 3個圖片檔案
image1.jpg, image2.jpg, image3.jpg,每張圖片可見4秒 - 1個視頻檔案(
video1.mp4),持續約30秒,幀率為30fps - 1 個音頻檔案 (
audio1.mp3)
在最終視頻 ( finalVideo.mp4) 中,我希望音頻 ( audio1.mp3) 僅在影像存在時播放,視頻的 ( video1.mp4) 音頻在視頻存在時播放。
例如:
最終視頻 (finalVideo.mp4) 包含
image1.jpg、
video1.mp4和
image2.jpg(
image3.jpg按順序)。音頻 (audio1.mp3) 應在前 4 秒播放,然后是視頻 (video1.mp4) 音頻在接下來的 30 秒內播放,然后是音頻 (audio1.mp3) 在接下來的 8 (4*2) 秒內播放。
請讓我知道如何以編程方式執行此操作。我希望使用 Java (JavaCV) 或 Python (OpenCV) 來解決這個問題。但是沒有編程語言限制,答案可以是任何語言。
編輯 1
這是我做這項作業的嘗試:
String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
ProcessBuilder processBuilder = new ProcessBuilder(
ffmpeg,
"-loop", "1",
"-framerate", "30",
"-t", "4",
"-i", "image1.jpg",
"-i", "video1.mp4",
"-loop", "1",
"-framerate", "30",
"-t", "4",
"-i", "image2.jpg",
"-loop", "1",
"-framerate", "30",
"-t", "4",
"-i", "image3.jpg",
"-filter_complex", "[0][1][2][3]concat=n=4:v=1:a=0",
"finalVideo.mp4"
);
processBuilder.inheritIO().start().waitFor();
上面的代碼只解決了沒有音頻的視頻創建部分。如上所述,請告訴我如何在此視頻中添加音頻。
uj5u.com熱心網友回復:
您可以對音頻、使用-ss和-t輸入選項執行相同的操作來控制剪輯的位置。
String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
ProcessBuilder processBuilder = new ProcessBuilder(
ffmpeg,
"-loop", "1",
"-framerate", "30",
"-t", "4",
"-i", "image1.jpg",
"-i", "video1.mp4",
"-loop", "1",
"-framerate", "30",
"-t", "4",
"-i", "image2.jpg",
"-loop", "1",
"-framerate", "30",
"-t", "4",
"-i", "image3.jpg",
"-t" 4, "-i", "audio1.mp3",
"-ss" 4, "-t", 8, "audio1.mp3",
"-filter_complex",
"[0][1:v][2][[3]concat=n=4:v=1:a=0;[4][1:a][5]concat=n=3:v=0:a=1;",
"finalVideo.mp4"
);
processBuilder.inheritIO().start().waitFor();
(如果您可以兩次使用相同的輸入檔案,則不是 100%,但這應該可以。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/426499.html
上一篇:戲說領域驅動設計(四)——本質論
下一篇:將資料從修改器傳遞給畫家
