利用ffmpeg将mp4视频转换成多张jpg图片

本文介绍了如何利用ffmpeg工具将mp4视频文件转换为多张jpg图片,包括设置提取图像的频率、指定开始时间和持续时间。还提供了一个ffmpeg的shell脚本示例,适用于批量处理行车记录仪视频,以便进行图像标注和深度学习训练。
部署运行你感兴趣的模型镜像
  1. 分离视频音频流
    ffmpeg -i input_file -vcodec copy -an output_file_video  //分离视频流
    ffmpeg -i input_file -acodec copy -vn output_file_audio  //分离音频流

  2. -r 提取图像的频率,-ss 开始时间,-t 持续时间
    ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪切视频

  3. ffmpeg从视频中生成gif图片:
    ffmpeg -i capx.mp4 -t 10 -s 320x240 -pix_fmt rgb24 jidu1.gif
    // -t参数表示提取前10秒视频
    // -s 表示按照 320x240的像素提取

  4. ffmpeg将视频导出成多张图片
    ffmpeg -i output.mp4 -r 30 -f image2 foo-%05d.jpeg
    // -r参数表示按照30帧的速度提取。

  5. ffmpeg批量将视频转为单帧图片shell脚本
    有一些行车记录仪的视频,需要将其转换为单帧图片以供标注和神经网络学习。ffmpeg安装很简单,见前面1-4,视频格式全部为mp4格式,放在/home/ffmpeg-project目录下。需要将其转换并存储在单独目录下,命名为ffout-【视频名】

先贴出最终脚本

#!/bin/bash
#Program:
#convert MP4 to jpg
#History:
#2017/12/02 raulxty@163.com First release
PATH=/root/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export PATH

filelist=$(find *.mp4)
OLDIFS="$IFS"
IFS=$"\n"
for filename in *.mp4
#$(find -iname *.mp4)
do
	mkdir "ffout-${filename%.*}"
    ffmpeg -i $filename /home/ffmpeg-project/"ffout-${filename%.*}"/%03d.jpg
done
IFS=$OLDIFS

运行方式是

[root@centos7 ffmpeg-project]# ./convert_mp4_to_jpg.sh
可能遇到的两个错误,若提示

-bash: ./convert_mp4_to_jpg.sh: Permission denied
解决方法

chmod 777 convert_mp4_to_jpg.sh 
若提示

-bash: ./convert_mp4_to_jpg.sh: /bin/bash^M: bad interpreter: No such file or directory
解决方法

sed -i 's/\r$//' convert_mp4_to_jpg.sh 

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值