bash shell,调用ffmpeg定期截图

#!/bin/bash
#获取当前目录中所有m3u8文件,并
var=$(ls |grep ‘.m3u8‘|cut -d ‘.‘ -f1)

#死循环
while [ 1 = 1 ]
do
    #循环每个文件
    for stream in $var
    do
        #获取当前最新视频文件
        ts=$(ls -t|grep "$stream")
        for file in $ts
        do
            #存储M3U8文件文件名作为图片文件名,截图为220*120,截取第一帧,存储在当前目录的screen文件夹
            img=$(ls $file|cut -d ‘-‘ -f1)
            #调用ffmpeg 截取视频
            ffmpeg2 -i $file -y -f image2 -s 220*120 -vframes 1 screen/$img.png
            #跳出循环
            break
        done
    done
#延迟1分钟
sleep 1m
done

live目录文件

drwxrwxr-x 4 yusen yusen 4096 8月 10 14:07 .
drwxrwxrwx 14 root root 4096 8月 10 13:59 ..
-rw-rw-r-- 1 yusen yusen 1241740 8月 4 16:55 471132-10.ts
-rw-rw-r-- 1 yusen yusen 1237228 8月 4 16:55 471132-11.ts
-rw-rw-r-- 1 yusen yusen 1256404 8月 4 16:55 471132-12.ts
-rw-rw-r-- 1 yusen yusen 598028 8月 4 16:55 471132-13.ts
-rw-rw-r-- 1 yusen yusen 1242304 8月 4 16:55 471132-9.ts
-rw-rw-r-- 1 yusen yusen 229 8月 4 16:55 471132.m3u8
-rw-rw-r-- 1 yusen yusen 530912 8月 8 16:08 6598-0.ts
-rw-rw-r-- 1 yusen yusen 665332 8月 8 16:08 6598-1.ts
-rw-rw-r-- 1 yusen yusen 654616 8月 8 16:08 6598-2.ts
-rw-rw-r-- 1 yusen yusen 719100 8月 8 16:09 6598-3.ts
-rw-rw-r-- 1 yusen yusen 321668 8月 8 16:09 6598-4.ts
-rw-rw-r-- 1 yusen yusen 669468 8月 7 10:43 6598-5.ts
-rw-rw-r-- 1 yusen yusen 648788 8月 7 10:43 6598-6.ts
-rw-rw-r-- 1 yusen yusen 162620 8月 7 10:44 6598-7.ts
-rw-rw-r-- 1 yusen yusen 325 8月 8 16:09 6598.m3u8
drwxrwxr-x 2 yusen yusen 4096 8月 10 08:54 demo
drwxrwxr-x 2 yusen yusen 4096 8月 10 12:00 screen
-rwxrwxr-x 1 yusen yusen 520 8月 10 14:07 screen.sh
-rwxrwxr-x 1 yusen yusen 520 8月 10 14:01 screen.sh~
drwxrwxr-x 4 yusen yusen 4096 8月 10 14:07 .
drwxrwxrwx 14 root root 4096 8月 10 13:59 ..
-rw-rw-r-- 1 yusen yusen 1241740 8月 4 16:55 471132-10.ts
-rw-rw-r-- 1 yusen yusen 1237228 8月 4 16:55 471132-11.ts
-rw-rw-r-- 1 yusen yusen 1256404 8月 4 16:55 471132-12.ts
-rw-rw-r-- 1 yusen yusen 598028 8月 4 16:55 471132-13.ts
-rw-rw-r-- 1 yusen yusen 1242304 8月 4 16:55 471132-9.ts
-rw-rw-r-- 1 yusen yusen 229 8月 4 16:55 471132.m3u8
-rw-rw-r-- 1 yusen yusen 530912 8月 8 16:08 6598-0.ts
-rw-rw-r-- 1 yusen yusen 665332 8月 8 16:08 6598-1.ts
-rw-rw-r-- 1 yusen yusen 654616 8月 8 16:08 6598-2.ts
-rw-rw-r-- 1 yusen yusen 719100 8月 8 16:09 6598-3.ts
-rw-rw-r-- 1 yusen yusen 321668 8月 8 16:09 6598-4.ts
-rw-rw-r-- 1 yusen yusen 669468 8月 7 10:43 6598-5.ts
-rw-rw-r-- 1 yusen yusen 648788 8月 7 10:43 6598-6.ts
-rw-rw-r-- 1 yusen yusen 162620 8月 7 10:44 6598-7.ts
-rw-rw-r-- 1 yusen yusen 325 8月 8 16:09 6598.m3u8
drwxrwxr-x 2 yusen yusen 4096 8月 10 08:54 demo
drwxrwxr-x 2 yusen yusen 4096 8月 10 12:00 screen
-rwxrwxr-x 1 yusen yusen 520 8月 10 14:07 screen.sh
-rwxrwxr-x 1 yusen yusen 520 8月 10 14:01 screen.sh~

screen.sh为需要执行的shell
screen为存储截图的目录,执行shell后screen目录中文件为

drwxrwxr-x 2 yusen yusen 4096 8月 10 12:00 .
drwxrwxr-x 4 yusen yusen 4096 8月 10 14:07 ..
-rw-rw-r-- 1 yusen yusen 58497 8月 10 12:00 471132.png
-rw-rw-r-- 1 yusen yusen 29596 8月 10 12:00 6598.png

可以看到已经实现了自动获取视频截图,需要修改截取周期只需要修改sleep的参数就可以了

时间: 2024-10-11 08:35:14

bash shell,调用ffmpeg定期截图的相关文章

.Net调用ffmpeg对视频截图

2019/10/27, .Net c#代码片段 摘要:借助ffmpeg对视频/图片截图.生成缩略图,使用命令行调用ffmpeg工具,支持Linux和Windows 网上很多版本都是需要等待4s的做法,这里不需要等待固定4s 添加引用对系统判断: using System.Runtime.InteropServices; /// <summary> /// 借助ffmpeg生成缩略图 /// </summary> /// <param name="originalFi

java 调用bash shell脚本阻塞的小问题的解决

java  调用bash shell脚本阻塞的小问题的解决 背景 使用java实现的web端,web端相应用户的界面操作,使用java调用bash实现的shell脚本进行实际的操作,操作完成返回执行结果给web 界面显示. 现象: Java 进程阻塞.使用ps命令可以看到被调用的shell 的执行进程状态为S 分析 Shell子进程的状态是S 睡眠状态,也就是该进程在等待某个条件满足,方能继续执行. Java程序在调用Runtime.getRuntime().exec(jyName)之后,lin

bash shell学习 01(配置和启动脚本)

bash是 Bourne Again Shell简称 ,从unix系统的sh发展而来 查看当前shellecho $SHELL查看系统支持的shellcat /etc/shells cd /binls -la *sh 一. bash shell的配置变量可分为自定义变量和环境变量他们作用范围不同set 可以查看所有变量set|more 查看 enter一行一行查看set|less enter换行 pagedown换页 q退出 env只能查看环境变量 bash shell的设置方式1.通过自定义变

bash shell环境变量

$* 将所有命令行参数当做单个文本值包含 [email protected] 将所有命令行参数当做独立的文本值包含 $# 命令行参数数目 $? 最近使用的前端进程的退出状态码 $- 当前命令选项标记 $$ 当前shell的进程ID(PID) $! 最近执行的后台进程PID $0 来自命令行的命令名称 $_ shell的绝对路径名 BASH 用来调用shell的全文件名 BASH_ARGC 当前子函数中的参数数目 BASH_ARGV 含有所有指定命令行参数的数组 BASH_COMMAND 当前正在

Bash Shell 小试牛刀

一.终端打印 [[email protected] ~]# echo welcome to bash! welcome to bash! [[email protected] ~]$ echo 'welcome to bash!' welcome to bash! [[email protected] ~]$ echo "welcome to bash\!" welcome to bash\! (注意,双引号内不能直接用特殊符号,需要用转义符\) [[email protected]

8.11_Linux之bash shell脚本编程入门篇(一)

什么是bash shell脚本编程? 答:Linux里面有多种shell,而CentOS和redhat的默认shell是bash shell.至于shell脚本,这个跟windows操作系统里面的批处理文件有点像(.bat的文件).不知道大家还是否记得Linux的哲学思想吗?其中有那么两点点:由众多目的的单一应用程序组成:一个程序只做一件事,且做好:组合目的的单一的小程序完成复杂的任务.我觉得shell脚本编程就很好的体现了这个哲学思想.shell脚本利用shell的功能缩写的一个"程序&quo

系统管理中 bash shell 脚本常用方法总结

FROM: http://www.cnblogs.com/hunterfu/archive/2010/02/23/1672129.html 在日常系统管理工作中,需要编写脚本来完成特定的功能,编写shell脚本是一个基本功了!在编写的过程中,掌握一些常用的技巧和语法就可以完成大部分功能了,也就是2/8原则. 1. 单引号和双引号的区别 单引号与双引号的最大不同在于双引号仍然可以引用变量的内容,但单引号内仅是普通字符 ,不会作变量的引用,直接输出字符窜.请看如下例子: [[email protec

Bash Shell编程要点小结

一.case命令 case variable invalue1) command(s);; value2) command(s);; *) command(s);; esac 如果case变量没有被匹配,程序就执行*)后面的语句.case值中允许出现Shell通配符和竖线(|)作为OR操作符 二.if命令 if commandthen command(s) fi if test expressionthen command(s) fi if [ string/numeric expression

bash shell基础编程

一. BASH Shell编程基础 1. BASH Shell的可执行文件 (1) 内部命令 (2) 外部命令 (3) 脚本文件 2. BASH Shell的命令解释过程 在path指定范围内查找(外部命令) ...... 3. BASH Shell的变量 (1) 变量的分类 -按作用域分 a. 局部变量 b. 全局变量 -按用途分 a. 自定义变量 b. 系统环境变量(path) c. 特殊变量 (2) 定义和引用变量 -定义变量: 即用即定义.不用加$ 注: 可用export命令将变量输出为