x处做个if判断就行,显示5秒就往后延5秒,3分25秒换算秒数就是205秒,那结束时间就是210秒就好了
给你的代码完善一下你试一下
ffplay tmpmp4mp4 -vf drawtext="fontfile=arialttf:x='if(gte(t,205),if(lte(t,210),w-tw,NAN),NAN)':fontcolor=white:fontsize=30:text='%{localtime\:%H\\\:%M\\\:%S}':enable=lt(mod(t\,3)\,1)"
if(gte(t,205),if(lte(t,210),w-tw,NAN),NAN)意思就是大于205秒和小于210秒时显示,大于210秒时消失
但这样只会在3分25秒处显示水印5秒钟,:enable=lt(mod(t\,3)\,1)这段代码没什么用,去掉吧
前言
如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流、更改音视频参数功能等。通过终端命令如何实现这些功能,Richy在本文做一记录,以备之后查阅。
注意:下面一一列举的命令,未归类整理,命令参数供参考。
如果参数有误,大家可对照文章- FFmpeg参数命令 ,进行修改。
第一组
1分离视频音频流
ffmpeg -i input_file -vcodec copy -an output_file_video//分离视频流ffmpeg -i input_file -acodec copy -vn output_file_audio//分离音频流
2视频解复用
ffmpeg –i testmp4 –vcodec copy –an –f m4v test264
ffmpeg –i testavi –vcodec copy –an –f m4v test264
3视频转码
ffmpeg –i testmp4 –vcodec h264 –s 352278 –an –f m4v test264
//转码为码流原始文件
ffmpeg –i testmp4 –vcodec h264 –bf 0 –g 25 –s 352278 –an –f m4v test264 //转码为码流原始文件
ffmpeg –i testavi -vcodec mpeg4 –vtag xvid –qsame test_xvidavi //转码为封装文件
说明: -bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制
4视频封装
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
5视频剪切
ffmpeg –i testavi –r 1 –f image2 image-%3djpeg //提取
ffmpeg -ss 0:1:30 -t 0:0:20 -i inputavi -vcodec copy -acodec copy outputavi //剪切视频//-r 提取图像的频率,-ss 开始时间,-t 持续时间
6视频录制
ffmpeg –i rtsp://1921683205:5555/test –vcodec copy outavi
7、利用ffmpeg视频切片
主要把视频源切成若干个ts格式的视频片段然后生成一个m3u8的切片文件索引提供给html5的video做hls直播源
命令如下:
ffmpeg -i 视频源地址 -strict -2 -c:v libx264 -c:a aac -f hls m3u8文件输出地址
8、ffmpeg缩放视频
假设原始视频尺寸是 1080p(即 1920×1080 px,16:9),使用下面命令可以缩小到 480p:
命令如下:
ffmpeg -i 视频源地址 -vf scale=853:480 -acodec aac -vcodec h264 视频输出地址(如:outmp4)
各个参数的含义:-i amov 指定待处理视频的文件名-vf scale=853:480 vf 参数用于指定视频滤镜,其中 scale 表示缩放,后面的数字表示缩放至 853×480 px,其中的 853px 是计算而得,因为原始视频的宽高比为 16:9,所以为了让目标视频的高度为 480px,则宽度 = 480 x 9 / 16 = 853-acodec aac 指定音频使用 aac 编码。注:因为 ffmpeg 的内置 aac 编码目前(写这篇文章时)还是试验阶段,故会提示添加参数 “-strict -2” 才能继续,尽管添加即可。又或者使用外部的 libfaac(需要重新编译 ffmpeg)。-vcodec h264 指定视频使用 h264 编码。注:目前手机一般视频拍摄的格式(封装格式、文件格式)为 mov 或者 mp4,这两者的音频编码都是 aac,视频都是 h264。outmp4 指定输出文件名上面的参数 scale=853:480 当中的宽度和高度实际应用场景中通常只需指定一个,比如指定高度为 480 或者 720,至于宽度则可以传入 “-1” 表示由原始视频的宽高比自动计算而得。即参数可以写为:scale=-1:480,当然也可以 scale=480:-1
9、ffmpeg裁剪
有时可能只需要视频的正中一块,而两头的内容不需要,这时可以对视频进行裁剪(crop),比如有一个竖向的视频 1080 x 1920,如果指向保留中间 1080×1080 部分命令如下:ffmpeg -i 视频源地址 -strict -2 -vf crop=1080:1080:0:420 视频输出地址(如:outmp4)
其中的 crop=1080:1080:0:420 才裁剪参数,具体含义是 crop=width:height:x:y,其中 width 和 height 表示裁剪后的尺寸,x:y 表示裁剪区域的左上角坐标。比如当前这个示例,我们只需要保留竖向视频的中间部分,所以 x 不用偏移,故传入0,而 y 则需要向下偏移:(1920 – 1080) / 2 = 420
10 转视频格式
ffmpeng -i sourcemp4 -c:v libx264 -crf 24 destinationflv
其中 -crf 很重要,是控制转码后视频的质量,质量越高,文件也就越大。
此值的范围是 0 到 51:0 表示高清无损;23 是默认值(如果没有指定此参数);51 虽然文件最小,但效果是最差的。
值越小,质量越高,但文件也越大,建议的值范围是 18 到 28。而值 18 是视觉上看起来无损或接近无损的,当然不代表是数据(技术上)的转码无损。
第二组
1ffmpeg 把文件当做直播推送至服务器 (RTMP + FLV)
ffmpeg - re -i demomp4 -c copy - f flv rtmp://wgslbletv/live/streamid
2将直播的媒体保存到本地
ffmpeg -i rtmp://rglsbletv/live/streamid -c copy streamfileflv
3将一个直播流,视频改用h264压缩,音频改用faac压缩,送至另一个直播服务器
ffmpeg -i rtmp://rglsbletv/live/streamidA -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://wglsbletv/live/streamb
4提取视频中的音频,并保存为mp3 然后输出
ffmpeg -i inputavi -b:a 128k outputmp3
第三组
1获取视频的信息
ffmpeg -i videoavi
2将序列合成视频
ffmpeg -f image2 -i image%djpg videompg
上面的命令会把当前目录下的(名字如:image1jpg image2jpg 等)合并成videompg
3将视频分解成序列
ffmpeg -i videompg image%djpg
上面的命令会生成image1jpg image2jpg
支持的格式有:PGM PPM PAM PGMYUV JPEG GIF PNG TIFF SGI
4为视频重新编码以适合在iPod/iPhone上播放
ffmpeg -i source_videoavi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_videomp4
5为视频重新编码以适合在PSP上播放
ffmpeg -i source_videoavi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_videomp4
6从视频抽出声音并存为Mp3
ffmpeg -i source_videoavi -vn -ar 44100 -ac 2 -ab 192 -f mp3 soundmp3
7将wav文件转成Mp3
ffmpeg -i son_origineavi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_finalmp3
8将avi视频转成mpg
ffmpeg -i video_origineavi video_finalempg
9将mpg转成avi
ffmpeg -i video_originempg video_finaleavi
10将avi转成gif动画(未压缩)
ffmpeg -i video_origineavi gif_animegif
11合成视频和音频
ffmpeg -i sonwav -i video_origineavi video_finalempg
12将avi转成flv
ffmpeg -i video_origineavi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finaleflv
13将avi转成dv
ffmpeg -i video_origineavi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finaledv
或者:
ffmpeg -i video_origineavi -target pal-dv video_finaledv
14将avi压缩成divx
ffmpeg -i video_origineavi -s 320x240 -vcodec msmpeg4v2 video_finaleavi
15将Ogg Theora压缩成Mpeg dvd
ffmpeg -i film_sortie_cinelerraogm -s 720x576 -vcodec mpeg2video -acodec mp3 film_terminatempg
16将avi压缩成SVCD mpeg2
NTSC格式:
ffmpeg -i video_origineavi -target ntsc-svcd video_finalempg
PAL格式:
ffmpeg -i video_origineavi -target pal-dvcd video_finalempg
17将avi压缩成VCD mpeg2
NTSC格式:
ffmpeg -i video_origineavi -target ntsc-vcd video_finalempg
PAL格式:
ffmpeg -i video_origineavi -target pal-vcd video_finalempg
18多通道编码
ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2
19从flv提取mp3
ffmpeg -i sourceflv -ab 128k destmp3
第四组
1、将文件当做直播送至live
ffmpeg -re -i localFilemp4 -c copy -f flv rtmp://server/live/streamName
2、将直播媒体保存至本地文件
ffmpeg -i rtmp://server/live/streamName -c copy dumpflv
3、将其中一个直播流,视频改用h264压缩,音频不变,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -c:a copy -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream
4、将其中一个直播流,视频改用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
5、将其中一个直播流,视频不变,音频改用faac压缩,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec copy -f flv rtmp://server/live/h264_AAC_Stream
6、将一个高清流,复制为几个不同视频清晰度的流重新发布,其中音频不变
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
7、功能一样,只是采用-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
8、将当前摄像头及音频通过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
9、将一个JPG经过h264压缩循环输出为mp4视频
ffmpegexe -i INPUTjpg -an -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -subq 10 -qcomp 06 -qmin 10 -qmax 51 -qdiff 4 -flags2 +dct8x8 -trellis 2 -partitions +parti8x8+parti4x4 -crf 24 -threads 0 -r 25 -g 25 -y OUTPUTmp4
10、将普通流视频改用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〃
文/骚之哈塞给(作者)
以上就是关于FFmpeg工具全部的内容,包括:FFmpeg工具、ffmpeg基础知识、ffmpeg 指定时间显示水印等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)