ffmpeg的使用,安装,抽帧,加水印,截图,生成gif,格式转换,抓屏等

实际使用中总结的关于ffmpeg对视频的处理的记录文档
具体信息:
http://ffmpeg.org/download.html 官网下载ffmpeg
关于ffmpeg的安装详细步骤和说明 装ffmpeg 方式,Linux和windows下的
http://bbs.csdn.net/topics/390519382 php 调用ffmpeg ,
http://bbs.csdn.net/topics/390521910 python调用ffmpeg ,
http://www.4wei.cn/archives/category/php 一个资源网站
https://ffmpeg.zeranoe.com/builds/ ffmpeg windows版本的下载
http://ffmpeg.org/download.html 这是Linux版本的.
http://blog.csdn.net/kissdeath/article/details/6062277 命令可以参考
http://www.360doc.com/content/16/0518/11/496343_560111633.shtml 可以参考

可用的ffmpeg 命令

eg.
最简单的抓屏 ffmpeg -f gdigrab -i desktop ../ffmpeg-video/out.mpg
截图 ffmpeg -i C:\xampp\www\acp\resources\ffmpeg\out.avi -y -f image2 -t 0.001 -s 352x240 C:\xampp\www\acp\resources\ffmpeg\jt.jpg
视频格式转换 ffmpeg -i C:\xampp\www\acp\resources\ffmpeg\temp.mp4 C:\xampp\www\acp\resources\ffmpeg\out.avi
抽帧 ffmpeg -i C:\xampp\www\acp\resources\ffmpeg\out.avi -r 1 -s 640x320 -f image2 C:\xampp\www\acp\resources\ffmpeg\foo-%03d.jpeg
ffmpeg 从视频中生成gif图片 ffmpeg -i C:\xampp\www\acp\resources\ffmpeg\temp.mp4 -t 10 -s 320x240 -pix_fmt rgb24 C:\xampp\www\acp\resources\ffmpeg\jidu1.gif
图片合成视频 ffmpeg -f image2 -i C:\xampp\www\acp\resources\ffmpeg\foo-%03d.jpeg -r 12 -s 320x240 ../ffmpeg-video/foo.avi
录制视频 ffmpeg -f video4linux2 -t 20 -s 320*240 -r 10 -i /dev/video0 /tmp/te.ogv 暂时不可用
给视频添加水印(老版本是这样用的) ffmpeg -i input.flv -vhook '/usr/lib/vhook/watermark.so -f watermark.png -t 222222 -m 1' output.flv
ffmpeg -y -i E:\ffmpeg\ffmpeg-video\temp.mp4 -acodec copy -b 300k -vfilters "movie=0:png:watermark.png [wm];[in][wm] overlay=5:5:1 [out]" output.mp4
视频加水印---cmd中代码亲测可用(左上方加水印)
"movie ='1.png' " 这是在bin中的同级目录, movie='\\ffmpeg\\ffmpeg-video\\2.png' 这是自选目录,需要进行反斜杠的处理.
E:\ffmpeg\bin>ffmpeg -i E:\ffmpeg\ffmpeg-video\temp.mp4 -vf "movie='\\ffmpeg\\ffmpeg-video\\2.png' [watermark]; [in][watermark] overlay=10:10 [out]" E:\ffmpeg\ffmpeg-video\out.mp4

若是要在其他位置添加logo需要做如下修改即可:

eg.
Top left corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:10 [out]" outputvideo.flv
Top right corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" outputvideo.flv
Bottom left corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" outputvideo.flv
Bottom right corner
ffmpeg -i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]" outputvideo.flv
参考链接: How to watermark a video using FFmpeg

之前一直有问题,是ffmpeg用的版本不对,老版本的ffmpeg用的-vhook,新版本用的-vf参数,这里需要注意区别。(我现在用的ffmpeg0.8版本)
还有个问题就是logo的大小不能大于视频帧的大小,之前也是测试没有注意,随便整了一个比视频尺寸大的logo.jpg,导致添加水印失败,还好,失败是会有如下的提示信息:

具体细节的参考网站:

https://my.oschina.net/zhuanghaoren/blog/200684

eg.
-y 表示有同名的output.flv存在时不提示,直接覆盖
-i input.flv 表示要进行水印添加处理的视频
-acodec copy 表示保持音频不变
-b 300k 表示处理视频的比特率,用-vcodec copy时报错,使用其他工具获取到原始视频比特率后加到这里,保持比特率基本不变,不然默认为200k,视频有损。
output.flv 处理后的视频
-vfilters "..." 中间便是水印处理参数,重要的是overlay=后面的部分,第一个参数表示水印距离视频左边的距离,第二个参数表示水印距离视频上边的距离,第三个参数 为1,表示支持透明水印。使用透明的png图片进行视频编码后,成功获得带透明水印的视频,并且画质也比较好。
具体的参数
主要参数:
-i 设定输入流
-f 设定输出格式
-ss 开始时间
视频参数:
-b 设定视频流量,默认为200Kbit/s
-r 设定帧速率,默认为25 --每秒有多少帧,一帧就是一个画面
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器
音频参数:
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频
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

相关推荐
韩曙亮8 小时前
【FFmpeg】FFmpeg 内存结构 ③ ( AVPacket 函数简介 | av_packet_ref 函数 | av_packet_clone 函数 )
ffmpeg·音视频·avpacket·av_packet_clone·av_packet_ref·ffmpeg内存结构
oushaojun212 小时前
ubuntu中使用ffmpeg和nginx推流rtmp视频
nginx·ubuntu·ffmpeg·rtmp
莫固执,朋友13 小时前
网络抓包工具tcpdump 在海思平台上的编译使用
网络·ffmpeg·音视频·tcpdump
lxkj_202413 小时前
修改ffmpeg实现https-flv内容加密
网络协议·https·ffmpeg
cuijiecheng201813 小时前
音视频入门基础:MPEG2-TS专题(6)——FFmpeg源码中,获取MPEG2-TS传输流每个transport packet长度的实现
ffmpeg·音视频
VisionX Lab18 小时前
数据脱敏工具:基于 FFmpeg 的视频批量裁剪
python·ffmpeg·音视频
柳鲲鹏1 天前
全网首发:Ubuntu编译跨平台嵌入式支持ffmpeg的OpenCV
linux·ubuntu·ffmpeg
冰山一脚20131 天前
ffplay音频SDL播放处理
ffmpeg
cuijiecheng20182 天前
音视频入门基础:MPEG2-TS专题(7)——FFmpeg源码中,读取出一个transport packet数据的实现
ffmpeg·音视频
Maxwellhang2 天前
【java-ffmpeg】java 内存测试和集成
java·ffmpeg·jni