开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3831|回复: 14
收起左侧

[易语言纯源码] 易语言代码实现TS视频文件转换为MP4文件

[复制链接]
发表于 2021-10-17 17:24:22 | 显示全部楼层 |阅读模式   辽宁省本溪市
分享源码
界面截图:
是否带模块: 调用了模块
备注说明: -
主要代码:
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
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


评分

参与人数 3好评 +3 精币 +5 收起 理由
被封禁言 + 1 支持开源~!感谢分享
易语言资源网 + 1 + 3 支持开源~!感谢分享
Dhs过客 + 1 + 2 感谢发布原创作品,精易因你更精彩!

查看全部评分


签到天数: 3 天

发表于 2022-1-28 13:17:05 | 显示全部楼层   山东省青岛市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)

签到天数: 20 天

发表于 2022-1-9 09:19:26 | 显示全部楼层   新疆维吾尔自治区昌吉回族自治州
谢谢分享!
回复 支持 反对

使用道具 举报

结帖率:89% (34/38)

签到天数: 1 天

发表于 2021-10-20 08:02:08 | 显示全部楼层   广东省惠州市
给你点个赞很不错的
回复 支持 反对

使用道具 举报

发表于 2021-10-19 01:04:43 | 显示全部楼层   上海市上海市
很好很强悍,坚持下去哦~
回复 支持 反对

使用道具 举报

结帖率:93% (115/123)

签到天数: 2 天

发表于 2021-10-18 21:36:26 | 显示全部楼层   吉林省长春市
你直接一个命令就搞定了
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)

签到天数: 20 天

发表于 2021-10-18 13:41:35 | 显示全部楼层   新疆维吾尔自治区昌吉回族自治州
感谢分享哦
回复 支持 反对

使用道具 举报

签到天数: 19 天

发表于 2021-10-18 05:25:48 | 显示全部楼层   山东省威海市
谢谢分享先收藏啦
回复 支持 反对

使用道具 举报

发表于 2021-10-18 03:49:17 | 显示全部楼层   湖南省怀化市
红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火红红火火
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 18 天

发表于 2021-10-18 01:26:09 | 显示全部楼层   四川省泸州市
易语言代码实现TS视频文件转换为MP4文件
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表