精易论坛

标题: 易语言代码实现TS视频文件转换为MP4文件 [打印本页]

作者: 易飞鸟    时间: 2021-10-17 17:24
标题: 易语言代码实现TS视频文件转换为MP4文件
主要代码:
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
FFFFMPEG_类  

子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
视频路径文本型 
输出路径文本型 
ret文本型 
视频名组文本型0
视频名文本型 
如果真 (编辑框_文件路径.内容 = “”)
信息框 (“文件路径不能为空!”, 0, , )
返回 ()

如果真 (文件_取扩展名 (编辑框_文件路径.内容)“.ts”)
信息框 (“文件类型不对!”, 0, , )
返回 ()

编辑框_信息.加入文本 (“开始转换......”#换行符 )
视频路径 = 文本替换 (编辑框_文件路径.内容, 寻找文本 (编辑框_文件路径.内容, “.ts”, , ), 3, )
视频名组 = 分割文本 (视频路径, “\”, )
视频名 = 视频名组 [取数组成员数 (视频名组)]
如果真 (文件是否存在 (取运行目录 ()“\video”))
创建目录 (取运行目录 ()“\video”)

文件_复制 (编辑框_文件路径.内容, 取运行目录 ()“\1.ts”, 0)
输出路径 = 取运行目录 ()“\video\”删全部空 (视频名)“.mp4”
ret = FF.视频_视频转换 (取运行目录 ()“\1”, 输出路径, 1)
编辑框_信息.加入文本 (编码_utf8到gb2312 (ret)#换行符 )
编辑框_信息.加入文本 (“转换完成,目标输出:” + 输出路径 + #换行符 )
文件_删除 (取运行目录 ()“\1.ts”)
子程序名返回值类型公开备 注
_按钮2_被单击  
变量名类 型静态数组备 注
文件号整数型 
通用对话框1.初始目录 = 取运行目录 ()
如果真 (通用对话框1.打开 ())
编辑框_文件路径.内容 = 通用对话框1.文件名

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
FF.FFMPEG_初始化 (取运行目录 ())
ffmpeg类代码:
  
窗口程序集名保 留  保 留备 注
FFMPEG_类   
变量名类 型数组备 注
集_路径文本型  

子程序名返回值类型公开备 注
_初始化 当基于本类的对象被创建后,此方法会被自动调用

子程序名返回值类型公开备 注
_销毁 当基于本类的对象被销毁前,此方法会被自动调用

子程序名返回值类型公开备 注
FFMPEG_初始化 先初始化
参数名类 型参考可空数组备 注
路径文本型ffmpeg所在目录
集_路径 = 路径
子程序名返回值类型公开备 注
视频_格式转换文本型 www.eyuyan.la
参数名类 型参考可空数组备 注
源件路径文本型
输出路径文本型
是否ts转mp4逻辑型
变量名类 型静态数组备 注
ret文本型 
如果 (是否ts转mp4 = )
返回 (系统_取DOS执行结果 (集_路径 + “\ffmpeg -i ” + 源件路径 + “.mp4”“ -vcodec copy -acodec copy -vbsf h264_mp4toannexb ” + 输出路径 + “.ts -y”, ))
返回 (系统_取DOS执行结果 (集_路径 + “\ffmpeg -y -i ” + 源件路径 + “.ts”“ -c:v libx264 -c:a copy -bsf:a aac_adtstoasc ” + 输出路径 + “.mp4 -y”, ))

子程序名返回值类型公开备 注
视频_合并视频文本型 
参数名类 型参考可空数组备 注
合并路径文本型C:\1.ts|C:\2.ts
输出路径文本型
返回 (系统_取DOS执行结果 (集_路径 + “\ffmpeg -i ”#引号“concat:” + 合并路径 + #引号“ -acodec copy -vcodec copy -absf aac_adtstoasc ” + 输出路径 + “ -y”, ))
子程序名返回值类型公开备 注
视频_获取时长整数型 返回秒数值
参数名类 型参考可空数组备 注
视频路径文本型
变量名类 型静态数组备 注
执行结果文本型 
数组文本型0
双精度小数型 
双精度小数型 
双精度小数型 
视频长度双精度小数型 
' ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 input.mp4
执行结果 = 系统_取DOS执行结果 (集_路径 + “\ffmpeg -i ” + 视频路径 + “ 2>&1”)
执行结果 = 文本_取出中间文本 (执行结果, “Duration: ”, “, start”, )
数组 = 分割文本 (执行结果, “:”, )
如果 (取数组成员数 (数组) = 3)
时 = 到数值 (数组 [1]) × 60 × 60
分 = 到数值 (数组 [2]) × 60
秒 = 到数值 (数组 [3])
视频长度 = 时 + 分 + 秒
视频长度 = 0
返回 (到整数 (视频长度))
子程序名返回值类型公开备 注
视频_视频转图文本型 
参数名类 型参考可空数组备 注
视频路径文本型
图片位数文本型
输出目录文本型
变量名类 型静态数组备 注
ret文本型 
ret = 系统_取DOS执行结果 (集_路径 + “\ffmpeg -i ” + 视频路径 + “ -ss 1 -f image2 ” + 输出目录 + “\%” + 图片位数 + “d.jpeg”)
返回 (编码_utf8到gb2312 (ret))
子程序名返回值类型公开备 注
视频_提取音频文本型 
参数名类 型参考可空数组备 注
视频路径文本型
输出路径文本型
返回 (系统_取DOS执行结果 (集_路径 + “\ffmpeg -i ” + 视频路径 + “ -f mp3 ”#引号 + 输出路径 + #引号, ))
子程序名返回值类型公开备 注
视频_置入音频文本型 
参数名类 型参考可空数组备 注
视频路径文本型
音频路径文本型
输出路径文本型
返回 (系统_取DOS执行结果 (集_路径 + “\ffmpeg -i ” + 视频路径 + “ -i ” + 音频路径 + “ -c copy ” + 输出路径, ))
子程序名返回值类型公开备 注
视频_图转视频文本型 www.eyuyan.la
参数名类 型参考可空数组备 注
图片目录文本型整个存放图片的文件夹目录 图片为 *.jpeg 扩展类型
每秒帧数文本型每秒帧数
音频路径文本型
输出路径文本型
变量名类 型静态数组备 注
ret文本型 
音频设置文本型 
' -start_number 0002 -f image2 -i IMG_%04d.jpg dir2_water.avi
如果真 (音频路径 ≠ “”)
音频设置 = “ -i ” + 音频路径
ret = 系统_取DOS执行结果 (集_路径 + “\ffmpeg -r ” + 每秒帧数 + 音频设置 + “ -f image2 -i ” + 图片目录 + “\%3d.jpeg -y -c:a aac -strict experimental ” + 输出路径)
返回 (编码_utf8到gb2312 (ret))
子程序名返回值类型公开备 注
BMP高斯模糊字节集 
参数名类 型参考可空数组备 注
BMP图片字节集
衰减整数型
变量名类 型静态数组备 注
BMP图片宽度整数型 
BMP图片高度整数型 
BMP起始位置整数型 
i整数型 
BMPY整数型 
BMPX整数型 
当前x整数型 
当前y整数型 
平均R整数型 
平均B整数型 
平均G整数型 
当前R整数型 
当前G整数型 
当前B整数型 
当前N整数型 
Y整数型 
输出BMP字节集 
衰减_整数整数型 
输出BMP = BMP图片
BMP起始位置 = BMP图片 [3]
BMP图片宽度 = BMP图片 [19] + BMP图片 [20] × 256
BMP图片高度 = BMP图片 [23] + BMP图片 [24] × 256
衰减_整数 = 0
如果真 (是否为空 (衰减))
衰减_整数 = 衰减
变量循环首 (0, BMP图片高度 - 1, 1, BMPY)
变量循环首 (0, BMP图片宽度 - 1, 1, BMPX)
平均R = 0
平均G = 0
平均B = 0
当前N = 0
如果真 (取图片像素RGB (BMP图片, BMPX - 1, BMPY, 当前R, 当前G, 当前B))
平均R = 平均R + 当前R
平均G = 平均G + 当前G
平均B = 平均B + 当前B
当前N = 当前N + 1
如果真 (取图片像素RGB (BMP图片, BMPX + 1, BMPY, 当前R, 当前G, 当前B))
平均R = 平均R + 当前R
平均G = 平均G + 当前G
平均B = 平均B + 当前B
当前N = 当前N + 1
如果真 (取图片像素RGB (BMP图片, BMPX, BMPY + 1, 当前R, 当前G, 当前B))
平均R = 平均R + 当前R
平均G = 平均G + 当前G
平均B = 平均B + 当前B
当前N = 当前N + 1
如果真 (取图片像素RGB (BMP图片, BMPX, BMPY - 1, 当前R, 当前G, 当前B))
平均R = 平均R + 当前R
平均G = 平均G + 当前G
平均B = 平均B + 当前B
当前N = 当前N + 1
平均B = 取整 (平均B ÷ 当前N) - 衰减_整数
平均G = 取整 (平均G ÷ 当前N) - 衰减_整数
平均R = 取整 (平均R ÷ 当前N) - 衰减_整数
如果真 (平均B < 0)
平均B = 0
如果真 (平均G < 0)
平均G = 0
如果真 (平均R < 0)
平均R = 0
输出BMP [BMP起始位置 ��� (BMPY × BMP图片宽度 + BMPX) × 3 + 1] = 平均B
输出BMP [BMP起始位置 ��� (BMPY × BMP图片宽度 + BMPX) × 3 + 2] = 平均G
输出BMP [BMP起始位置 ��� (BMPY × BMP图片宽度 + BMPX) × 3 + 3] = 平均R
变量循环尾 ()
变量循环尾 ()
返回 (输出BMP)
子程序名返回值类型公开备 注
取图片像素RGB逻辑型 
参数名类 型参考可空数组备 注
BMP图片字节集
图片X整数型
图片Y整数型
图片R整数型
图片G整数型
图片B整数型
变量名类 型静态数组备 注
BMP图片宽度整数型 
BMP图片高度整数型 
BMP起始位置整数型 
BMP起始位置 = BMP图片 [3]
BMP图片宽度 = BMP图片 [19] + BMP图片 [20] × 256
BMP图片高度 = BMP图片 [23] + BMP图片 [24] × 256
如果真 (图片X < 0 图片X ≥ BMP图片宽度)
返回 ()
如果真 (图片Y < 0 图片Y ≥ BMP图片高度)
返回 ()
图片B = BMP图片 [BMP起始位置 ��� (图片Y × BMP图片宽度 + 图片X) × 3 + 1]
图片G = BMP图片 [BMP起始位置 ��� (图片Y × BMP图片宽度 + 图片X) × 3 + 2]
图片R = BMP图片 [BMP起始位置 ��� (图片Y × BMP图片宽度 + 图片X) × 3 + 3]
返回 ()
子程序名返回值类型公开备 注
置图片像素RGB逻辑型 
参数名类 型参考可空数组备 注
BMP图片字节集
图片X整数型
图片Y整数型
图片R整数型
图片G整数型
图片B整数型
变量名类 型静态数组备 注
BMP图片宽度整数型 
BMP图片高度整数型 
BMP起始位置整数型 
BMP起始位置 = BMP图片 [3]
BMP图片宽度 = BMP图片 [19] + BMP图片 [20] × 256
BMP图片高度 = BMP图片 [23] + BMP图片 [24] × 256
如果真 (图片X < 0 图片X ≥ BMP图片宽度)
返回 ()
如果真 (图片Y < 0 图片Y ≥ BMP图片高度)
返回 ()  ' 本源码来自三叶资源网(www.sanye.cx)
BMP图片 [BMP起始位置 ��� (图片Y × BMP图片宽度 + 图片X) × 3 + 1] = 图片B
BMP图片 [BMP起始位置 ��� (图片Y × BMP图片宽度 + 图片X) × 3 + 2] = 图片G
BMP图片 [BMP起始位置 ��� (图片Y × BMP图片宽度 + 图片X) × 3 + 3] = 图片R
返回 ()
子程序名返回值类型公开备 注
画图像字节集 
参数名类 型参考可空数组备 注
前图像字节集
背景图像字节集
图像位置X整数型
图像位置Y整数型
变量名类 型静态数组备 注
BMP图片宽度1整数型 
BMP图片高度1整数型 
BMP起始位置1整数型 
BMP图片宽度2整数型 
BMP图片高度2整数型 
BMP起始位置2整数型 
输出BMP字节集 
当前x整数型 
当前y整数型 
当前R整数型 
当前G整数型 
当前B整数型' 本源码来自三叶资源网(www.sanye.cx)
输出BMP = 背景图像
BMP起始位置1 = 背景图像 [3]
BMP图片宽度1 = 背景图像 [19] + 背景图像 [20] × 256
BMP图片高度1 = 背景图像 [23] + 背景图像 [24] × 256
BMP起始位置2 = 前图像 [3]
BMP图片宽度2 = 前图像 [19] + 前图像 [20] × 256
BMP图片高度2 = 前图像 [23] + 前图像 [24] × 256
如果真 (图像位置X ≥ 0 图像位置X < BMP图片宽度1)
如果真 (图像位置Y ≥ 0 图像位置Y < BMP图片高度1)
变量循环首 (0, BMP图片高度2 - 2, 1, 当前y)
变量循环首 (0, BMP图片宽度2 - 1, 1, 当前x)
当前B = 前图像 [BMP起始位置1 ��� (当前y × BMP图片宽度2 + 当前x) × 3 + 1]
当前G = 前图像 [BMP起始位置1 ��� (当前y × BMP图片宽度2 + 当前x) × 3 + 2]
当前R = 前图像 [BMP起始位置1 ��� (当前y × BMP图片宽度2 + 当前x) × 3 + 3]
置图片像素RGB (输出BMP, 当前x + 图像位置X, 当前y + 图像位置Y, 当前R, 当前G, 当前B)
变量循环尾 ()
变量循环尾 ()

返回 (输出BMP)
子程序名返回值类型公开备 注
视频_提取视频文本型 
参数名类 型参考可空数组备 注
视频路径文本型
输出路径文本型
变量名类 型静态数组备 注
ret文本型 
ret = 系统_取DOS执行结果 (集_路径 + “\ffmpeg -i ” + 视频路径 + “ -vcodec copy -an ” + 输出路径)
返回 (编码_utf8到gb2312 (ret))
子程序名返回值类型公开备 注
视频_淡入淡出文本型 
参数名类 型参考可空数组备 注
视频路径文本型
视频总帧数文本型
开始淡入起始帧数文本型
开始淡出最后帧数文本型
输出路径文本型
变量名类 型静态数组备 注
ret文本型 
开始淡入文本型 
开始淡出文本型 
如果真 (开始淡入起始帧数 ≠ “”)
开始淡入 = “fade=in:0:” + 开始


i支持库列表   支持库注释   
spec特殊功能支持库



用IDM下载视频后,会生成.ts视频文件,用此程序,可以转为MP4
调用了精易模块,请自行加入

下载地址:https://wwa.lanzoui.com/iLAtfvgc8tg



作者: qiaoyunhan    时间: 2021-10-17 17:58
谢谢谢谢谢谢谢谢
作者: w151    时间: 2021-10-17 18:29
感谢分享,支持开源。
作者: happyweeks365    时间: 2021-10-17 20:49
6666666666666
作者: qq2518    时间: 2021-10-17 22:56
感谢分享
作者: 大师兄是反派    时间: 2021-10-18 01:08
感谢分享,很给力!~
作者: 伊人独醉    时间: 2021-10-18 01:26
易语言代码实现TS视频文件转换为MP4文件
作者: 四月的雨iii    时间: 2021-10-18 03:49
红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火
作者: sjtkxy    时间: 2021-10-18 05:25
谢谢分享先收藏啦
作者: 外星星人    时间: 2021-10-18 13:41
感谢分享哦
作者: 一一一2    时间: 2021-10-18 21:36
你直接一个命令就搞定了
作者: 124149449    时间: 2021-10-19 01:04
很好很强悍,坚持下去哦~
作者: 一米阳光520    时间: 2021-10-20 08:02
给你点个赞很不错的
作者: xjshuaishuai    时间: 2022-1-9 09:19
谢谢分享!
作者: 噢噢    时间: 2022-1-28 13:17
支持开源~!感谢分享
作者: kyo9766    时间: 2024-10-29 09:14
很实用,感谢分享




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4