nativeScript-ffmpeg-plugin
FFmpeg for NativeScript
npm i --save nativescript-ffmpeg-plugin

NativeScript FFmpeg

Build Status NPM version Downloads Twitter Follow

安装

tns plugin add nativescript-ffmpeg-plugin

用法

  1. 执行命令。

    • 使用 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));
  2. 检查执行输出。0 表示执行成功,非零值表示失败。

    FFmpeg.getLastReturnCode().then(result => {
    console.log("Last return code: " + result);
    });

    FFmpeg.getLastCommandOutput().then(result => {
    console.log("Last command output: " + result;
    });
  3. 停止正在进行的操作。

    FFmpeg.cancel();
  4. 获取文件的媒体信息。

    • 打印所有字段
    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);
    }
    }
    });
  5. 启用日志回调,将所有 FFmpeg 日志重定向到控制台/文件/小部件。

    logCallback = (logData) => {
    console.log(logData.text);
    };
    ...
    FFmpeg.enableLogCallback(logCallback);
  6. 启用统计回调,跟踪正在进行的操作进度。

    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);
  7. 在不实现统计回调的情况下轮询统计信息。

    FFmpeg.getLastReceivedStatistics().then(stats => console.log('Stats: ' + JSON.stringify(stats)));
  8. 在开始新操作之前重置统计信息。

    FFmpeg.resetStatistics();
  9. 设置日志级别。

    FFmpeg.setLogLevel(LogLevel.AV_LOG_WARNING);
  10. 通过指定自定义字体目录注册自己的字体,以便在 FFmpeg 过滤器中使用。请注意,此功能无法在相对路径上工作,您需要提供完整的文件系统路径。

    • 无任何字体名称映射
    FFmpeg.setFontDirectory('<folder with fonts>', null);
    • 应用自定义字体名称映射。如果您的字体名称包含空格字符,此功能非常有用。
    FFmpeg.setFontDirectory('<folder with fonts>', { my_easy_font_name: "my complex font name" });
  11. 使用自己的 fontconfig 配置。

    FFmpeg.setFontconfigConfigurationPath('<fontconfig configuration directory>');
  12. 禁用库的日志功能。日志不会打印到控制台,并且日志回调将被禁用。

    FFmpeg.disableLogs();
  13. 禁用库的统计功能。统计回调将被禁用,但最后接收到的统计数据仍然可用。

    FFmpeg.disableStatistics();
  14. 列出启用的外部库。

    FFmpeg.getExternalLibraries().then(externalLibraries => {
    console.log(externalLibraries);
    });

许可证

Apache 许可证版本 2.0,2004 年 1 月

另请参阅