本文是利用 FFMPEG 的功能实现的。
生成 file.txt文件
因为缓存文件都是数字,且文件夹内还有其他文件,包括 index.* 的文件。
$ ls -1v --hide=file.txt --hide=index* > file.txt
解释
ls -1v中v表示按照把文件按照数字的大小排序,1表示按行显示。
--hide用于隐藏其他文件,因为file.txt也会被写入到file.txt,所以也要把他隐藏了。
对file.txt文件再处理,生成每行类似file '1'的样式。
$ sed "s/.*/file '&'/" file.txt > file2.txt
$ mv file2.txt file.txt
解释
第一行实现对每一行行首行尾分别添加file '和'内容。
第二行,重命名,替换掉中间文件。
参考网页:
生成 MP4 文件
$ ffmpeg -f concat -i file.txt -c copy film.mp4
做成一个 bash 脚本
下面是完整的代码
#!/bin/bash
# ucvideo
if [ -z $2 ]; then
echo "语法: $0 "
exit 1
fi
if [ -e $2 ]
then
echo "已经存在 $2 文件,请更改输出文件名字!"
exit 1
fi
if [ -e $1 ]
then
cd $1
else
echo "无法找到 $1 文件夹!"
fi
if [ -e file.txt ]
then
mv file.txt file.txt.bk
fi
ls -1v --hide=file.txt --hide=index* > file.txt
sed "s/.*/file '&'/" file.txt > file2.txt
mv file2.txt file.txt
if [ -e $2 ]
then
mv $2 $2.bk
fi
ffmpeg -f concat -i file.txt -c copy $2
rm file.txt
if [ -e file.txt.bk ]
then
mv file.txt.bk file.txt
fi
cd -
mv $1/$2 .
cd $1
if [ -e $2.bk ]
then
mv $2.bk $2
fi
当然为了方便直接使用,把他放在*/usr/local/bin/ucvideo*。 并为之添加执行权限
$ chmod u+x /usr/local/bin/ucvideo
当你从手机上复制缓存文件夹过来,就可以
$ ucvideo // .mp4