npm i --save nativescript-ffmpeg-plugin
- 版本:0.0.2
- GitHub:
- NPM: https://npmjs.net.cn/package/nativescript-ffmpeg-plugin
- 下载
- 昨天:4
- 上周:23
- 上个月:102
NativeScript FFmpeg
安装
tns plugin add nativescript-ffmpeg-plugin
用法
-
执行命令。
- 使用 execute() 方法,传递一个命令行和一个参数分隔符。
import { LogLevel, FFmpeg } from 'nativescript-ffmpeg-plugin';
FFmpeg.execute('-i file1.mp4 -c:v mpeg4 file2.mp4', ' ').then(result => console.log("FFmpeg process exited with result " + result));- 使用 executeWithArguments() 方法,传递一个参数数组。
import { LogLevel, FFmpeg } from 'nativescript-ffmpeg-plugin';
FFmpeg.executeWithArguments(["-i", "file1.mp4", "-c:v", "mpeg4", "file2.mp4"]).then(result => console.log("FFmpeg process exited with result " + result)); -
检查执行输出。0 表示执行成功,非零值表示失败。
FFmpeg.getLastReturnCode().then(result => {
console.log("Last return code: " + result);
});
FFmpeg.getLastCommandOutput().then(result => {
console.log("Last command output: " + result;
}); -
停止正在进行的操作。
FFmpeg.cancel();
-
获取文件的媒体信息。
- 打印所有字段
FFmpeg.getMediaInformation('<file path or uri>').then(info => {
console.log('Result: ' + JSON.stringify(info));
});- 打印选定字段
FFmpeg.getMediaInformation('<file path or uri>').then(info => {
console.log('Result: ' + JSON.stringify(info));
console.log('Media Information');
console.log('Path: ' + info.path);
console.log('Format: ' + info.format);
console.log('Duration: ' + info.duration);
console.log('Start time: ' + info.startTime);
console.log('Bitrate: ' + info.bitrate);
if (info.streams) {
for (var i = 0; i < info.streams.length; i++) {
console.log('Stream id: ' + info.streams[i].index);
console.log('Stream type: ' + info.streams[i].type);
console.log('Stream codec: ' + info.streams[i].codec);
console.log('Stream full codec: ' + info.streams[i].fullCodec);
console.log('Stream format: ' + info.streams[i].format);
console.log('Stream full format: ' + info.streams[i].fullFormat);
console.log('Stream width: ' + info.streams[i].width);
console.log('Stream height: ' + info.streams[i].height);
console.log('Stream bitrate: ' + info.streams[i].bitrate);
console.log('Stream sample rate: ' + info.streams[i].sampleRate);
console.log('Stream sample format: ' + info.streams[i].sampleFormat);
console.log('Stream channel layout: ' + info.streams[i].channelLayout);
console.log('Stream sar: ' + info.streams[i].sampleAspectRatio);
console.log('Stream dar: ' + info.streams[i].displayAspectRatio);
console.log('Stream average frame rate: ' + info.streams[i].averageFrameRate);
console.log('Stream real frame rate: ' + info.streams[i].realFrameRate);
console.log('Stream time base: ' + info.streams[i].timeBase);
console.log('Stream codec time base: ' + info.streams[i].codecTimeBase);
}
}
}); -
启用日志回调,将所有
FFmpeg
日志重定向到控制台/文件/小部件。logCallback = (logData) => {
console.log(logData.text);
};
...
FFmpeg.enableLogCallback(logCallback); -
启用统计回调,跟踪正在进行的操作进度。
statisticsCallback = (statisticsData) => {
console.log('Statistics; frame: ' + statisticsData.videoFrameNumber.toFixed(1) + ', fps: ' + statisticsData.videoFps.toFixed(1) + ', quality: ' + statisticsData.videoQuality.toFixed(1) +
', size: ' + statisticsData.size + ', time: ' + statisticsData.time);
};
...
FFmpeg.enableStatisticsCallback(statisticsCallback); -
在不实现统计回调的情况下轮询统计信息。
FFmpeg.getLastReceivedStatistics().then(stats => console.log('Stats: ' + JSON.stringify(stats)));
-
在开始新操作之前重置统计信息。
FFmpeg.resetStatistics();
-
设置日志级别。
FFmpeg.setLogLevel(LogLevel.AV_LOG_WARNING);
-
通过指定自定义字体目录注册自己的字体,以便在
FFmpeg
过滤器中使用。请注意,此功能无法在相对路径上工作,您需要提供完整的文件系统路径。- 无任何字体名称映射
FFmpeg.setFontDirectory('<folder with fonts>', null);
- 应用自定义字体名称映射。如果您的字体名称包含空格字符,此功能非常有用。
FFmpeg.setFontDirectory('<folder with fonts>', { my_easy_font_name: "my complex font name" });
-
使用自己的
fontconfig
配置。FFmpeg.setFontconfigConfigurationPath('<fontconfig configuration directory>');
-
禁用库的日志功能。日志不会打印到控制台,并且日志回调将被禁用。
FFmpeg.disableLogs();
-
禁用库的统计功能。统计回调将被禁用,但最后接收到的统计数据仍然可用。
FFmpeg.disableStatistics();
-
列出启用的外部库。
FFmpeg.getExternalLibraries().then(externalLibraries => {
console.log(externalLibraries);
});
许可证
Apache 许可证版本 2.0,2004 年 1 月