解像度の フレーム レートとエンコーダを表示する ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,width,height,avg_frame_rate -ofdefault=noprint_wrappers=1 rs2.mp4 取得、エンコーダ、解像度、およびフレーム レート codec_name=h264 width=1920 height=1080 avg_frame_rate = 60 / 1
すべて同じフレームレート、解像度、エンコーダを使用します。
ffmpeg -i "concat:input1.mp4|input2.mp4" -c copy Output.mp4
長年頑張ってきたのですが、動画しか生成できず、合成結果が間違っているのでtxtで取得するしかありません。
得る
ファイル.txt
ファイル「rs.mp4」
ファイル「rs2.mp4」
次に、コードは次のようになります
ffmpeg -f concat -i "file.txt" -c:v ttt3.mp4 をコピー
Javaコード
ファイルの解像度を表示する
import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class VideoInfo {
public static void main(String[] args) {
String videoPath = "path/to/video.mp4";
try {
ProcessBuilder processBuilder = new ProcessBuilder(
"ffprobe",
"-v", "error",
"-select_streams", "v:0",
"-show_entries", "stream=codec_name,width,height,avg_frame_rate",
"-of", "json",
videoPath
);
Process process = processBuilder.start();
// 读取ffprobe命令的输出
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder output = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
output.append(line);
}
process.waitFor();
// 解析JSON输出
JSONObject jsonObject = JSONObject.parseObject(output.toString());
JSONArray streams = jsonObject.getJSONArray("streams");
JSONObject contentParamJson = streams.getJSONObject(0);
System.out.println(contentParamJson);
System.out.println(jsonObject);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
指定されたフレームレートでビデオを合成します
-r "フレームレート"