zoukankan      html  css  js  c++  java
  • 音视频之ffmpeg命令(四)

    基本参数说明

    命令格式

    • ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
    • ffmpeg [[options][`-i' inputfile]]... {[options] outputfile}...

      • h264: 表示输出的是h264的视频裸流
      • mp4: 表示输出的是mp4的视频
      • mpegts: 表示ts视频流

    主要参数

    • -i 设定输入流
    • -f 设定输出格式
    • -ss 开始时间

    视频参数

    • -b 设定视频流量,默认为200kbit/s
    • -r 设定帧速率,默认为25
    • -s 设定画面的宽与高
    • aspect 设定画面的比例
    • -vn 不处理视频
    • vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器,一般后面加copy表示拷贝

    音频参数

    • -ar 设定采样率
    • -ac 设定声音的Channel数
    • -acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器,一般后面加copy表示拷贝
    • -an 不处理音频

    获取视频信息

    ffmpeg -i video.avi //查看本地的视频信息
     
    ffmpeg -i http://static.tripbe.com/videofiles/20121214/9533522808.f4v.mp4//查看远程http视频信息

    分离视频音频流

    ffmpeg -i input_file -vcodec copy -an output_file_video  //分离视频流
     
    ffmpeg -i input_file -acodec copy -vn output_file_audio  //分离音频流
     
    ffmpeg -i input.mp4 -an output.mp4             //去掉视频中的音频
     
    ffmpeg -i test.avi -vcodec copy -an output.avi //去掉视频中的音频

    视频转码相关

    ffmpeg -i test.ts -acodec copy -vcodec copy -f mp4 output.mp4//ts视频流转mp4
     
    ffmpeg -i test.h264 -vcodec copy -f mpegts output.ts//h264视频转ts视频流
     
    ffmpeg -i test.h264 -vcodec copy -f mp4 output.mp4//h264视频转mp4
     
    ffmpeg -i test.mp4 -b:v 640k output.flv //mp4转flv
     
    ffmpeg -i test.mp4 -acodec copy -vcodec copy -f flv output.flv //mp4转flv
     
    ffmpeg -i test.flv -b:v 640k output.mp4 //flv转mp4
     
    ffmpeg -i test.mp4 -s 176x144 -vcodec h263 -r 25 -b 12200 -ab 12200 -ac 1 -ar 8000 output.3gp //mp4转3gp
     
    ffmpeg -i test.avi -s aqif -vcodec -acodec mp3 -ac 1 -ar 8000 -r 25 -ab 32 -y output.3gp //avi转3gp
     
    ffmpeg -i test.3gp -f avi -vcodec xvid -acodec mp3 -ar 22050 output.avi //3gp转flv
     
    ffmpeg -i test.flv -s 176x144 -vcodec h263 -r 25 -b 200 -ab 64 -acodec mp3 -ac 1 -ar 8000 output.3gp //flv转3gp
     
    ffmpeg -i test.mp4 output.avi //mp4转avi
     
    ffmpeg -i test.flv -vcodec h264 -r 25 -b 200 -ab 128 -acodec mp3 -ac 2 -ar 44100 output.mp4 //flv转mp4
     
    ffmpeg -i test.mp4 -c:v libx264 -ar 22050 -crf 28 output.flv //mp4转flv
     
    ffmpeg -i test.avi -c copy -map 0 output.mp4 //avi转mp4
     
    ffmpeg -i  http://vfile1.grtn.cn/2018/1542/0254/3368/154202543368.ssm/154202543368.m3u8 -c copy -bsf:a aac_adtstoasc -movflags +faststart test.mp4 //m3u8转mp4
     
    ffmpeg -i test.mkv -y -vcodec copy -acodec copy output.mp4 //mkv转mp4
     
    ffmpeg -i test.mkv -vcodec copy -acodec copy output.avi  //mkv转avi

    图像处理相关

    ffmpeg –i test.mp4 -y -f image2 -ss 8 -t 0.001 -s 350x240 testImage.jpg //截取指定时间的缩略图,-ss后跟的时间单位是秒
     
    ffmpeg -i input.mp4 -vf "movie=logo.png [logo]; [in][logo] overlay=10:10:1 [out]" output.mp4//添加图片水印
     
    ffmpeg -i input.mp4 -i logo.png -filter_complex overlay test1.mp4//添加图片水印
     
    ffmpeg –i input.mp4 -acodec copy-vcodec copy -vf "movie=test.png[watermark];[in][watermark]overlay=10:10:1[out]" output.mp4//添加图片水印
     
    ffmpeg -y -i test2.mp4 -ignore_loop 0 -i test.gif -filter_complex overlay=0:H-h test_out2.mp4//添加GIF
     
    ffmpeg -i input.flv -vf "drawtext=fontfile=simhei.ttf: text='抖音':x=100:y=10:fontsize=24:fontcolor=yellow:shadowy=2" drawtext.mp4//添加文字水印

    视频方向处理相关

    ffmpeg -i test.mp4 -metadata:s:v rotate="90" -codec copy out.mp4//旋转90°
     
    ffmpeg -i test.mp4 -vf "transpose=1" out.mp4//顺时针旋转90°
     
    ffmpeg -i test.mp4 -vf "transpose=2" out.mp4//逆时针旋转90°
     
    ffmpeg -i test.mp4 -vf "transpose=3" out.mp4//顺时针旋转90°后再水平翻转
     
    ffmpeg -i test.mp4 -vf "transpose=0" out.mp4//逆时针旋转90°后再水平翻转
     
    ffmpeg -i test.mp4 -vf hflip out.mp4//水平翻转视频画面
     
    ffmpeg -i test.mp4 -vf vflip out.mp4//垂直翻转视频画面

    视频剪切相关

    ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg//提取图片
     
    ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi    //-r 提取图像的频率,-ss 开始时间,-t 持续时间
    
    //从10s处开始剪切,持续15秒(此方法有时候会遇到视频第一帧黑屏,就是未播放时候的封面是黑色的,原因是未定位到关键帧I帧)
    ffmpeg -i test.mp4 -ss 10 -t 15 -codec copy cut.mp4
    
    //从10s处开始剪切,持续15秒(此方法为优化后的方法,此剪切视频的方法可以解决第一帧黑屏问题,但是可能切割的时间落点稍稍的有一丢丢的不准确,但是应该可以落在误差范围之内)
    ffmpeg -ss 10 -t 15 -i test.mp4 -codec copy cut.mp4

    参考链接: 参考链接

  • 相关阅读:
    this直接加在函数或者是 “原型”对象的区别
    网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型_1计算分数精确值
    #include <stdbool.h>
    网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型
    #include <locale.h> #include <locale>
    C语言复习
    Apache HTTP Server
    深拷贝_浅拷贝
    04737_C++程序设计_第4章_类和对象
    经典算法_链表
  • 原文地址:https://www.cnblogs.com/muzichenyu/p/15353509.html
Copyright © 2011-2022 走看看