精华内容
下载资源
问答
  • ffmpeg混音命令

    千次阅读 2018-11-15 21:34:09
    ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT inputs The number of inputs. If unspecified, it defaults to 2.//输入的数量,如果没有...

    ffmpeg命令目录


    ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
    
    inputs
    The number of inputs. If unspecified, it defaults to 2.//输入的数量,如果没有指明,默认为2.
     
    duration
    How to determine the end-of-stream.//决定了流的结束
     
    			longest
    			The duration of the longest input. (default)//最长输入的持续时间
    			shortest
    			The duration of the shortest input.//最短输入的持续时间
    			first
    			The duration of the first input.//第一个输入的持续时间
     
    dropout_transition
    The transition time, in seconds, for volume renormalization when an input stream ends. The default value is 2 seconds.
    //指一个输入流结束时音量从正常到无声渐止效果,默认为2秒
    
    
    展开全文
  • ffmpeg混音到任意位置

    2020-07-20 23:04:30
    ffmpeg -i cut.aac -filter_complex "adelay=3000|3000" mov.aac ffmpeg -y -i 439130.mp3 -i mov.aac -filter_complex "amix=inputs=2:duration=longest" out.aac 参考: 使用 ffmpeg 缩放、裁剪、剪辑视频 ...

    ffmpeg -i cut.aac -filter_complex "adelay=3000|3000"  mov.aac

    ffmpeg -y  -i 439130.mp3  -i mov.aac -filter_complex  "amix=inputs=2:duration=longest" out.aac

    参考:

    使用 ffmpeg 缩放、裁剪、剪辑视频

    我们平时使用手机拍摄的视频一般都在1080p及以上,在实际应用中,比如共享给朋友等,可能需要处理一下会比较方便。下面列出几个 ffmpeg 常用的处理视频方法(如果只需要格式转换,可以参考我之前的一篇文章《使用H264编码转换视频》)

    缩小视频

    假设原始视频尺寸是 1080p(即 1920×1080 px,16:9),使用下面命令可以缩小到 480p:

    $ ffmpeg -i a.mov -vf scale=853:480 -acodec aac -vcodec h264 out.mp4
    各个参数的含义:

    -i a.mov 指定待处理视频的文件名
    -vf scale=853:480 vf 参数用于指定视频滤镜,其中 scale 表示缩放,后面的数字表示缩放至 853×480 px,其中的 853px 是计算而得,因为原始视频的宽高比为 16:9,所以为了让目标视频的高度为 480px,则宽度 = 480 x 9 / 16 = 853
    -acodec aac 指定音频使用 aac 编码。注:因为 ffmpeg 的内置 aac 编码目前(写这篇文章时)还是试验阶段,故会提示添加参数 “-strict -2” 才能继续,尽管添加即可。又或者使用外部的 libfaac(需要重新编译 ffmpeg)。
    -vcodec h264 指定视频使用 h264 编码。注:目前手机一般视频拍摄的格式(封装格式、文件格式)为 mov 或者 mp4,这两者的音频编码都是 aac,视频都是 h264。
    out.mp4 指定输出文件名
    上面的参数 scale=853:480 当中的宽度和高度实际应用场景中通常只需指定一个,比如指定高度为 480 或者 720,至于宽度则可以传入 “-1” 表示由原始视频的宽高比自动计算而得。即参数可以写为:scale=-1:480,当然也可以 scale=480:-1

    裁剪视频

    有时可能只需要视频的正中一块,而两头的内容不需要,这时可以对视频进行裁剪(crop),比如有一个竖向的视频 1080 x 1920,如果指向保留中间 1080×1080 部分,可以使用下面的命令:

    $ ffmpeg -i a.mov -strict -2 -vf crop=1080:1080:0:420 out.mp4
    其中的 crop=1080:1080:0:420 才裁剪参数,具体含义是 crop=width:height:x:y,其中 width 和 height 表示裁剪后的尺寸,x:y 表示裁剪区域的左上角坐标。比如当前这个示例,我们只需要保留竖向视频的中间部分,所以 x 不用偏移,故传入0,而 y 则需要向下偏移:(1920 – 1080) / 2 = 420

    视频缩放和裁剪是可以同时进行的,如下命令则为将视频缩小至 853×480,然后裁剪保留横向中间部分:

    $ ffmpeg -i IMG_4940.MOV -strict -2 -vf scale=853:480,crop=480:480:186:0 out.mp4
    剪辑视频

    如果有一段很长的视频只需保留其中的一段,可以使用下面命令对视频进行剪辑。

    $ ffmpeg -i a.mov -ss 00:00:21 -t 00:00:10 -acodec aac -vcodec h264 -strict -2 out.mp4
    其中 -ss 00:00:21 表示开始剪辑的位置(时间点),-t 00:00:10 表示剪辑的长度,即 10 秒钟。

    当然一段视频是可以在一个命令里同时进行剪辑、缩放、裁剪的,只需把相关的参数合在一起即可。

    /**************************音视频变速***********************************/
    /**************************音视频变速***********************************/
    /**************************音视频变速***********************************/

    可以改变使用的视频流的速度setpts视频滤波器。请注意,在以下示例中,音频流不会更改,因此,最好使用-an禁用。

    要将视频的速度提高一倍,您可以使用:

    ffmpeg -i input.mkv -filter:v "setpts=0.5PTS" output.mkv
    1
    ffmpeg -i input.mkv -filter:v "setpts=0.5
    PTS" output.mkv
    滤波器通过改变每个视频帧的呈现时间戳(PTS)来工作。例如,如果有两个连续帧显示在时间戳1和2,并且您想加速视频,那些时间戳分别需要变为0.5和1。因此,我们必须将它们乘以0.5。

    请注意,此方法将丢弃帧以实现所需的速度。您可以通过指定比输入更高的输出帧速率来避免丢帧。例如,从4 FPS的输入到加速到4倍(16 FPS)的输入:

    ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.25PTS" output.mkv
    1
    ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.25
    PTS" output.mkv
    要减慢视频播放速度,您必须使用大于1的乘数:

    ffmpeg -i input.mkv -filter:v "setpts=2.0PTS" output.mkv
    1
    ffmpeg -i input.mkv -filter:v "setpts=2.0
    PTS" output.mkv
    加速/减慢音频

    您可以加快或音频与减缓安腾普音频过滤器。将音频的速度提高一倍:

    ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv
    1
    ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv
    atempo过滤器限于使用介于0.5和2.0之间的值(因此它可以将其减慢到不小于原始速度的一半,并且速度不超过输入的两倍)。如果你需要,你可以通过串联多个atempo过滤器来克服这个限制。以下四倍音频速度:

    ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv
    1
    ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv
    使用复杂的滤镜,您可以同时加速视频和音频:

    fmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv
    1
    fmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5
    PTS[v];[0:a]atempo=2.0[a]"

    视频连接
    ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg
    http://trac.ffmpeg.org/wiki/How%20to%20concatenate%20(join%2C%20merge)%20media%20files

    去除视频声音
    ffmpeg -i 1.avi -vcodec copy -an 2.avi

    合并音频和视频
    ffmpeg -i a.wav -i a.avi out.avi
    若音频比视频长,画面停留在最后一帧,继续播放声音。
    显示多幅图片(不同位置)
    ffmpeg -y -i boss.mp4 -i left.png -i left.png -filter_complex "overlay=5:5,overlay=0:0" -f mp4 output.mp4
    -filter_complex:使用复合滤镜
    "overlay=5:5,overlay=0:0":第一个图片的x、y坐标为(5,5),第二个为(0,0)

    在特定时间显示图片
    ffmpeg -y -i 1.avi -i 1.png -filter_complex "overlay=x='if(between(t,1,3),60,-500)':y=50" -f mp4 left1.mp4
    命令行中可以使用表达式,参考:http://ffmpeg.org/ffmpeg-all.html#Expression-Evaluation
    具体意思是时间t在1到3秒内,图片的x坐标为60,否则为-500(移出屏幕),y坐标一直为50不变

    音频提前或延迟N秒
    ffmpeg -i ogg.ogg -i 1.avi -filter_complex "adelay=3000|3000" output.avi
    -filter_complex "adelay=3000|3000":对前面的ogg音频的两个声道都延迟3000毫秒
    http://ffmpeg.org/ffmpeg-all.html#adelay

    音频合成
    ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
    inputs=3:三个输入
    duration=first:输出长度为第一个输入的长度
    dropout_transition=3:声音淡出时间为3秒


     

    展开全文
  • node ffmpeg混音以及音视频混合处理

    千次阅读 2019-06-10 09:27:20
    https://www.jianshu.com/p/2a824f13b2af使用FFmpeg合并音视频 https://www.jianshu.com/p/2a824f13b2affmpeg混音以及音视频混合处理 http://phpstudy.php.cn/c.php/45618.htmlffmpeg 视频合并 如何保留音频 ...

    https://www.jianshu.com/p/2a824f13b2af 使用FFmpeg合并音视频

    https://www.jianshu.com/p/2a824f13b2af fmpeg混音以及音视频混合处理

    http://phpstudy.php.cn/c.php/45618.html  ffmpeg 视频合并 如何保留音频

    https://www.cnblogs.com/laien/p/7132951.html  ffmpeg nodejs中使用

    http://nodejs.cn/api/child_process.html

     

    node执行ffmpeg命令

    只需要把ffmpeg.exe放在node执行的目录下,就可以使用node来执行ffmpeg命令。
    实例代码:

    const child = require('child_process')
    child.exec("ffmpeg -i "concat:first.mp3|second.mp3" -acodec copy third.mp3", function(err){
        if (err) {
            console.log(err.message);
            info.message = err.message;
            event.sender.send(data.callback, JSON.stringify(info))
        } else {
            info.flag = true;
            info.message = '音频处理保存成功'
            event.sender.send(data.callback, JSON.stringify(info))
        }
    })
    --------------------- 
    作者:SoGreater 
    来源:CSDN 
    原文:https://blog.csdn.net/qq_36607860/article/details/86472948 
    版权声明:本文为博主原创文章,转载请附上博文链接!

     

     

    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'
    //     });
    // //
    展开全文
  • ffmpeg混音以及音视频混合

    万次阅读 2016-11-14 13:38:58
    Duration = MAX(input a, v)1. Audio merge1.1 amerge-ac 2 speed up...ffmpeg -i test.mp4 -i test.mp3 -filter_complex "[0:a] [1:a]amerge=inputs=2[aout]" -map "[aout]" -ac 2 mix_amerge.aac PS: Without ac spee

    Duration = MAX(input a, v)

    0. 前言

    本文包括以下内容:
    (1)混音:多个音频混合
    采用amerge, amix对多个音频进行混音(而非拼接)
    (2)音视频混合——muxing
    (3)修改音频音量

    1. Audio merge

    1.1 amerge

    -ac 2 speed up

    
    ffmpeg -i test.mp4 -i test.mp3 -filter_complex "[0:a] [1:a]amerge=inputs=2[aout]" -map "[aout]" -ac 2 mix_amerge.aac
    

    PS: Without ac speed will be half.

    1.2 amix

    speed = amerge + ac 2

    
    ffmpeg -i test.aac -i test.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2  mix.aac
    

    2. Simple A/V Muxer

    -shortest : duration = MIN(inputs)

    
    ffmpeg -i test.mp4 -i test.mp3 -vcodec copy -acodec aac -map 0:v:0 -map 1:a:0 -shortest mix_test.mp4
    

    adjust volume

    
    ffmpeg -i test.mp4 -i test.mp3 -vcodec copy -acodec aac -map 0:v:0 -map 1:a:0 -vol 60 mix_test.mp4

    3. Complex A/V Merge (audio merge)

    amerge : duration is shortest

    
    ffmpeg -i test.mp4 -i test.mp3 -c:v copy -map 0:v:0 -filter_complex "[0:a][1:a]amerge=inputs=2[aout]" -map "[aout]" -ac 2  mix_amerge.mp4
    

    amix : setup duration

    ffmpeg -i test.mp4 -i test.mp3 -filter_complex "[0:a][1:a]amix=inputs=2:duration=first[aout]" -map "[aout]" -c:v copy -map 0:v:0 mix_amerge.mp4

    4. Loop shorter iterm

    concat shorter one

    ffmpeg -i input_audio -f concat -i <(for i in {1..n}; do printf "file '%s'\n" input_video; done) -c:v copy -c:a copy -shortest output_video

    5. Adjust Volume

    audio:

    ffmpeg -i test.aac -i test.mp3 -filter_complex "[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.9[a0]; [1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.5[a1]; [a0][a1]amerge=inputs=2[aout]" -map "[aout]" -ac 2 mix_v0.5.aac

    video:

    ffmpeg -i test.mp4 -i test.mp3 -filter_complex "[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.9[a0]; [1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.5[a1]; [a0][a1]amix=inputs=2:duration=first[aout]" -map "[aout]" -ac 2 -c:v copy -map 0:v:0 mix_amerge.mp4
    展开全文
  • ffmpeg混音以及音视频混合处理

    千次阅读 2019-01-14 14:37:16
    ffmpeg混音以及音视频混合处理 ffmpeg的命令 这里是我最近研究的音视频混合处理的一些ffmpeg的命令 // 音频拼接 ffmpeg - i "concat:first.mp3|second.mp3" - acodec copy third . mp3 ( third格式和...
  • 主要学习的是ffmpeg官方demo里的doc/examples/filtering_audio.c ffmpeg混流的主要流程 初始化filter 读取aac数据,解码后将数据压入filter buffer中 从buffer中取出数据编码成aac数据 1、初始化filter 首先定义...
  • ffmpeg混音(将多个声音合成一个)命令

    千次阅读 2016-09-28 17:10:49
    ffmpeg命令中可以使用filter amix实现这个功能。 官方文档 http://ffmpeg.org/ffmpeg-filters.html  6.8 amix  Mixes multiple audio inputs into a single output. Note that this filter only supports float...
  • 前言 接上一篇博客,上一篇中介绍了单路和双路混流,要是输入输出流多了像之前那样写就会很麻烦,于是考虑普适的情况,输入一个n初始化好对应的filter。 具体实现 定义要用到的结构体和类(里面一些参数的含义可以...
  • 前言 本文是简单的混流实现,输入为两个媒体文件(音频或带音频的视频文件),输出为混流后的aac文件。 完整代码 /* ... * * Permission is hereby granted, free of charge, to any person obtaining a copy

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,484
精华内容 593
关键字:

ffmpeg混音