ffmpeg nodejs中使用

1.获取到推流地址
2.进入cmd,输入命令ffmpeg -re -i xxxxx.flv -c copy -f flv "xxxxurl"
其中,
xxxxx.flv为本地视频文件,Sioeye推流需要符合使用的是视频H264,音频ACC编码
"xxxxxrul"为推流地址

////////////////////////////////////////////////////////////////////////////////

ffmpe NodeJs中使用

var exec = require(‘child_process‘).exec;var Ffmpeg = require(‘fluent-ffmpeg‘);var config = require(‘../config‘)// module.exports  = {   function generatTsfile (activity,sourceFile) {        // var source        // var commandStr = ‘ffmpeg -i ‘;        // commandStr += config.videodirectory +  videoFile ;        // commandStr += ‘ -y -vcodec copy -acodec copy -map 0 -f segment -segment_list ‘;        // commandStr +=+ config.videodirectory + ‘‘        var commandStr = ‘ffmpeg -i D:/desktop/testfile/1.flv  -y -vcodec copy -acodec copy -map 0 -f segment -segment_list D:/desktop/testfile/test1.m3u8   -segment_time 10 D:/desktop/testfile/test-%03d.ts‘

var command = Ffmpeg(‘D:/desktop/testfile/454224124c08470a90a9eaa0b3cb885a/123224124c08470a90a9eaa0b3cb6666/sourceVideo/1080p_3_2.mp4‘)            .save(‘D:/desktop/testfile/454224124c08470a90a9eaa0b3cb885a/123224124c08470a90a9eaa0b3cb6666/ts/1080p_3_2-%03d.ts‘)            .outputOptions([                ‘-y‘,            ‘-vcodec copy‘,            ‘-acodec copy‘,            ‘-map 0‘,              ‘-f segment‘,            ‘-segment_list D:/desktop/testfile/454224124c08470a90a9eaa0b3cb885a/123224124c08470a90a9eaa0b3cb6666/sourceVideo/1080p_3_2.m3u8‘,            ‘-segment_time 10‘]            )

// .takeScreenshots({ timemarks: [ ‘00:00:02.000‘ ],            //     size: ‘150x100‘,            //     filename:‘thumbnail-at-%s-%00i-seconds.jpg‘            // }            //  , ‘D:/desktop/testfile‘);

command            .on(‘progress‘, function(info) {                console.log(‘progress ‘ + info.percent + ‘%‘);            })            .on(‘filenames‘, function(filenames) {                console.log(‘screenshots are ‘ + filenames.join(‘, ‘));            })            .on(‘error‘, function(err) {                console.log(‘An error occurred: ‘ + err.message);            })            .on(‘end‘, function() {                console.log(‘Merging finished !‘);            })    }

var num = 0;function generateImage(i) {

console.log(i,num++);    // var commandStr = ‘ffmpeg -i D:/desktop/testfile/1.mp4 -f image2 -vf fps=fps=1/2 -q:v 0 D:/desktop/testfile/test-%02d.jpg‘;

var command = Ffmpeg(‘D:/desktop/testfile/454224124c08470a90a9eaa0b3cb885a/123224124c08470a90a9eaa0b3cb6666/ts/1080p_3_2-‘+i+‘.ts‘)        .save(‘D:/desktop/testfile/454224124c08470a90a9eaa0b3cb885a/123224124c08470a90a9eaa0b3cb6666/thumbnailtmp/1080p_3_2-‘+i+‘-%02d.jpg‘)        .outputOptions([            ‘-y‘,            ‘-f image2‘,            ‘-vf fps=fps=1/2‘,            ‘-q:v 0‘        ])       // .videoFilter(‘fps=fps=1/2‘)       //  .takeScreenshots({       //       //timemarks: [ ‘00:00:02.000‘ ],       //      size: ‘150x100‘,       //      filename:‘thumbnail-at-%s-%00i-seconds.jpg‘       //  }       //   , ‘D:/desktop/testfile‘);

command        .on(‘progress‘, function(info) {            //console.log(‘progress ‘ + info.percent + ‘%‘);        })        .on(‘filenames‘, function(filenames) {            //console.log(‘screenshots are ‘ + filenames.join(‘, ‘));        })        .on(‘error‘, function(err) {            //console.log(‘An error occurred: ‘ + err.message);        })        .on(‘end‘, function() {            //console.log(‘Merging finished !‘);        })

} // generatTsfile()

//var count = 0;function generate() {   // setTimeout(function () {

var str = count.toString().length === 1 ? ‘00‘+count : ‘0‘+count;        generateImage(str)        count ++;        console.log(count,str);        if(count<32)            generate();

// },10000)}

generate();

// //切片生成图片// var exec = require(‘child_process‘).exec;// var commandStr = ‘ffmpeg -i D:/desktop/testfile/1.mp4 -f image2 -vf fps=fps=1/2 D:/desktop/testfile/test-%02d.jpg&exit‘;// var time = new Date();// exec(commandStr,function (err,data,data1) {//     console.log(new Date() - time);// })

// var tsStr = ‘ffmpeg -i D:/desktop/testfile/1.mp4  -c:v libx264 -c:a aac -strict -2 -f hls output.m3u8‘;////生成切片// var generalTsStr = ‘ffmpeg -i D:/desktop/testfile/1.flv  -y -vcodec copy -acodec copy -map 0 -f segment -segment_list D:/desktop/testfile/test1.m3u8   -segment_time 10 D:/desktop/testfile/test-%03d.ts‘//// var time = new Date();// exec(generalTsStr,function (error, stdout, stderr) {//     console.log(new Date() - time);// })

// var spawn = require(‘child_process‘).spawn;

//Set the path to where FFmpeg is installed//proc.setFfmpegPath("D:\\ffmpeg-3.0\\vs2013_build\\bin\\ffmpeg.exe"); //I forgot to include "ffmpeg.exe"

// ffmpeg(‘D:/desktop/testfile/1.mp4‘)//     .videoCodec(‘libx264‘)//     .audioCodec(‘libmp3lame‘)//     .size(‘320x240‘)//     .on(‘error‘, function(err) {//         console.log(‘An error occurred: ‘ + err.message);//     })//     .on(‘end‘, function() {//         console.log(‘Processing finished !‘);//     })//     .save(‘D:/desktop/testfile/output.mp4‘);

// ffmpeg(‘D:/desktop/testfile/1.mp4‘)//     .on(‘stderr‘, function(stderrLine) {//         console.log(‘Stderr output: ‘ + stderrLine);//     })//     .on(‘progress‘, function(progress) {//         console.log(‘Processing: ‘ + progress.percent + ‘% done‘);//     })//     .on(‘error‘, function(err, stdout, stderr) {//         console.log(‘Cannot process video: ‘ + err.message);//     })//     .on(‘end‘, function(stdout, stderr) {//         console.log(‘Transcoding succeeded !‘);//     });;;

// var command = ffmpeg(‘D:/desktop/testfile/1.mp4‘)  //     .audioCodec(‘libfaac‘)  //   .videoCodec(‘libx264‘)  //   .format(‘mp4‘);  //  // command.clone()  //   .size(‘320x200‘)  //   .save(‘D:/desktop/testfile/11.mp4‘);

// ffmpeg(‘D:/desktop/testfile/1.mp4‘)//     .screenshots({//         timestamps: [30.5, ‘50%‘, ‘00:10.123‘],//         filename: ‘thumbnail-at-%s-seconds.png‘,//         folder: ‘D:/desktop/testfile/output‘,//         size: ‘320x240‘//     });// //
时间: 2024-08-29 14:40:53

ffmpeg nodejs中使用的相关文章

Node.js(十二)——NodeJs中的Promise

爬虫基于回调和事件的方式去实现,回调也是被诟病已久的问题尤其是callback这种,无论是阅读还是调试都很费劲,甚至我们连代码的堆栈都看不到,这是一种反人类的写法,Promise来拜托这种痛苦的方式 传统方式实现动画效果: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Promise animation</title> <style&g

[转]nodejs中的process模块--child_process.exec

1.process是一个全局进程,你可以直接通过process变量直接访问它. process实现了EventEmitter接口,exit方法会在当进程退出的时候执行.因为进程退出之后将不再执行事件循环,所有只有那些没有回调函数的代码才会被执行. 在下面例子中,setTimeout里面的语句是没有办法执行到的. 1 process.on('exit', function () { 2 setTimeout(function () { 3 console.log('This will not ru

nodejs中aes-128-cbc加密和解密

和java程序进行交互的时候,java那边使用AES 128位填充模式:AES/CBC/PKCS5Padding加密方法,在nodejs中采用对应的aes-128-cbc加密方法就能对应上,因为有使用向量(iv),所以nodejs中要用createCipheriv方法,而不是createCipher. 在这类加密和解密的计算中,最最要注意的就是中文编码问题,不然铁定采坑.我踩完坑了,把能跑的代码发上来下,运行环境nodejs 4.4.6. var crypto = require('crypto

nodeJS中npm常见的命令

常用的nodeJS中npm的命令:npm主要是node包管理和发布的工具.npm常用的命令:1:npm install <name> //(下载包) 下载后的包放在当前路径下面 npm install express 下载express模块2:npm install <name> -g //-g 将包安装到全局环境中,我PC的全局环境是:C:\Users\qinbb\AppData\Roaming\npm,但是在代码中直接通过require()的方式是没有办法调用全局安装的包的3:

在NodeJS中玩转Protocol Buffer

Protocol Buffer入门教程 Protocol Buffer是个什么鬼 NodeJS开发者为何要跟Protocol Buffer打交道 在NodeJS中实践Protocol Buffer协议 选择支持protobuf的NodeJS第三方模块 一个栗子 书写proto文件 编译 proto 文件 编写 Writer 编写Reader 运行结果 再举一个栗子 编写proto 编写client 书写server 运行结果 其他高级特性 嵌套Message Import Message 总结一

通读cheerio API ——NodeJs中的jquery

通读cheerio API ——NodeJs中的jquery 所谓工欲善其事,必先利其器,所以通读了cheerio的API,顺便翻译了一遍,有些地方因为知道的比较少,不知道什么意思,保留了英文,希望各位不吝告诉我,然后一起把这个翻译完成. ###cheerio 为服务器特别定制的,快速.灵活.实施的jQuery核心实现. ###Introduction 将HTML告诉你的服务器 var cheerio = require('cheerio'), $ = cheerio.load('<h2 cla

【前端学习笔记】2015-09-09~~~~nodejs中的require()和module.exports

nodejs中一个js文件就可以看做是一个模块 在node环境中,可以直接var a=require('模块路径以及不带扩展名的模块名') exports---module.exports 其中node准备好了module变量, var module={ id:'hello', exports:{} }; 输出模块变量,最好都用module.exports=''或者函数;当赋值不是函数或者数组时,可以对exports直接赋值,建议统一使用module.exports=进行赋值

Nodejs中的流

Nodejs中的很多地方都用到了流,流是一个很常见的概念,一个http请求,控制台输入输出的形式都是流.流可以分为三种: 可读流 可写流 既能读又能写 其中第三种流又可以分为全双工流Duplex和转换流Transform,另外,所有的流都是EventEmitter的实例,也就是有发送事件和处理事件的能力. 可读流 Readable Stream 可读流可以输出数据,常见的可读流有: http请求和响应 读文件 压缩解压 加密解密 tcp sockect 进程输入 可读流分为两种模式:流式的和非流

nodejs中exports与module.exports的实践

只要是在nodejs中写自己的文件模块就少不了会遇到module.exports和exports的使用,看别人的代码大多都会使用“module.exports=exports=<对象/函数等>”怪异的串联用法,一问原因,貌似都是云里雾里,如此写法更像是保守的防止性写法. 这种问题除了看源代码外,只能写点代码进行求证. 写了两个模块文件,provider.js产生任意类型的对象, customer.js返回并输出provider对象. 第一种情况: provider.js,直接在exports上