zoukankan      html  css  js  c++  java
  • 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'
    // });
    // //
  • 相关阅读:
    hdu5886Tower Defence(树形dp)
    hdu5893 List wants to travel(树链剖分+线段树)
    hdu5884 Sort(二分)
    hdu3559 Frost Chain (概率dp+记忆化搜索)
    hdu5790 Prefix(Trie树+主席树)
    tp5 cache 子文件夹名称
    resize 计算尺寸不正确
    Destoon Global 全局函数对应表
    MySQL语法大全
    myslq 表与表之前的数据转移
  • 原文地址:https://www.cnblogs.com/laien/p/7132951.html
Copyright © 2011-2022 走看看