我正在尝试从破折号流 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 文件并检查代码。