0

我正在尝试从破折号流 m4s 文件创建缩略图。

我有 mpd、init.mp4 文件和 m4s 文件。

我有使用从 mp4 文件中提取图像的 nodeJS ffmpeg 包的代码:

try {
var process = new ffmpeg('video.mp4');
process.then(function (video) {
    // Callback mode
    video.fnExtractFrameToJPG('C:\\files\\nodejs', {
        start_time: `1:50:30`,
        frame_rate : 1,
        file_name : 'my_frame_%t_%s'
    }, function (error, files) {
        if (!error)
            console.log('Frames: ' + files);
    });
}, function (err) {
    console.log('Error: ' + err);
});
} catch (e) {
console.log(e.code);
console.log(e.msg);
}

但是因为我正在从破折号流中读取我的文件,所以我得到了一个 m4s 文件。

我尝试将 m4s 格式转换为 mp4,然后使用上面的代码,但是 ffmpeg(准确地说是 fluent-ffmpeg)返回错误消息

发生错误:ffmpeg exited with code 1: C:\files\nodejs\testFiles\000000.m4s: Invalid data found when processing input

我用来转换的代码是:

var proc = new fluent({source: "C:\\files\\nodejs\\testFiles\\000000.m4s", 
nolog: true})

//useless i think - not working
//proc.setFfmpegPath("C:\\files\\ffmpeg-20170620-ae6f6d4-win64-static\\bin")

proc.withSize('50%').withFps(24).toFormat('mp4')

.on('end', function(){
console.log('file has been converted successfully');
})
.on('error', function(err){
    console.log('an error occured: ' + err.message);

})

.saveToFile("C:\\files\\nodejs\\new.mp4");

是否可以将单个 m4s 文件转换为 mp4?

如果没有,使用 ffmpeg 和 nodejs 将 m4s 转换为 mp4 的正确方法是什么?

我找不到任何参考,但如果可以直接从 m4s 文件中提取图像,我认为它会更快地解决问题。

可以使用此站点使用网络部分(Chrome 浏览器中的 f12)下载所有 *.m4s 文件、mpd 和 init.mp4 文件并检查代码。

4

0 回答 0