ffmpeg基础常用命令

news/2024/7/10 19:18:41 标签: ffmpeg, 音视频, java

文章目录

    • 视频处理
      • 1.分离视频音频流
      • 2.视频解复用
      • 3.视频转码
      • 4.视频封装
      • 5.视频剪切
      • 6.视频录制
      • 7.YUV序列播放
      • 8.YUV序列转AVI
      • 常用参数说明:
    • 直播与转码
      • 1、压缩&转码mp4文件
      • 2、将文件当做直播送至live
      • 3、将直播媒体保存至本地文件
      • 4、将其中一个直播流,视频改用h264压缩,音频不变,送至另外一个直播服务流
      • 5、将其中一个直播流,视频改用h264压缩,音频改用faac压缩,送至另外一个直播服务流
      • 6、将其中一个直播流,视频不变,音频改用faac压缩,送至另外一个直播服务流
      • 7、将一个高清流,复制为几个不同视频清晰度的流重新发布,其中音频不变
      • 8、功能一样,只是采用-x264opts选项
      • 9、将当前摄像头及音频通过DSSHOW采集,视频h264、音频faac压缩后发布
      • 10、将一个JPG图片经过h264压缩循环输出为mp4视频
      • 11、将普通流视频改用h264压缩,音频不变,送至高清流服务(新版本FMS live=1)
    • 视频/桌面采集
      • 1.采集usb摄像头视频命令:
      • 2.最简单的抓屏:
      • 3.从屏幕的(10,20)点处开始,抓取640x480的屏幕,设定帧率为5 :
      • 4.ffmpeg从视频中生成gif图片:


视频是一个大的话题,从事这方面的人相当多,行业里面也衍生了很多的应用场景,ffmpeg是一个强大的算法处理工具,也是一个用处相当多的框架。桌面端、移动端甚至wasm都已经用上了。多数都是在用的角度接触这门技术,包括在下,都缺少记录和总结,往往是解决问题和学习一番之后,又抛下了。打算深入学习和研究相关的使用方法和优化方法,不限于调用/编译。老司机们都喜欢用命令,但命令也是需要学习的。

视频处理

1.分离视频音频流

ffmpeg -i input_file -vcodec copy -an output_file_video  //分离视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio  //分离音频流

2.视频解复用

ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
ffmpeg –i test.avi –vcodec copy –an –f m4v test.264

3.视频转码

ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264              //转码为码流原始文件
ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264  //转码为码流原始文件
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi            //转码为封装文件
//-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制

4.视频封装

ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file

5.视频剪切

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 持续时间

6.视频录制

ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi

7.YUV序列播放

ffplay -f rawvideo -video_size 1920x1080 input.yuv

8.YUV序列转AVI

ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi

常用参数说明:

主要参数:

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

视频参数:

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

音频参数:

  • -ar 设定采样率
  • -ac 设定声音的Channel数
  • -acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
  • -an 不处理音频

直播与转码

1、压缩&转码mp4文件

ffmpeg -i input.avi -s 640x480 output.avi

ffmpeg -i input.avi -strict -2 -s vga output.avi

2、将文件当做直播送至live

ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName

3、将直播媒体保存至本地文件

ffmpeg -i rtmp://server/live/streamName -c copy dump.flv

4、将其中一个直播流,视频改用h264压缩,音频不变,送至另外一个直播服务流

ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream

5、将其中一个直播流,视频改用h264压缩,音频改用faac压缩,送至另外一个直播服务流

ffmpeg -i rtmp://server/live/originalStream -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://server/live/h264Stream

6、将其中一个直播流,视频不变,音频改用faac压缩,送至另外一个直播服务流

ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec copy -f flv rtmp://server/live/h264_AAC_Stream

7、将一个高清流,复制为几个不同视频清晰度的流重新发布,其中音频不变

ffmpeg -re -i rtmp://server/live/high_FMLE_stream -acodec copy -vcodec x264lib -s 640×360 -b 500k -vpre medium -vpre baseline rtmp://server/live/baseline_500k -acodec copy -vcodec x264lib -s 480×272 -b 300k -vpre medium -vpre baseline rtmp://server/live/baseline_300k -acodec copy -vcodec x264lib -s 320×200 -b 150k -vpre medium -vpre baseline rtmp://server/live/baseline_150k -acodec libfaac -vn -ab 48k rtmp://server/live/audio_only_AAC_48k

8、功能一样,只是采用-x264opts选项

ffmpeg -re -i rtmp://server/live/high_FMLE_stream -c:a copy -c:v x264lib -s 640×360 -x264opts bitrate=500:profile=baseline:preset=slow rtmp://server/live/baseline_500k -c:a copy -c:v x264lib -s 480×272 -x264opts bitrate=300:profile=baseline:preset=slow rtmp://server/live/baseline_300k -c:a copy -c:v x264lib -s 320×200 -x264opts bitrate=150:profile=baseline:preset=slow rtmp://server/live/baseline_150k -c:a libfaac -vn -b:a 48k rtmp://server/live/audio_only_AAC_48k

9、将当前摄像头及音频通过DSSHOW采集,视频h264、音频faac压缩后发布

ffmpeg -r 25 -f dshow -s 640×480 -i video=”video source name”:audio=”audio source name” -vcodec libx264 -b 600k -vpre slow -acodec libfaac -ab 128k -f flv rtmp://server/application/stream_name

10、将一个JPG图片经过h264压缩循环输出为mp4视频

ffmpeg.exe -i INPUT.jpg -an -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -subq 10 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -flags2 +dct8x8 -trellis 2 -partitions +parti8x8+parti4x4 -crf 24 -threads 0 -r 25 -g 25 -y OUTPUT.mp4

11、将普通流视频改用h264压缩,音频不变,送至高清流服务(新版本FMS live=1)

ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv “rtmp://server/live/h264Stream live=1

视频/桌面采集

1.采集usb摄像头视频命令:

ffmpeg -t 20 -f vfwcap -i 0 -r 8 -f mp4 cap1111.mp4
./ffmpeg -t 10 -f vfwcap -i 0 -r 8 -f mp4 cap.mp4

具体说明如下:我们采集10秒,采集设备为vfwcap类型设备,第0个vfwcap采集设备(如果系统有多个vfw的视频采集设备,可以通过-i num来选择),每秒8帧,输出方式为文件,格式为mp4。

2.最简单的抓屏:

ffmpeg -f gdigrab -i desktop out.mpg 

3.从屏幕的(10,20)点处开始,抓取640x480的屏幕,设定帧率为5 :

ffmpeg -f gdigrab -framerate 5 -offset_x 10 -offset_y 20 -video_size 640x480 -i desktop out.mpg 

ffmpeggif_140">4.ffmpeg从视频中生成gif图片:

ffmpeg -i capx.mp4 -t 10 -s 320x240 -pix_fmt rgb24 jidu1.gif

http://www.niftyadmin.cn/n/141791.html

相关文章

原来不用控制台,也可以轻松调试CSS呀

Ⅰ. 作用 用于调试CSS , 比控制台添更加方便,不需要寻找 ;边添加样式,边可以查看效果,适合初学者对CSS 的理解和学习; Ⅱ. 快速实现(两边) ① 显示这个样式眶 给 head 和 style 标签添加一个…

【C 语言 笔记】解决控制台闪烁/鬼畜/光标乱跑问题

问题 如果你要在控制台里“画”一些频繁更新的东西,比如做个小游戏,常见的思路是: while(1) {//先清空system("clear");//再画printf("....."); }然后控制台的就闪个不停,很瞎眼。 解决 0 降低刷新频率&a…

mysql数据库索引失效的常见场景(上)

文章目录 1. 准备工作1.1 创建user表1.2 插入数据1.3 查看数据库版本1.4 查看执行计划2. 不满足最左匹配原则2.1 哪些情况索引有效?2.2 哪些情况索引失效?3. 使用了select *4. 索引列上有计算5. 索引列用了函数6. 字段类型不同1. 准备工作 1.1 创建user表 创建一张user表,…

知识点:乘法逆元

乘法逆元 文章目录乘法逆元一、模运算的性质二、除法的模运算1、除法模运算2、解决除法模运算问题三、乘法逆元1、定义2、**逆元是干什么的呢**四、求解逆元1、费马小定理2、扩展欧几里得五、参考文献一、模运算的性质 ( a b ) % p ( a % p b % p) % p( a b ) % p ( ( a % …

Hive---DDL

文章目录1.hive数据类型1.1 原生数据类型1.2 复杂数据类型1.3 数据类型转换2.Hive读写机制2.1 SerDe2.2 hive读取文件机制2.3 hive写文件机制2.4 SerDe语法3.Hive存储路径3.1 指定存储路径4.Hive建表高阶4.1 hive内部表、外部表4.2 分区表4.2.1 静态分区4.2.2 动态分区4.2.3 分…

体验 Velero 备份和恢复

体验 Velero 备份和恢复Verrazzano 安装配置文件启用 Velero创建存储桶的密钥使用 Velero 备份 Argo CD使用 Velero 恢复 Argo CD体验一下 Verrazzano 集成的 Velero 的备份和恢复功能。此次体验备份和恢复 Argo CD。 Verrazzano 安装配置文件启用 Velero kubectl apply -f -…

SAP SQVI快速报表的使用

SQVI快速报表 一、说明 对数据表进行查询通常使用SE16,但只限于单张表,对于多表联动的查询,则需要通过创建Query的方式,方法有多种,而SQVI是一种简洁快速的工具。SQVI全称是Quick Viewer,可以快速生成多表…

uniapp+uview2.0实现表单校验实战

表单提交是很常见的功能,本文基于uniappuview2.0实现表单常见属性校验处理,使用到组件有u–form、Form-item,基本使用说明如下: u–form 此组件一般是用于表单验证使用,每一个表单域由一个u-form-item组成,表单域中可以放置u-…