FFMPEG常用命令-格式转换-持续更新中

摘要:
---开始内容恢复-ffmpeg是一个强大的工具。需要在工作过程中转换、编码和提取视频中的帧,记录工作中常用的一些ffmpeg命令,并不断更新将输入的infile视频文件编码为h264视频流ffmpeg-infile.mp4-an-vcodeclibx264-crf23outfile.h264-iinputfile-indisableaudio-vcodec

---恢复内容开始---

ffmpeg是一个强大的工具,在工作中各种格式转换,编码,提取视频中的帧需要用到,记录下工作中常用的一些ffmpeg命令,持续更新中...

将输入的infile视频文件通过avc编码成h264的视频流

ffmpeg -i infile.mp4 -an -vcodec libx264 -crf 23 outfile.h264

-i  input file     -an   disable audio    -vcodec 指定编码类型  -crf  采用cf的编码方式并设定level为23(CRF和QP的区别详见另一篇博文

将输入的handshake视频文件转码成dest1视频文件

ffmpeg -i handshake.avi -c:v libx264 -preset slow -qp 37 -c:a copy dest1.mp4

-i input file    -c:v  和-codec:v以及-vcodec是一个意思,设置video的codec方式    

-preset 设置一些编码参数,有很多level

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium – default preset
  • slow
  • slower
  • veryslow
  • placebo(一般不用)

可以省略,默认是"medium",越慢质量越高

-qp 设置固定的量化参数  -c:a  等同于-acodec和-codec:a 设置audio的codec方式是copy

将一个文件夹的所有视频每隔一定帧数提取出图片

for %%i in (*.mov) do (
ffmpeg -i %%i -vf "select=not(mod(n\,50))" -vsync vfr  "%%~ni_%%03d.bmp"
)

for %%i in (*.mov) 遍历文件夹中所有mov为后缀的文件

-i   input video    -vf  等同于-filter:v 具体信息参见ffmpeg官方文档  select选择哪些输入帧会输出,这边选择的是所有整除50的需要输出  第0,50,100...    -vsync    设置视频的同步方式  这里的vfr是指传timestamp,如果两帧相同的timestamp需要丢掉            最后"%%~ni_%%03d.bmp"是指输出的bmp的名字是输入的video的名字后面加上001 002 003等

从一个input raw 视频中抽取出每一帧

ffmpeg -f rawvideo -framerate 25 -s 1280x720 -pixel_format yuv420p -i in.yuv -c copy -f segment -segment_time 0.01 frames%d.yuv

-f 指定输入的format为rawvideo  -framerate设置帧率    -s 设置输入视频的分辨率   -pixel_format设置输入视频的格式     -i  输入的raw视频   -c 设置输入到输出的codec方式,这里为copy,不需要编解码     -f   指定输出格式,把输入的video分成好多个小段,只要后面设置的segment_time(0.01)比一帧的时间短(这里是1/25=0.04),就会把一帧分成一段,然后存入到yuv中

---恢复内容结束---

ffmpeg是一个强大的工具,在工作者各种格式转换,编码,提取视频中的帧需要用到,记录下工作中常用的一些ffmpeg命令,持续更新中...

将输入的infile视频文件通过avc编码成h264的视频流

ffmpeg -i infile.mp4 -an -vcodec libx264 -crf 23 outfile.h264

-i  input file     -an   disable audio    -vcodec 指定编码类型  -crf  采用cf的编码方式并设定level为23(CRF和QP的区别详见另一篇博文

将输入的handshake视频文件转码成dest1视频文件

ffmpeg -i handshake.avi -c:v libx264 -preset slow -qp 37 -c:a copy dest1.mp4

-i input file    -c:v  和-codec:v以及-vcodec是一个意思,设置video的codec方式    

-preset 设置一些编码参数,有很多level

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium – default preset
  • slow
  • slower
  • veryslow
  • placebo(一般不用)

可以省略,默认是"medium",越慢质量越高

-qp 设置固定的量化参数  -c:a  等同于-acodec和-codec:a 设置audio的codec方式是copy

将一个文件夹的所有视频每隔一定帧数提取出图片

for %%i in (*.mov) do (
ffmpeg -i %%i -vf "select=not(mod(n\,50))" -vsync vfr  "%%~ni_%%03d.bmp"
)

for %%i in (*.mov) 遍历文件夹中所有mov为后缀的文件

-i   input video    -vf  等同于-filter:v 具体信息参见ffmpeg官方文档  select选择哪些输入帧会输出,这边选择的是所有整除50的需要输出  第0,50,100...    -vsync    设置视频的同步方式  这里的vfr是指传timestamp,如果两帧相同的timestamp需要丢掉            最后"%%~ni_%%03d.bmp"是指输出的bmp的名字是输入的video的名字后面加上001 002 003等

从一个input raw 视频中抽取出每一帧

ffmpeg -f rawvideo -framerate 25 -s 1280x720 -pixel_format yuv420p -i in.yuv -c copy -f segment -segment_time 0.01 frames%d.yuv

-f 指定输入的format为rawvideo  -framerate设置帧率    -s 设置输入视频的分辨率   -pixel_format设置输入视频的格式     -i  输入的raw视频   -c 设置输入到输出的codec方式,这里为copy,不需要编解码     -f   指定输出格式,把输入的video分成好多个小段,只要后面设置的segment_time(0.01)比一帧的时间短(这里是1/25=0.04),就会把一帧分成一段,然后存入到yuv中

 利用ffmpeg计算ssim/psnr

ffmpeg -s 1920x1080 -i F1.yuv  -s 1920x1080  -i F2.yuv   -lavfi
"ssim="stats_file=stats_ssim.log";[0:v][1:v]"psnr="stats_psnr.log"
-f null -

F1.yuv为需要计算ssim的视频 F2.yuv为参考视频 -s设置分辨率  -i设置input视频ffmpeg-filters.html

-lavfi是跟-filter_complex一个意思,设置滤波器,ffmpeg支持的filter有很多种类型,在下载的ffmpeg的包里面有一个叫做ffmpeg-filters.htm的网页就是讲的支持的各种filter, 详见 https://ffmpeg.org/ffmpeg-filters.html 

ssim是其中支持的一个filter,在使用ssim的时候,要求输入的两个video要有相同的format resolution,而且帧数要一样

每一帧都会算一个ssim的值 。stats_file是将结果存在指定的文件stats_ssim.log中

[0:v][1:v]指的是第一个视频的video和第二个视频的video

免责声明:文章转载自《FFMPEG常用命令-格式转换-持续更新中》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sde 安装stm32——NFC芯片--PN532的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL中的datetime与timestamp比较

转自:MySQL中的datetime与timestamp比较 相同 1. 显示 TIMESTAMP列的显示格式与DATETIME列相同。换句话说,显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS。 不同 1. 范围 datetime 以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值。支持的范围为'1000...

java 字符串转日期格式

/*** 字符串转日期格式 * */ public staticDate date(String date_str) { try{ Calendar zcal = Calendar.getInstance(); Timestamp timestampnow = new...

kurento用gstreamer推流 RTP to RTMP

基于Gstreamer的rtp转rtmp代码 flv不支持 音频 48000. 支持44k。flv不支持音频opus格式。   1,用ffmpeg推流到rtp。 srs的示例flv文件: ffmpeg -re -stream_loop -1 -i ./doc/source.200kbps.768x320.flv -an -vcodec h264 -...

HBase中的时间维度

HBase是一个类Bigtable系统,按照Google的论文对 Bigtable的定义是“一种稀疏的,分布式的,持久的多为维度的有序Map。这个Map由row key,column key和timestamp做为索引,Map中的值是连续的byte数组”。HBase的多维度,包括table和column family等。 不是所有维度都是等同的,不同的维度...

Linux下ffmpeg的完整安装

最近在做一个企业项目, 期间需要将用户上传的视频转成flv格式或mp4格式并用flash插件在前端播放, 我决定采用ffmpeg (http://www.ffmpeg.org/ )实现. 当然以前也用过ffmpeg, 但是没有安装额外的库, 只是源代码下简单地 ./configure, 最后发现好多功能都用不了, 比如最流行的x264编码器. 所以决心完整...

MySQL的日期格式

MySQL的五种时间和日期类型 YEAR表示年份:字节数为1,取值范围为“1901——2155”DATE表示日期:字节数为4,取值范围为“1000-01-01——9999-12-31”TIME表示时间:字节数为3,取值范围为“-838:59:59——838:59:59”DATETIME和TIMESTAMP表示日期和时间DATETIME:字节数为8,取值范围...