sh脚本工具集锦(文件批量操作、音视频相关)持续更新

1 文件夹目录下所有图片转换成视频文件

pic_2_videos.sh:

powershell 复制代码
#!/bin/bash
# 放到图片文件夹目录下,把所有jpeg图片推成视频文件
# sh pic_2_videos.sh 0
# 0: pad to 1920*1080 ; 1 or other no pad
pad_1920=$1

if [[ $pad_1920 = 0 ]]
then
    files=`ls|grep jpeg`
    for file in $files;do
      # 取图片文件名称
      file_name=${file%.*}
      echo $file_name" processing..."
      # scale把原图修改下分辨率,缺少的地方不剪切不拉伸而是加黑边,再把所有处理后的图片二次处理成视频
      ffmpeg -r 25 -loop 1 -i $file_name.jpeg -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" -pix_fmt yuv420p -vcodec libx264 -b:v 600k -r:v 25 -preset medium -crf 30 -s 1920x1080 -vframes 250 -r 25 -t 10 $file_name.mp4
    done
else
    files=`ls|grep jpeg`
    for file in $files;do
      file_name=${file%.*}
      echo $file_name" processing..."
      # 不 pad
      ffmpeg -r 25 -loop 1 -i $file_name.jpeg -pix_fmt yuv420p -vcodec libx264 -b:v 600k -r:v 25 -preset medium -crf 30 -s 1920x1080 -vframes 250 -r 25 -t 10 $file_name.mp4
    done
fi

2 文件夹目录下所有文件按照序列顺序重新命名

rename.sh

powershell 复制代码
#!/bin/bash
# 放到文件目录下,执行 rename.sh prefix_ mp4 所有mp4文件会自动重新命名为 prefix_1.mp4、prefix_2.mp4、prefix_3.mp4....
i=1
prefix=$1
type=$2
file_list=`ls |grep $type`
for file in $file_list;
do
  new_str=$prefix"_"$i".$type"
  echo $new_str
  mv $file $new_str
  (( i++ ))
  sleep 0.2
done

3 h265视频文件不能播放、音频编码异常导致不能播放

查了下音频编码格式不兼容,ffprobe 查看视频音频编码确实是pcm_alaw

重新编码成h264

toh264.sh:

powershell 复制代码
#!/bin/bash
# 脚本复制到文件目录下,执行sh toh264.sh即可。sh toh264.sh aa:会跳过名称包含aa的视频文件
exclude_filter=$1
if [[ -z $filter ]]
then
    files=`ls|grep mp4`
else
    files=`ls|grep mp4 |grep -v $exclude_filter`
fi

for file in $files;do
	echo $file
	ffmpeg -i $file -map 0 -c:a copy -c:s copy -c:v libx264 new_$file
	rm -rf $file
done
相关推荐
xingxing_F13 分钟前
Topaz Video AI for Mac AI视频无损放大 视频画质增强
人工智能·macos·音视频
Android系统攻城狮3 小时前
Android16音频之设置音频模式setMode:用法实例(七十一)
音视频·android16·设置音频模式·setmode
aqi005 小时前
FFmpeg开发笔记(八十六)基于Node.js的国产视频编辑开源框架OpenCut
ffmpeg·音视频·直播·流媒体
黄名富8 小时前
软件测试入门-测试用例
测试工具·测试用例
大米粥哥哥17 小时前
Qt QProcess基于Linux的命令管道符号无效问题【已解决】
linux·qt·shell·qprocess·1024程序员节·管道符号
程序员杰哥19 小时前
如何使用Postman做接口自动化测试及完美的可视化报告?
自动化测试·软件测试·python·测试工具·jenkins·postman·1024程序员节
黑翼杰克斯20 小时前
关于buildroot文件系统中rootfs的内容,该怎么增删(瑞芯微rv1126b)
linux·音视频·1024程序员节
aqi001 天前
FFmpeg开发笔记(八十五)基于PyQt和FFmpeg的开源视频剪辑器OpenShot
ffmpeg·音视频·直播·流媒体
hoiii1871 天前
C#实现摄像头视频录制与保存
开发语言·c#·音视频