ffmpeg简介

摘要:
从ffmpeg的帮助信息来看,ffmpeg有6个命令模块。注意命令中使用了B帧,所以mpeg4流是divx5兼容的。

1. ffmpeg下载

ffmpeg是一个开源软件,可以在官方平台下载。可以下载源码到具体平台编译,也可以直接下载某平台已编译好的软件。

http://ffmpeg.org/download.html

ffmpeg的使用资料也在官网下载。文档是html格式的英文文档,可以使用谷歌打开,打开时谷歌翻译,拿来做参考还可以。

2. ffmpeg软件组件

ffmpeg下载下来之后有三个组件。

2.1 ffmpeg 媒体处理工具

2.2 ffplay 媒体播放器(ffplay 123.mp4即可播放一个媒体文件)

2.3 ffprobe 媒体流分析器(ffprobe 123.mp4即可分析该文件的详细属性)

我们使用的主要是ffmpeg来处理视频源以获得我们想要的视频格式和类型。

3. ffmpeg转码过程

ffmpeg简介第1张

4.ffmpeg语法简介

ffmpeg使用的语法格式如下:

ffmpeg [global_options] {[input_file_options] -i 'INPUT_FILE'} ... {[output_file_options]'OUTPUT_FILE'} ...

使用ffmpeg –h等命令可以查看ffmpeg语法帮助。

从ffmpeg的帮助信息来看,ffmpeg有6个命令模块。

4.1 打印信息(帮助/信息/能力值)

4.2 全局参数(影响整个程序,而不是单个文件)

4.3 每文件主要参数(文件的时间戳/元数据/帧数等信息)

4.4 视频参数(视频的录制帧数/像素长款比/视频调控/采样率等)

4.5 音频参数(音频的录制帧数/音频通道/采样率/过滤器等)

4.6 字幕参数(设置字幕帧数/开关字幕/固定字幕长度/预置字幕等)

详细的解读可以读帮助文档,也可以在linux系统下使用man ffmpeg看到更多的帮助信息。

5. ffmpeg常用命令杂记

5.1 视频格式转换

ffmpeg将视频转换为FLV格式:

ffmpeg.exe -i test.mp4 -ab 30 -ar 20000 -b 128K -r 25 -s 1920x1080 D: est.flv

ffmpeg将视频转换为3GP格式:

ffmpeg -i test.mp4 -y -b 30 -s sqcif -r 10 -acodec amr_wb -ab 24 -ac 1 -ar 20000 test.3gp

转码解密的VOB:

ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi

上面的命令行将vob的文件转化成avi文件,mpeg4的视频和mp3的音频。注意命令中使用了B帧,所以mpeg4流是divx5兼容的。GOP大小是300意味着29.97帧频下每10秒就有INTRA帧。该映射在音频语言的DVD转码时候尤其有用。

同时编码到几种格式并且在输入流和输出流之间建立映射:

ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0

上面的命令行转换一个64Kbits 的a.wav到128kbits的a.mp2 ‘-map file:index’在输出流的顺序上定义了哪一路输入流是用于每一个输出流的。

5.2 视频中的图片操作

添加水印:

ffmpeg -i test.mp4 -i watermark.png -filter_complex "overlay=10:10" test.mp4

或(-vcodec libx264 可选):

ffmpeg -i test.ts -vcodec libx264 -vf “movie=logo.png[wm]; [in][wm]overlay=10:10[out]” out.ts

制作gif:

ffmpeg -ss 00:00:01 -t 10 -i test.ts -vf scale=1000:-1 -f gif -r 5 5fps.gif

截图:

ffmpeg -i test.asf -y -f image2 -t 0.001 -s 320x240 a.jpg

指定前30帧转换成一个Animated Gif:

ffmpeg -i test.asf -vframes 30 -y -f gif test.gif

截取指定时间的缩微图:

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

5.3视频转换

编码转换:

ffmpeg -i test.ts -vcodec libx265 -x265-params lossless test1.ts

改视频码率:

ffmpeg -i input.avi -b:v 1500K output.mp4

指定文件大小:

ffmpeg -i input.mp4 -fs 20M output.mp4

改分辨率:

ffmpeg -i input.mp4 -strict -2 -s 640x480 output.mp4

调整为4:3的画面比例:

ffmpeg -i test.mp4 -s 1920x1080 -aspect 4:3 output.mp4

多个视频拼接:

ffmpeg -i "concat:test1.ts|test2.ts|test3.ts|test4.ts" -c copy test5.ts

分割视频:

ffmpeg -ss 00:07:00 -t 00:58:58 -i test.mp4 -vcodec copy -acodec copy test1.mp4

单独输出音/视频:

单独输出视频(输出视频无声音):

ffmpeg -i test.mp4 -vcodec copy -an testvideo.mp4

单独输出音频(输出音频无画面):

ffmpeg -i test.mp4 -vcodec copy -vn testaudio.mp3

5.4 视频切片

切片生成HLS文件:

ffmpeg -re -i test.ts -codec:v libx264 -codec:a ac3 -map 0 -f ssegment -segment_format mpegts -segment_list playlist.m3u8 -segment_list_flags +live -segment_list_size 0 -segment_time 10 out%03d.ts

制作点播分片:

ffmpeg -i input.mp4 -vcodec copy -acodec copy -hls_time 10 -hls_list_size 0 output.m3u8

5.5 视频录制

使用ffmpeg录像屏幕:

ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -vd x11:0,0 -s 1024x768 D:\test.avi

重新调整视频尺寸大小:

ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i D:\test.avi -s 800×600 D:\test-800-600.avi

录制摄像头的信号:

ffmpeg -f vfwcap -i 0 -r 25 -vcodec libx264 output.mp4

录制视频同时切片:

ffmpeg -f vfwcap -i 0 -codec:v libx264 -map 0 -f ssegment -segment_format mpegts -segment_list playlist.m3u8 -segment_list_flags +live -segment_list_size 0 -segment_time 10 out%03d.ts

5.6 ffmpeg推流

格式:

ffmpeg -i rtmp://*******(源地址) -c:v copy -c:a copy -f flv -y rtmp://*******(服务器地址)

示例:

ffmpeg -loglevel 48 -v verbose -thread_queue_size 512 -threads 2 -max_delay 0 -re -stream_loop -1 -i /test.mp4 -bufsize 10m -reorder_queue_size 10000 -c:v copy -c:a copy -bsf:a aac_adtstoasc -flags +global_header -flvflags aac_seq_header_detect -f flv rtmp://192.168.10.100:1935/default_tv/test

免责声明:文章转载自《ffmpeg简介》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java中如何获取spring中配置文件.properties中属性值如何处理ajax中嵌套一个ajax下篇

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

相关文章

RPC 超时设置 分析 转

出处:RPC 超时设置   上面这张监控图,对于服务端的研发同学来说再熟悉不过了。在日常的系统维护中,『服务超时』应该属于监控报警最多的一类问题。   尤其在微服务架构下,一次请求可能要经过一条很长的链路,跨多个服务调用后才能返回结果。当服务超时发生时,研发同学往往要抽丝剥茧般去分析自身系统的性能以及依赖服务的性能,这也是为什么服务超时相对于服务出错和服...

FFMPEG 常用命令行

目录 1. 分离音视频 2. 解复用 3. 视频转码 4. 视频封装 5. 视频剪切 6. 视频录制 7.叠加水印 8.将MP3转换为PCM数据 9. 推送RTP流、接收RTP流并存为ts文件 10. ffmpeg 编码 11. ffmpeg 解码 12. 截取 YUV 13. 压缩分辨率 14. ffplay 播放YUV 15. ffplay 播放...

ubuntu 的权限和目录

/ : 根目录 /bin 和 /sbin中放置的是可执行文件   /etc 里面放的是配置文件    /boot 引导 /mnt  是挂载目录 /home   主目录   /dev  设备 /usr linux中自动安装软件的存放位置 文件类型 d : directory 目录文件 - : file b : block 块文件 l : link 相当于wi...

Docker最全教程——从理论到实战(六)

Docker最全教程——从理论到实战(六) 托管到腾讯云容器服务托管到腾讯云容器服务,我们的公众号“magiccodes”已经发布了相关的录屏教程,大家可以结合本篇教程一起查阅。   自建还是托管? 在开始之前,我们先来讨论一个问题——是自建容器服务还是托管到云容器服务? 这里笔者建议大家托管到云容器服务。对于中小团队来说,很多情况下,团队中的运维人员是缺...

分享一个基于HTML5实现的视频播放器【转】

什么是hivideo?     最近一段时间在使用PhoneGap开发一个App应用,App需要播放视频,本想直接使用html5的video,但使用它在全屏播放时不支持横屏播放,只能放弃。最终决定还是自己封装一个播放器算了,免得以后要扩展功能麻烦。     最近迷上hi这个单词,所以我给这个播放器取名叫做:hivideo。     hivideo是一款基于...

RFS自动化测试工具安装与使用总结

转载:http://blog.csdn.net/a5650892/article/details/77826021 一,调试1,在调试时,总时提示“无法打开浏览器”解决办法:1,把浏览器的代理关闭2,把浏览器的显示比例调到100%3,在IE设置的安全选项中,把启用保护模式开启 4,去除进入系统弹出的登录提示   在浏览器中---工具---internet选...