zoukankan      html  css  js  c++  java
  • ffmpeg常用指令

    在osx系统下通过ffmpeg查看设备

    ffmpeg -f avfoundation -list_devices true -i ""

    -f 指定的是输入输出格式, -i指定输入的文件/流

    通过输出内容可以看到,video部分支持的时两个设备:

    [0] facetime HD Camera

    [1]Capture screen 0

    音频部分支持的是两个设备:

    [0]Built-in Microphone

    [1]小土豆

    ffmpeg支持的格式可以用

    ffmpeg -formats

    查看

    在ffmpeg中,默认是用序号(index)表示输入输出设备的,[0] FaceTime HD Camera的序号是0,就是第一个设备。[1] Capture screen 0的序号是1,就是第二个设备。

    现在试试捕获流

    ffmpeg -f avfoundation -i "1" -target pal-vcd ./hello.mpg

    这个打开avfoundation 输入流指定为1,就是捕获屏幕,然后用-target设置输出格式为pal-vcd,文档上说-target支持

    vcd, svcd, dvd, dv, dv50 这些格式,并且有时候需要加上pal- ntsc- film-前缀,输出文件为./hello.mpg

     

    捕获摄像头试试

    ffmpeg -f avfoundation -i "0" -target pal-vcd ./hello.mpg

    上面方法应该是失败的,提示码率不符,

    [avfoundation @ 0x7fd088808400]   1280x720@[1.000000 30.000000]fps

    [avfoundation @ 0x7fd088808400]   640x480@[1.000000 30.000000]fps

    [avfoundation @ 0x7fd088808400]   320x240@[1.000000 30.000000]fps

    0: Input/output error

    现在加上码率

    ffmpeg -f avfoundation -framerate 30 -i "0" -target pal-vcd ./hello.mpg

    已经可以捕获摄像头了

    也可以再加上分辨率

    ffmpeg -f avfoundation -framerate 30 -video_device_index 0 -i -s 1280x720 -target pal-vcd ./hello.mpg

    这里还可以显式的声明使用视频索引 -video_device_index

    还有很多参数可以尝试就不再细说了。

    想停止捕获就在终端里面按q键。

    //推流桌面 - 只有桌面内容

    ffmpeg -f avfoundation -pixel_format uyvy422 -i "1" -f flv rtmp://localhost:1935/hls/movie

    ffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1935/hls/movie

     

    //推流摄像头

    ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i  "0"  -vcodec libx264 -acodec libfaac -f flv  rtmp://localhost:1935/hls/movie

     

    //只推流麦克风

    ffmpeg -f avfoundation -i ":0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/hls/movie

     

    //摄像头+麦克分

    ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i "0:0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/hls/movie

     或

    ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i "0:0" -vsync 2 -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -b:v 1M -b:a 128K -f flv rtmp://localhost:1935/hls/movie

     

     

    基础知识:

    1、码流(码率) 

    码流(Data Rate)是指视频文件在单位时间内使用的数据流量,也叫码率或码流率,通俗一点的理解就是取样率,是视频编码中画面质量控制中最重要的部分,一般我们用的单位是kb/s或者Mb/s。一般来说同样分辨率下,视频文件的码流越大,压缩比就越小,画面质量就越高。码流越大,说明单位时间内取样率越大,数据流,精度就越高,处理出来的文件就越接近原始文件,图像质量越好,画质越清晰,要求播放设备的解码能力也越高。当然,码流越大,文件体积也越大,其计算公式是文件体积=时间X码率/8。

    2、采样率 

    采样率(也称为采样速度或者采样频率)定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样率是指将模拟信号转换成数字信号时的采样频率,也就是单位时间内采样多少点。一个采样点数据有多少个比特。比特率是指每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,传送的数据越大,音质越好.比特率 =采样率 x 采用位数 x声道数.

    3、比特率

     比特率是指每秒传送的比特(bit)数。单位为bps(BitPer Second),比特率越高,传送的数据越大。在视频领域,比特率常翻译为码率!!! 比特率表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示,而比特就是二进制里面最小的单位,要么是0,要么是1。比特率与音、视频压缩的关系,简单的说就是比特率越高,音、视频的质量就越好,但编码后的文件就越大;如果比特率越少则情况刚好相反。比特率是指将数字声音、视频由模拟格式转化成数字格式的采样率,采样率越高,还原后的音质、画质就越好。

    4、帧速率

    帧速率也称为FPS(Frames PerSecond)的缩写——帧/秒。FPS是指每秒钟刷新的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。越高的帧速率可以得到更流畅、更逼真的动画。每秒钟帧数(FPS)越多,所显示的动作就会越流畅。


    为视频添加logo

    //要添加logo的原视频路径

     /Users/gao/Desktop/112211.mp4

    //logo路径

    /Users/gao/Desktop/1531303200702.jpg

    //添加logo后新视频保存的路径

    /Users/gao/Desktop/11221221out.mp4

    ffmpeg -i  /Users/gao/Desktop/112211.mp4 -i /Users/gao/Desktop/1531303200702.jpg -filter_complex overlay /Users/gao/Desktop/11221221out.mp4

    效果:

    要贴到其他地方?看下面:  
    右上角:  

    ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w output.mp4  

    左下角:  

    ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=0:H-h output.mp4  

    右下角:  

    ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w:H-h output.mp4

    语法:-vf delogo=x:y:w:h[:t[:show]]  
    x:y 离左上角的坐标  
    w:h logo的宽和高  
    t: 矩形边缘的厚度默认值4  
    show:若设置为1有一个绿色的矩形,默认值0。

    ffmpeg -i input.mp4 -vf delogo=0:0:220:90:100:1 output.mp4

    提取音频

    提取到的音频的保存路径及格式
    /Users/gao/Desktop/output.aac
    ffmpeg -i /Users/gao/Desktop/112211.mp4 -acodec copy -vn /Users/gao/Desktop/output.aac

    上面的命令,默认mp4的audio codec是aac,如果不是,可以通过下面的指令转为最常见的aac。

    ffmpeg -i test.mp4 -acodec aac -vn output.aac

    这里的audio codec指的是要提取的音频格式  如果不想用aac想入其他格式 比如mp3也是可以的,指令如下

    ffmpeg -i /Users/gao/Desktop/112211.mp4 -acodec mp3 -vn /Users/gao/Desktop/output.mp3

    这里的audio codec要设置为mp3  然后文件保存的格式也是mp3

     视频转换

    将MP4转换为avi格式

    ffmpeg -i /Users/gao/Desktop/112211.mp4 /Users/gao/Desktop/112211.avi

    参考资料一

    参考资料二

    参考资料三

    参考资料四

  • 相关阅读:
    学习笔记
    js闭包
    一个非必现问题的定位和反思
    C语言的设计模式面向对象机制的实现(一)
    多线程和单线程的执行效率问题
    python 多态
    C语言的设计模式接口隔离
    构建表达式二叉树
    C语言的设计模式依赖倒置
    C语言的设计模式单一职责
  • 原文地址:https://www.cnblogs.com/gaoxiaoniu/p/9299018.html
Copyright © 2011-2022 走看看