技术标签: linux定时任务 ffmpeg视频转码 linux 服务器 ffmpeg
最近将.net core系统从windows 环境下迁移到linux中,使用docker容器部署。但是系统中使用了ffmpeg做视频转码和截图。在windows中只需要知道ffmpeg.exe的文件位置就可以简单实现功能,但在linux中需要先安装好ffmpeg。这个时候会产生一个问题,ffmpeg是安装在linux中的, 而系统部署在docker容器中,那么容器中的站点需要访问ffmpeg工具需要将ffmpeg挂载到容器中,这一步不知道怎么实现,尝试过很多次还是没有成功。索性在linux中写个脚本来实现。当然也可以将ffmpeg直接安装在容器中,不过这样的话每个需要使用ffmpeg的容器都需要单独安装,且ffmpeg会随着容器的删除而消失。
以下是脚本内容:
#! /bin/bash
function convert_video(){
extens=("avi" "wmv" "rmvb" "3gp" "mp4")
while true
do
#echo $1
if [ "`ls -A $1`" = "" ] #判断文件是否为空
then
#echo "$1 is empty"
return
fi
for file in `ls $1` #遍历文件夹下的文件;注意此处这是两个反引号,表示运行系统命令
do
if [ -d $1"/"$file ] #判断是文件还是文件夹;注意此处之间一定要加上空格,否则会报错
then #文件夹则递归遍历
convert_video $1"/"$file
else
temp=${file##*.}
exten=$(echo $temp | tr '[A-Z]' '[a-z]')
filename=$1"/"$file #输出文件地址
filenamenew=${filename/\/tempfile/} #需要转码的文件放在tempfile临时目录下,比真实目录多了这层,所以删掉/tempfile这层
newjpg="${filenamenew%.*}.jpg"
newmp4="${filenamenew%.*}.mp4"
#判断文件拓展名是否被包含
if [[ "${extens[@]}" =~ "$exten" ]]
then
/usr/local/ffmpeg/ffmpeg/bin/ffmpeg -i $filename -ss 00:00:06.000 -vframes 1 -an -y -f mjpeg $newjpg #截取视频第一张图片
if [ $exten = "mp4" ] #本身就是MP4则不需要转码, 直接复制过去
then
mv $filename $newmp4
else
/usr/local/ffmpeg/ffmpeg/bin/ffmpeg -i $filename -ac 1 -ar 11025 -y -hide_banner $newmp4 #转码
fi
#如果图片和视频都成功制作,则删除源文件
if [ -f $newjpg ]
then
if [ -f $newmp4 ]
then
rm -f $filename #删除源文件
fi
fi
fi
fi
done
sleep 2 #间隔秒数
done
}
#读取第一个参数
convert_video $1
#直接执行:/data/webapp/hotel/script/hotel_video_convert.sh /data/webapp/hotel/files/tempfile
#执行方式:nohup sh /data/webapp/hotel/script/hotel_video_convert.sh /data/webapp/hotel/files/tempfile &
#后台带日志:nohup sh /data/webapp/hotel/script/hotel_video_convert.sh /data/webapp/hotel/files/tempfile >/data/webapp/hotel/script/videolog.txt 2>&1 &
执行脚本:/data/webapp/hotel/script/hotel_video_convert.sh /data/webapp/hotel/files/tempfile
在后台执行:nohup sh /data/webapp/hotel/script/hotel_video_convert.sh /data/webapp/hotel/files/tempfile &
后台带日志:nohup sh /data/webapp/hotel/script/hotel_video_convert.sh /data/webapp/hotel/files/tempfile >/data/webapp/hotel/script/logs/videolog.txt 2>&1 &
用VS在x64下运行包含opencv的程序时,报错类似下图:解决办法:把自己opencv文件目录下的\opencv\build\x64\vc14\bin中的三个dll文件,拷贝到C:\Windows\System32 中。..._opencv opendllame
如何将Outlook2010收邮件方式由IMAP更改为POP3以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如何将foxmail中的POP3 改为IMAP不能修改,只能从新新建账号的时候邮箱类型选择IMAP,IMAP是同步协议,设置好后会同步网页邮箱保留的所有邮件。如何把邮件客户端收信模式POP3改为IMAP模式好多使..._在outllook如何把邮箱类型imap改成pop3
本文介绍几种Android中实现定时周期任务的方法.1.TimerTimer timer = new Timer( );TimerTask task = new TimerTask( ) {public void run ( ) {//如果不需要操作UI则可以省略handler的部分直接在定时器里完成业务逻辑doSth_android 周期任务
今天看到一个很简约的学习MATLAB的网站:http://jpkc.lzcu.edu.cn/2009/shuxueshiyan/MATLABXUEXIZT/matlabXEXI.htm回头要把感兴趣的部分学习一下,再遇到这样的matlab资源继续汇总到这里:
TextRenderer.MeasureText是Winform中用于计算文本尺寸的一个很好用的方法,WPF中也可以使用。用法如下: Font f = new Font(“SimSun”, 9F, System.Drawing.FontStyle.Regular); System.Drawing.Size aSize = System.Windows.Forms.TextRender
1. /etc/wpa_supplicant.config 內容ctrl_interface=/var/run/wpa_supplicantnetwork={ ssid="ssid_namef" psk="password" key_mgmt=WPA-PSK }2. commandswpa_supplicant _association request to the driver failed
在实际数据分析过程中,我们分析用Python来处理数据(海量的数据),我们都是把这个数据转换为Python的对象的,比如最为常见的字典。 比如现在有几十万份数据(当然一般这么大的数据,会用到数据库的概念,不会去在CPU内存里面运行),我们不可能在Excel里面用函数进行计算一些值吧,这样是不现实的。 Excel只适合处理比较少的...
1. 库OpenNI SensorKinect NITE的安装(1)OpenNIstep1 :下载 OpenNI库文件http://www.openni.org/Downloads/OpenNIModules.aspx选择“OpenNI Binaries”->“Unstable”->“...for Ubuntu...”,点击“Download”。setp2: 下载完成后解压,得到文件夹...
工作中收集、整理资料是非常耗时的事。因为文件格式的不同,整理起来又有诸多不便。而PDF文档可以将多种不同格式的资料整合为一个文件,便于储存、传输。使用虚拟打印机便可以将不同渠道的多种格式的资料合并为一个PDF文档,那么pdfFactory怎么合并PDF呢?一、收集资料首先,来看看如何使用pdfFactory Pro虚拟打印机收集以下四种常见格式的文档吧。1、Word文档打开Word文档,通过“文件——打印”路径,打开“打印设置弹窗”,打开“打印机名称”下拉框,选择“pdfFactory Pro _factor pdf
深度优先搜索和广度优先搜索广泛运用于树和图中,但是它们的应用远远不止如此。BFS广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。第一层:0 -> {6,2,1,5}第二层:6 -> {4} 2 -> {} 1 -> {} 5 -> {3..._leetcode 二维网格返回原点的最短距离
转自:http://www.eobo.cn/news/230.html首先要学会怎么设置httpd.conf 的设置, 什么 ALL 就不用用说了要看你的 httpd.conf 是否设置正确了,很简单,只要你在 .htaccess 里随便录入一些 比如 adbasdfasdf 之类的文件,保存,设置 htaccess 是不用重启 apache 的, 这时看下是不是网页上显示的乱码_apace rewriteengine
很多同学纠结mysql的安装,之前有发布一版Linux下的安装教程,现在追加一版本windows下的安装教程。_mysql windows免安装