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

相关推荐
简鹿办公2 天前
FFmpeg vs 去水印软件:哪种方式更适合你?
ffmpeg·怎样去除视频水印·如何去视频logo视频水印
小狮子安度因2 天前
ffplay数据结构分析
数据结构·ffmpeg
小狮子安度因3 天前
ffplay音频重采样
ffmpeg·音视频
小狮子安度因3 天前
AAC ADTS格式分析
网络·ffmpeg·aac
勘察加熊人3 天前
ffmpeg切割音频
ffmpeg·音视频
xiaohouzi1122334 天前
Python读取视频-硬解和软解
python·opencv·ffmpeg·视频编解码·gstreamer
kimble_xia@oracle5 天前
性能优化笔记
ffmpeg
wang_chao1185 天前
RK3399平台ffmpeg-VPU硬编码录制USB摄像头视频、H264或MJPEG编码
ffmpeg·音视频
鹅毛在路上了7 天前
C++, ffmpeg, libavcodec-RTSP拉流,opencv实时预览
c++·opencv·ffmpeg
Hi202402178 天前
Orin-Apollo园区版本:订阅多个摄像头画面拼接与硬编码RTMP推流
ffmpeg·apollo·orin·图像拼接·图传