ffmpeg
装了吗?
Exec
后面说的哪个几个包装了吗?
ffmpeg
装了吗?
Exec
后面说的哪个几个包装了吗?
以前搞过。
我感觉应该把那两行Exec换成下面注释的。下面注释的才是deepin的格式。
你试一下
要价500 定金100。 搞不定定金全退。
ffmpeg
装了吗?
Exec
后面说的哪个几个包装了吗?
装了
以前搞过。
我感觉应该把那两行Exec换成下面注释的。下面注释的才是deepin的格式。
你试一下
还是 不行
exec后面内容写到sh里
exec后面内容写到sh里
好的,谢谢!
dde-file-manager似乎不能很好地处理/usr/share/deepin/dde-file-manager/oem-menuextensions/
中添加的右键菜单的Exec项
上述Exec中的多条命令在放入bash -c "" 中时无法执行,例如:
Exec=bash -c "file=%f; ffmpeg -i %f -vcodec mjpeg -q:v 2 -acodec pcm_s16be -q:a 0 -f mov \"\${file%.*}.mov\""
Exec=bash -c "file=%f; ffmpeg -i %f -y \"\${file%.*}.mp4\""
我的想法是再单独做个脚本吧,这里Exec直接调用脚本,传入参数。
1、创建右键菜单桌面入口文件
sudo vim /usr/share/deepin/dde-file-manager/oem-menuextensions/convertvideos.desktop
[Desktop Entry]
Version=1.0
Type=Application
Actions=ConvertToMOV;ConvertToMP4
Name=ConvertVideos
Name[zh_CN]=视频格式转换
Icon=video
MimeType=video/*
X-DDE-FileManager-SupportSchemes=file
[Desktop Action ConvertToMOV]
Name=ConvertToMOV
Name[zh_CN]=转换为MOV
Icon=video
Exec=convert-videos %F mov
[Desktop Action ConvertToMP4]
Name=ConvertToMP4
Name[zh_CN]=转换为MP4
Icon=video
Exec=convert-videos %F mp4
2、创建脚本:
sudo vim /usr/local/bin/convert-videos
#!/bin/bash
# 检查参数数量
if [ "$#" -lt 2 ]; then
echo "传入参数不正确,要求:file1 file2 ... format"
echo "例如:test1.mp4 test2.mp4 mov"
echo "意为:将test1.mp4、test2.mp4转换为mov格式"
exit 1
fi
# 获取输入文件名和字符串参数
paramiters=("$@")
input_files=("${paramiters[@]:0:${#paramiters[@]}-1}")
format=${paramiters[${#paramiters[@]}-1]}
# 检查文件是否存在
for input_file in "${input_files[@]}"; do
if [ ! -f "$input_file" ]; then
echo "错误:传入文件 $input_file 不存在"
exit 1
fi
done
# 检查文件后缀是否为ffmpeg支持的视频格式
# TODO
# 检查参数format是否在ffmpeg支持的格式中
# TODO
# 创建默认转换方法
command_convert_video() {
ffmpeg -i "$input_file" -vcodec h264 "${output_file}" 2>/dev/null
}
if [[ $format == mov ]]; then
command_convert_video() {
ffmpeg -i "$input_file" -vcodec mjpeg -q:v 2 -acodec pcm_s16be -q:a 0 -f mov "${output_file}"
}
fi
if [[ $format == mp4 ]]; then
command_convert_video() {
ffmpeg -i "$input_file" -y "${output_file}"
}
fi
for input_file in "${input_files[@]}"; do
# 生成输出文件名
output_file="${input_file%.*}.${format}"
# 检查输出文件是否已经存在。如果是,则修改输出文件名,避免覆盖已存在的文件。
i=0
while [[ -f "$output_file" ]]; do
i=$((i+1))
output_file="${input_file%.*}-${i}.${format}"
done
# 使用ffmpeg进行转换
command_convert_video &> /dev/null
if [ $? -eq 0 ]; then
echo "视频 $input_file 成功转换为 $format 格式"
else
echo "错误:视频 $input_file 格式转换失败"
exit 1
fi
done
3、为脚本赋予执行权限:
sudo chmod +x /usr/local/bin/convert-videos
4、重新图形界面
sudo systemctl restart lightdm
dde-file-manager似乎不能很好地处理/usr/share/deepin/dde-file-manager/oem-menuextensions/
中添加的右键菜单的Exec项
上述Exec中的多条命令在放入bash -c "" 中时无法执行,例如:
Exec=bash -c "file=%f; ffmpeg -i %f -vcodec mjpeg -q:v 2 -acodec pcm_s16be -q:a 0 -f mov \"\${file%.*}.mov\""
Exec=bash -c "file=%f; ffmpeg -i %f -y \"\${file%.*}.mp4\""
我的想法是再单独做个脚本吧,这里Exec直接调用脚本,传入参数。
1、创建右键菜单桌面入口文件
sudo vim /usr/share/deepin/dde-file-manager/oem-menuextensions/convertvideos.desktop
[Desktop Entry]
Version=1.0
Type=Application
Actions=ConvertToMOV;ConvertToMP4
Name=ConvertVideos
Name[zh_CN]=视频格式转换
Icon=video
MimeType=video/*
X-DDE-FileManager-SupportSchemes=file
[Desktop Action ConvertToMOV]
Name=ConvertToMOV
Name[zh_CN]=转换为MOV
Icon=video
Exec=convert-videos %F mov
[Desktop Action ConvertToMP4]
Name=ConvertToMP4
Name[zh_CN]=转换为MP4
Icon=video
Exec=convert-videos %F mp4
2、创建脚本:
sudo vim /usr/local/bin/convert-videos
#!/bin/bash
# 检查参数数量
if [ "$#" -lt 2 ]; then
echo "传入参数不正确,要求:file1 file2 ... format"
echo "例如:test1.mp4 test2.mp4 mov"
echo "意为:将test1.mp4、test2.mp4转换为mov格式"
exit 1
fi
# 获取输入文件名和字符串参数
paramiters=("$@")
input_files=("${paramiters[@]:0:${#paramiters[@]}-1}")
format=${paramiters[${#paramiters[@]}-1]}
# 检查文件是否存在
for input_file in "${input_files[@]}"; do
if [ ! -f "$input_file" ]; then
echo "错误:传入文件 $input_file 不存在"
exit 1
fi
done
# 检查文件后缀是否为ffmpeg支持的视频格式
# TODO
# 检查参数format是否在ffmpeg支持的格式中
# TODO
# 创建默认转换方法
command_convert_video() {
ffmpeg -i "$input_file" -vcodec h264 "${output_file}" 2>/dev/null
}
if [[ $format == mov ]]; then
command_convert_video() {
ffmpeg -i "$input_file" -vcodec mjpeg -q:v 2 -acodec pcm_s16be -q:a 0 -f mov "${output_file}"
}
fi
if [[ $format == mp4 ]]; then
command_convert_video() {
ffmpeg -i "$input_file" -y "${output_file}"
}
fi
for input_file in "${input_files[@]}"; do
# 生成输出文件名
output_file="${input_file%.*}.${format}"
# 检查输出文件是否已经存在。如果是,则修改输出文件名,避免覆盖已存在的文件。
i=0
while [[ -f "$output_file" ]]; do
i=$((i+1))
output_file="${input_file%.*}-${i}.${format}"
done
# 使用ffmpeg进行转换
command_convert_video &> /dev/null
if [ $? -eq 0 ]; then
echo "视频 $input_file 成功转换为 $format 格式"
else
echo "错误:视频 $input_file 格式转换失败"
exit 1
fi
done
3、为脚本赋予执行权限:
sudo chmod +x /usr/local/bin/convert-videos
4、重新图形界面
sudo systemctl restart lightdm
好的,非常感谢!
Popular Events
More
作者用的是manjaro kde 它是放在~/.local/share/kservices5/ServiceMenus
deepin v23要把脚本放到这个下面/usr/share/deepin/dde-file-manager/oem-menuextensions
也就是在鼠标右键直接加入这么一个菜单
在deepin v23下,直接把脚本放进去没办法使用