i8520
deepin
2020-05-22 20:48 - #!/bin/bash
- #转mkv 编码格式 H265 音频 acc 码率 128K 每秒帧数 crf=28
- #gui 脚本一定要声明 系统语言 英文 可以不申明
- LANG="zh_CN.UTF-8" #这样按钮才会跟谁系统,显示为当前系统的语言,申明比不申明好。
- d1="$(zenity --file-selection --title="视频文件在哪 ?" \
- --directory)"
- # $? 是上一个程序执行是否成功的标志#
- # 如果执行成功则$? 为0,否则 不为0#
- # && 同|| 意思大体相同都是选择 &&我想优先级比较高 自动完成
- # && exit 后自动跳到了 $d2 $d2结束后 就给一个名字 开始转换同步执行进度条 进度条的时间取决于机器的性能 模块 libx265
- # && 逻辑与 可以理解为并且的意思
- # || 逻辑或,可以理解为或者的意思,也就是条件可以2取一#
- # ! 逻辑非 (一元表达式)#
- [[ "$?" != 0 ]] && exit # || sleep 2 长时间不选择就关闭 这个适合网络连接
- d2="$(zenity --file-selection --title="转换保存在哪 ?" \
- --directory)"
- [[ "$?" != 0 ]] && exit #在这边加上时间就强制结束了
- for i in "$d1"/* ; do # i 和 "$d1"/* 这是一个路径 坑爹要用甲骨文发明个编程语言 in 你不能用中文 外国人天生会编程
- ## 筛选出实际的文件名 #filename=文件名字
- filename=$(basename -- "$i")
- ## 根名字 的参数 $i # "$d2"/"${filename%.*} # 一个可以扩展接口的方法
- ## 文件名=变量 同一文件夹里 不会封装 这也是一个笨办法
- ## 其实编程也是过家家没什么 就看谁的逻辑更合理
- ## 我喜欢结果导向过成 我的目的是功能 $是导向过程的 笑死我了
- ## 使用的模块 libx265 这个外国人是个大厨 肉块
- ## 没有这个模块这个脚本就不会起作用
- ## ffmpeg是一个内置解码器? 终端输入也可以或得具体参数
- ## crf=27 也是一个可选参数 视频每秒中的画面 超过30帧每秒就没有意义了 27就可以
- ## 动画 才10几帧每秒 3d动画除外 有些60 FPS 这个和显示器刷新有关
- ## libx265 可选模块 x264
- ## 视频解码 https://baike.baidu.com/item/%E8%A7%86%E9%A2%91%E7%BC%96%E7%A0%81/839038?fr=aladdin
- ffmpeg -i "$i" -c:v libx265 -preset medium -x265-params crf=28 \
- -c:a aac -strict experimental -b:a 128k "$d2"/"${filename%.*}.mkv" # 谁机名字?128k 也是一个可选参数
- # ffmpeg 和 zenity 一起 ffmpeg 结束时 zenity也结束
- done | zenity --progress --pulsate --title "Processing " \
- --text "正在转换请稍候" \
- --pulsate --auto-close --auto-kill
Reply Like 0 Favorite View the author


中文 