1 文件夹目录下所有图片转换成视频文件
pic_2_videos.sh:
#!/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:
#!/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:
#!/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