gpt4 book ai didi

javascript - fluent-ffmpeg 视频有拉伸(stretch)图像

转载 作者:行者123 更新时间:2023-12-04 22:50:08 30 4
gpt4 key购买 nike

我有一个 mp3 音频文件和一个 jpg 图像文件。我想将这两个文件组合成一个新的 mp4。我有一个工作流利的 ffmpeg 命令,它完全符合我的要求,除了图像将在最终输出视频中被拉伸(stretch)。这似乎与我从 Photoshop 导出的 jpg 一致。
有什么方法可以在我的 ffmpeg 命令中指定以保持图像的相同分辨率而不是拉伸(stretch)它?
我的功能如下:

async function debugFunction() {
console.log('debugFunction()')
//begin setting up ffmpeg
const ffmpeg = require('fluent-ffmpeg');
//Get the paths to the packaged versions of the binaries we want to use
var ffmpegPath = require('ffmpeg-static-electron').path;
ffmpegPath = ffmpegPath.replace('app.asar', 'app.asar.unpacked')
var ffprobePath = require('ffprobe-static-electron').path;
ffprobePath = ffprobePath.replace('app.asar', 'app.asar.unpacked')
//tell the ffmpeg package where it can find the needed binaries.
ffmpeg.setFfmpegPath(ffmpegPath);
ffmpeg.setFfprobePath(ffprobePath);
//end setting ffmpeg

let imgPath = "C:\\Users\\marti\\Documents\\martinradio\\image.jpg";
let audioPath = "C:\\Users\\marti\\Documents\\martinradio\\audio.mp3";
let vidPath = "C:\\Users\\marti\\Documents\\martinradio\\video.mp4";

//create ffmpeg command
ffmpeg()
//set rendering options
.input(imgPath)
.loop()
.addInputOption('-framerate 2')
.input(audioPath)
.videoCodec('libx264')
.audioCodec('copy')
.audioBitrate('320k')
.videoBitrate('8000k', true)
.size('1920x1080')
.outputOptions([
'-preset medium',
'-tune stillimage',
'-crf 18',
'-pix_fmt yuv420p',
'-shortest'
])
//set status events
.on('progress', function (progress) {
if (progress.percent) {
console.log(`Rendering: ${progress.percent}% done`)
}
})
.on('codecData', function (data) {
console.log('codecData=', data);
})
.on('end', function () {
console.log('Video has been converted succesfully');
})
.on('error', function (err) {
console.log('errer rendering video: ' + err.message);
})
//run ffmpeg command
.output(vidPath).run()

}
如果我给它一个音频文件和这个图像,它会成功渲染:
enter image description here
但输出视频如下所示:
enter image description here
您可以看到图像像矩形一样被挤压和拉伸(stretch),而我想保持它是一个立方体。

最佳答案

您似乎使用的是 16:9 的比例,例如.size('1920x1080') 用于 599X603 的图片。您可以更改输出视频的大小,使其与您的实际图像大小相匹配(它可以更大或更小,但 keep the similar ratio )或使用 16:9 但 add padding on the sides .

关于javascript - fluent-ffmpeg 视频有拉伸(stretch)图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64939300/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com