FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。提供了录制、转换以及流化音视频的完整解决方案。

它包含了非常先进的音频/视频编解码库libavcodec,这里介绍 ffmpeg 常用参数及python示例。

基本选项:

-formats 输出所有可用格式

-f fmt 指定格式(音频或视频格式)

-i filename 指定输入文件名,在linux下当然也能指定:0.0(屏幕录制)或摄像头

-y 覆盖已有文件

-t duration 记录时长为t

-fs limit_size 设置文件大小上限

-ss time_off 从指定的时间(s)开始, [-]hh:mm:ss[.xxx]的格式也支持

-itsoffset time_off 设置时间偏移(s),该选项影响所有后面的输入文件。该偏移被加到输入文件的时戳,定义一个正偏移意味着相应的流被延迟了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持

-title string 标题

-timestamp time 时间戳

-author string 作者

-copyright string 版权信息

-comment string 评论

-album string album名

-v verbose 与log相关的

-target type 设置目标文件类型("vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", ...)

-dframes number 设置要记录的帧数

视频选项:

-b 指定比特率(bits/s),似乎ffmpeg是自动VBR的,指定了就大概是平均比特率

-bitexact 使用标准比特率

-vb 指定视频比特率(bits/s)

-vframes number 设置转换多少桢(frame)的视频

-r rate 帧速率(fps) (可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97)

-s size 指定分辨率 (320x240)

-aspect aspect 设置视频长宽比(4:3, 16:9 or 1.3333, 1.7777)

-croptop size 设置顶部切除尺寸(in pixels)

-cropbottom size 设置底部切除尺寸(in pixels)

-cropleft size 设置左切除尺寸 (in pixels)

-cropright size 设置右切除尺寸 (in pixels)

-padtop size 设置顶部补齐尺寸(in pixels)

-padbottom size 底补齐(in pixels)

-padleft size 左补齐(in pixels)

-padright size 右补齐(in pixels)

-padcolor color 补齐带颜色(000000-FFFFFF)

-vn 取消视频

-vcodec codec 强制使用codec编解码方式('copy' to copy stream)

-sameq 使用同样视频质量作为源(VBR)

-pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率

-passlogfile file 选择两遍的纪录文件名为file

-newvideo 在现在的视频流后面加入新的视频流

高级视频选项

-pix_fmt format set pixel format, 'list' as argument shows all the pixel formats supported

-intra 仅适用帧内编码

-qscale q 以质量为基础的VBR,取值0.01-255,约小质量越好

-loop_input 设置输入流的循环数(目前只对图像有效)

-loop_output 设置输出视频的循环数,比如输出gif时设为0表示无限循环

-g int 设置图像组大小

-cutoff int 设置截止频率

-qmin int 设定最小质量,与-qmax(设定最大质量)共用,比如-qmin 10 -qmax 31

-qmax int 设定最大质量

-qdiff int 量化标度间最大偏差 (VBR)

-bf int 使用frames B 帧,支持mpeg1,mpeg2,mpeg4

音频选项:

-ab 设置比特率(单位:bit/s,也许老版是kb/s)前面-ac设为立体声时要以一半比特率来设置,比如192kbps的就设成96,转换 默认比特率都较小,要听到较高品质声音的话建议设到160kbps(80)以上。

-aframes number 设置转换多少桢(frame)的音频

-aq quality 设置音频质量 (指定编码)

-ar rate 设置音频采样率 (单位:Hz),PSP只认24000

-ac channels 设置声道数,1就是单声道,2就是立体声,转换单声道的TVrip可以用1(节省一半容量),高品质的DVDrip就可以用2

-an 取消音频

-acodec codec 指定音频编码('copy' to copy stream)

-vol volume 设置录制音量大小(默认为256) ,某些DVDrip的AC3轨音量极小,转换时可以用这个提高音量,比如200就是原来的2倍

-newaudio 在现在的音频流后面加入新的音频流

字幕选项:

-sn 取消字幕

-scodec codec 设置字幕编码('copy' to copy stream)

-newsubtitle 在当前字幕后新增

-slang code 设置字幕所用的ISO 639编码(3个字母)

Audio/Video 抓取选项:

-vc channel 设置视频捕获通道(只对DV1394)

-tvstd standard 设置电视标准 NTSC PAL(SECAM)

要得到一个高画质音质低容量的MP4的话,首先画面最好不要用固定比特率,而用VBR参数让程序自己去判断,而音质参数可以在原来的基础上提升一点,听起来要舒服很多,也不会太大,看情况调整

常用转换示例

转换为flv

ffmpeg -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 test.flv

ffmpeg -i test.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 test.flv

转换文件格式的同时抓缩微图:

ffmpeg -i "test.avi" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'

对已有flv抓图:

ffmpeg -i "test.flv" -y -f image2 -ss 8 -t 0.001 -s 350x240 'test.jpg'

转换为3gp:

ffmpeg -y -i test.mpeg -bitexact -vcodec h263 -b 128 -r 15 -s 176x144 -acodec aac -ac 2 -ar 22500 -ab 24 -f 3gp test.3gp

ffmpeg -y -i test.mpeg -ac 1 -acodec amr_nb -ar 8000 -s 176x144 -b 128 -r 15 test.3gp

例:

ffmpeg -y -i "test.avi" -title "Test" -vcodec xvid -s 368x208 -r 29.97 - b 1500 -acodec aac -ac 2 -ar 24000 -ab 128 -vol 200 -f psp -muxvb 768 "test.***"

参数解释:

-y(覆盖输出文件,即如果1.***文件已经存在的话,不经提示就覆盖掉了)

-i "1.avi"(输入文件是和ffmpeg在同一目录下的1.avi文件,可以自己加路径,改名字)

-title "Test"(在PSP中显示的影片的标题)

-vcodec xvid(使用XVID编码压缩视频,不能改的)

-s 368x208(输出的分辨率为368x208,注意片源一定要是16:9的不然会变形)

-r 29.97(帧数,一般就用这个吧)

-b 1500(视频数据流量,用-b xxxx的指令则使用固定码率,数字随便改,1500以上没效果;还可以用动态码率如:-qscale 4和-qscale 6,4的质量比6高)

-acodec aac(音频编码用AAC)

-ac 2(声道数1或2)

-ar 24000(声音的采样频率,好像PSP只能支持24000Hz)

-ab 128(音频数据流量,一般选择32、64、96、128)

-vol 200(200%的音量,自己改)

-f psp(输出psp专用格式)

-muxvb 768(好像是给PSP机器识别的码率,一般选择384、512和768,我改成1500,PSP就说文件损坏了)

"test.***"(输出文件名,也可以加路径改文件名)

python 使用示例

import subprocess

import shlex # to split the command that follows

command = './ffmpeg -i test.mp4 -ss 00:00:00 -vframes 5 file%d.jpg' # your command goes here

subprocess.call(shlex.split(command))

python把桢写入txt_ffmpeg 常用参数一览表及python 使用示例相关推荐

  1. python各个解释器的用途-常用的五种Python解释器|老男孩网络Python学习课程

    Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分别基于不同语言开发,每个解释器有不同的特点,但都能正常运行Python代码,以下是常用的五种Python解释 ...

  2. python把桢写入txt_Java 字节码与字节码分析

    1.1 Java 字节码简介Java 字节码由单字节(byte)的指令组成,理论上最多支持 256 个操作码(opcode).实际上 Java 只使用了200左右的操作码, 还有一些操作码则保留给调试 ...

  3. python文件处理seek()方法的参数是,在Python中操作文件之seek()方法的使用教程

    在Python中操作文件之seek()方法的使用教程 seek()方法在偏移设定该文件的当前位置.参数是可选的,默认为0,这意味着绝对的文件定位,它的值如果是1,这意味着寻求相对于当前位置,2表示相对 ...

  4. 数据库 用Python把数据写入到MySQL数据库/如何使用Python将数据写入到阿里云的RDS-MYSQL

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_42555401 需要解决的问题: 1.用Python把数据写入到MySQL数据库? 2 ...

  5. python实现视频剪辑_MoviePy常用剪辑类及Python视频剪辑自动化

    视频地址:https://www.bilibili.com/video/BV1mv411k7Qv?p=4 导入方式 所有的剪辑类都可以从moviepy.editor模块中导入 Clip 所有剪辑类的基 ...

  6. python把桢写入txt_使用Tesseract+python进行图片转文字记录

    python部分尚未完成循环的代码,等写完再放上来吧,先把Tesseract的基础部分放上来. 由于对游戏的文案非常感兴趣,所以希望可以将游戏中图片截图,识别图片上的文字转成txt,基于此记录一下学习 ...

  7. JVM 常用参数一览表(转)

    参数 默认值或限制 说明 参数 默认值 功能 -XX:-AllowUserSignalHandlers 限于Linux和Solaris,默认不启用 允许为java进程安装信号处理器,信号处理参见类:s ...

  8. python数据分析-柱状图绘制及常用参数设置

    linux+pycharm+anaconda #柱形图绘制与参数设置 #plt.bar(x,height,width,bottom,align,color,edgecolor) "" ...

  9. python棒棒糖代码_25个常用Matplotlib图的Python代码,收藏了!

    作者:zsx_yiyiyi 编辑:python大本营 本文参考自: https://www.machinelearningplus.com/plots/top-50-matplotlib-visual ...

最新文章

  1. linux进程间通信:system V 信号量和共享内存实现进程间同步
  2. Python爬虫【二】请求库requests
  3. Cell Host综述-建立因果关系:合成菌群在植物菌群研究中的机会
  4. 谷歌新智能体Dreamer将亮相NeurIPS 2019,数据效率比前身PlaNet快8个小时
  5. JDK容器学习之ArrayList:底层存储和动态扩容
  6. Netty--ChannelHandler和ChannelPipeline
  7. Oracle函数初探
  8. 您必须学习Java 8的函数式编程吗?
  9. java虚拟_Java虚拟机(JVM)工作原理
  10. 程序员到底要不要重复造轮子?
  11. 基于kotlin的coroutines的生命周期管理
  12. 渗透-N种反弹shell方法
  13. Visual Studio:注释/取消注释快捷键
  14. 常用的雷达信号:基于DDS的线性调频信号的产生
  15. jj斗地主服务器维护几点能好使啊,斗地主规则
  16. 企业网络安全的重要性
  17. 浙江大学【面板数据分析与STATA应用】——第四讲动态面板数据类型
  18. 微信授权登录:移动端[unionid](一)
  19. Scikit入门指南
  20. 在家看片利器,有Android App以及桌面应用(已开源)。

热门文章

  1. 物料分类账业务配置及操作手册
  2. 为什么美团打车、滴滴外卖必败?君智谢伟山揭秘了背后的竞争战略逻辑
  3. 为什么每个邮件收到后都会有一个htm的附件_Python 发送邮件各种姿势
  4. c语言药房系统书写指导书,C语言药房管理系统[文书借鉴]
  5. bminfowindow是什么_三步实现地图自定义InfoWindow
  6. java并发进程共享变量_JAVA并发编程学习:共享对象
  7. qt log4qt 输出到oracle,Log4Qt 输出地
  8. 详细介绍Python中的“魔术方法“__XXX___; 概述__str__()方法;__new__()方法; 三. __ new__ 和__init__的区别
  9. Python教程:shift函数实现数据偏移的方法
  10. Python基础教程:类的特殊成员及高级特性