博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ffmpeg为视频添加时间戳 - 手动编译ffmpeg
阅读量:7118 次
发布时间:2019-06-28

本文共 2740 字,大约阅读时间需要 9 分钟。

FFMPEG给视频加时间戳水印

项目中需要给视频添加时间戳,理所当然最好用的办法是ffmpeg。在找到正确的做法前,还被网上的答案timecode给水了一下(水的不轻,在这里转了2天),大概是这样写的:

ffmpeg -i wildlife.wmv -vf "drawtext=fontfile=arial.ttf: text='fuck': timecode='09\:57\:00\:00': r=25: \x=(w-tw)/1.5: y=h-(20*lh):fontcolor=white: box=1: boxcolor=0x00000000@1" -an -y out.wmv

 

转了一大圈,最后找到了答案, 在Ubuntu14.04LTS下面的使用过程:

#安装官方库提供的版本,2.X的版本sudo apt-get install ffmpeg#添加时间戳的命令, 这串命令在实际应用中是用java生成的,然后使用process执行这个命令ffmpeg -i "/input/input-video.mp4" -vf "drawtext=expansion=strftime:  basetime=$(date +%s -d '2016-12-19 16:27:50')000000 :text='%Y-%m-%d %H\\:%M\\:%S':fontsize=11:fontcolor=white:box=1:x=10:y=10:boxcolor=black@0.5:" -strict -2 -y "/output/output-video.mp4"

其中:

  -i: 指定输入文件,这里使用的视频编码是H264, 音频编码是AAC

  -vf: 视频滤镜,使用了drawtext滤镜,basetime是视频时间戳的初始值,text是显示时间的格式,fontsize后面一串是关于水印的颜色、字体、背景等设置

  -strict -2:AAC的解码在2.x版本是试验性功能,需要加这个参数

  -y: 覆盖已经存在的输出文件

      最后一段是输出文件

问题来了:源视频的参数变化卡死了FFMPEG进程

这样相安无事的使用了一段时间,直到有一天发现服务器上的FFMPEG卡在那不动了,CPU占用率90%多。问了一下,录制视频的客户端确实改了一些东西,主要是视频码率和画面大小,音频参数没有改。先看看是什么导致卡死了,通过调整一些参数的方法,定位到了是音频导致卡死的(音频参数没动过,所以没法解释清楚为什么,只能猜是视频的变化影响了音频,反正MP4容器里面的东西一窍不通)。

ffmpeg -i "/input/input-video.mp4" -vf "drawtext=expansion=strftime:  basetime=$(date +%s -d '2016-12-19 16:27:50')000000 :text='%Y-%m-%d %H\\:%M\\:%S':fontsize=11:fontcolor=white:box=1:x=10:y=10:boxcolor=black@0.5:"-an -y "/output/output-video.mp4"

和原始命令不同的地方就是-strict -2换成了-an, -an表示不处理音频。这个时候视频又能正确的被处理了(只是没有声音)。问题是找到了,找来找去也没找到解决办法。

没招了,升级版本试试

先去Ubuntu16.04的系统上试了试,使用系统仓库的版本是2.8,也有同样的问题。

去官网看了看,官网都3.2了。果断去找3.2的版本,在官网找了,按照他们的步骤装好了一试,报错:大概意思就是drawtext过滤器不存在,删了一些参数,发现aac的解码器也没有。大致的意思就是有一些依赖库没有自动装。看了看没找到怎么装,也不知道具体依赖库有哪些,放弃。

没办法了,只能试试。

#安装文档的步骤删了一些不要的库sudo apt-get updatesudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev \  libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \  libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev#要h264的库sudo apt-get install libx264-dev#要aac的库sudo apt-get install libfdk-aac-dev#configure,编译目的路径也懒得改了,最好还是改了,不然到时候ffmpeg安装到了~/bin目录下PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \  --prefix="$HOME/ffmpeg_build" \  --pkg-config-flags="--static" \  --extra-cflags="-I$HOME/ffmpeg_build/include" \  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \  --bindir="$HOME/bin" \  --enable-gpl \  --enable-libass \  --enable-libfdk-aac \  --enable-libfreetype \  --enable-libtheora \  --enable-libvorbis \  --enable-libx264 \  --enable-nonfreePATH="$HOME/bin:$PATH" makemake installmake distclean #更新一下profile,ffmpeg加入到了PATH source ~/.profile

重新运行了一下加水印的命令,ffmpeg又能正常工作了。

完整编译过程:http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu#CompilationInstallation

 

转载于:https://www.cnblogs.com/leolztang/p/6217470.html

你可能感兴趣的文章
Egret之属性绑定
查看>>
JDK 11,Tomcat卡在Deploying web application directory
查看>>
我的友情链接
查看>>
9.6-9.7 awk
查看>>
单链表的读取、插入与删除
查看>>
shell之for循环的3个简单脚本
查看>>
CISCO 路由器的E1模块配置指南
查看>>
Kickstart+HTTP+DHCP+TFTP全自动批量安装部署Linux系统
查看>>
del
查看>>
idea 添加配置文件 绿叶子
查看>>
我的友情链接
查看>>
VC编译项目时缺少atlrx.h的解决办法
查看>>
Python OpenCV学习笔记之:使用MOG2视频背景消除
查看>>
8月第三周网络安全:境内感染网络病毒主机数73.7万个
查看>>
【Android】Service生命周期回顾
查看>>
11月国内浏览器市场份额:IE、Chrome均遭蚕食
查看>>
Windows下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat
查看>>
【公开课视频】ASP.NET MVC+EF入门-20130315
查看>>
Thinkphp 公共函数自动加载
查看>>
Linux内核之数据双链表
查看>>