Linux使用shell定时任务实现ffmpeg视频转码和截图_linux 使用 ffmpeg 转码脚本_Bear Coding的博客-程序员宅基地

技术标签: 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 &

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_26900081/article/details/100698566

智能推荐

OPENCV配置:找不到opencv_world3XXd.dll的问题_opencv opendllame-程序员宅基地

用VS在x64下运行包含opencv的程序时,报错类似下图:解决办法:把自己opencv文件目录下的\opencv\build\x64\vc14\bin中的三个dll文件,拷贝到C:\Windows\System32 中。..._opencv opendllame

outlook如何修改收发服务器,如何将Outlook2010收邮件方式由IMAP更改为POP3-程序员宅基地

如何将Outlook2010收邮件方式由IMAP更改为POP3以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如何将foxmail中的POP3 改为IMAP不能修改,只能从新新建账号的时候邮箱类型选择IMAP,IMAP是同步协议,设置好后会同步网页邮箱保留的所有邮件。如何把邮件客户端收信模式POP3改为IMAP模式好多使..._在outllook如何把邮箱类型imap改成pop3

Android中实现定时周期任务的方法_android 周期任务-程序员宅基地

本文介绍几种Android中实现定时周期任务的方法.1.TimerTimer timer = new Timer( );TimerTask task = new TimerTask( ) {public void run ( ) {//如果不需要操作UI则可以省略handler的部分直接在定时器里完成业务逻辑doSth_android 周期任务

学习matlab的资源网站-程序员宅基地

今天看到一个很简约的学习MATLAB的网站:http://jpkc.lzcu.edu.cn/2009/shuxueshiyan/MATLABXUEXIZT/matlabXEXI.htm回头要把感兴趣的部分学习一下,再遇到这样的matlab资源继续汇总到这里:

TextRenderer.MeasureText计算字符串文本所占的尺寸-程序员宅基地

TextRenderer.MeasureText是Winform中用于计算文本尺寸的一个很好用的方法,WPF中也可以使用。用法如下: Font f = new Font(“SimSun”, 9F, System.Drawing.FontStyle.Regular); System.Drawing.Size aSize = System.Windows.Forms.TextRender

TI WL1271 WiFi Linux 設定_association request to the driver failed-程序员宅基地

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如何把字典写入到CSV文件_辰子王的博客-程序员宅基地

在实际数据分析过程中,我们分析用Python来处理数据(海量的数据),我们都是把这个数据转换为Python的对象的,比如最为常见的字典。 比如现在有几十万份数据(当然一般这么大的数据,会用到数据库的概念,不会去在CPU内存里面运行),我们不可能在Excel里面用函数进行计算一些值吧,这样是不现实的。 Excel只适合处理比较少的...

open ni linux,Ubuntu环境下安装配置OpenNI实战笔记的方法及命令_睁眼闭眼哦的博客-程序员宅基地

1. 库OpenNI SensorKinect NITE的安装(1)OpenNIstep1 :下载 OpenNI库文件http://www.openni.org/Downloads/OpenNIModules.aspx选择“OpenNI Binaries”->“Unstable”->“...for Ubuntu...”,点击“Download”。setp2: 下载完成后解压,得到文件夹...

pdfFactory怎么合并PDF_factor pdf_小马哥的幸福的博客-程序员宅基地

工作中收集、整理资料是非常耗时的事。因为文件格式的不同,整理起来又有诸多不便。而PDF文档可以将多种不同格式的资料整合为一个文件,便于储存、传输。使用虚拟打印机便可以将不同渠道的多种格式的资料合并为一个PDF文档,那么pdfFactory怎么合并PDF呢?一、收集资料首先,来看看如何使用pdfFactory Pro虚拟打印机收集以下四种常见格式的文档吧。1、Word文档打开Word文档,通过“文件——打印”路径,打开“打印设置弹窗”,打开“打印机名称”下拉框,选择“pdfFactory Pro _factor pdf

Leetcode 题解 - 搜索--BFS(1):计算在网格中从原点到特定点的最短路径长度_leetcode 二维网格返回原点的最短距离-程序员宅基地

深度优先搜索和广度优先搜索广泛运用于树和图中,但是它们的应用远远不止如此。BFS广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。第一层:0 -> {6,2,1,5}第二层:6 -> {4} 2 -> {} 1 -> {} 5 -> {3..._leetcode 二维网格返回原点的最短距离

告诉您APACHE RewriteEngine到底有哪些用途_apace rewriteengine-程序员宅基地

转自:http://www.eobo.cn/news/230.html首先要学会怎么设置httpd.conf 的设置, 什么 ALL 就不用用说了要看你的 httpd.conf 是否设置正确了,很简单,只要你在 .htaccess 里随便录入一些 比如 adbasdfasdf 之类的文件,保存,设置 htaccess 是不用重启 apache 的, 这时看下是不是网页上显示的乱码_apace rewriteengine

windows免安装版mysql_mysql windows免安装-程序员宅基地

很多同学纠结mysql的安装,之前有发布一版Linux下的安装教程,现在追加一版本windows下的安装教程。_mysql windows免安装