Board logo

标题: [文件操作] [已解决]请问下 bat 中如何多线程调用 ffmpeg? [打印本页]

作者: loli    时间: 2020-11-2 11:24     标题: [已解决]请问下 bat 中如何多线程调用 ffmpeg?

本帖最后由 loli 于 2020-11-2 14:15 编辑

脚本是用于批量ts转mp4
具体代码:
  1. @codepage=65001
  2. for %%a in ("*.ts") do ffmpeg -i "%%a" -threads 4 -f mp4 -codec copy "%%~na.mp4
复制代码
原代码没有 -threads 4 这个选项
我是搜索后自己添加的,说是代表4线程
但是实测没用,还是一个线程跑完再继续下一个线程

ffmpeg 显示命令行是这样
  1. ffmpeg -i "1.ts" -threads 4 -f mp4 -codec copy "1.mp4
复制代码
我想达到的效果是这样,同时运行4个ffmpeg线程
  1. ffmpeg -i "1.ts"  -f mp4 -codec copy "1.mp4
  2. ffmpeg -i "2.ts" -f mp4 -codec copy "2.mp4
  3. ffmpeg -i "3.ts"  -f mp4 -codec copy "3.mp4
  4. ffmpeg -i "4.ts" -f mp4 -codec copy "4.mp4
复制代码
依然需要等待其中一个完成再继续下一个,就是不能重复处理已经完成的任务。

另外bat不能实现的AHK能否实现?我就稍微会这两一点。
作者: 老刘1号    时间: 2020-11-2 12:33

那个threads是ffmpeg的内部多线程参数
批处理不支持多线程,你这个需求只能用多进程模拟一下
每个开头加个【start "" 】试试(保留空格和引号
作者: loli    时间: 2020-11-2 13:01

那个threads是ffmpeg的内部多线程参数
批处理不支持多线程,你这个需求只能用多进程模拟一下
每个开头加个 ...
老刘1号 发表于 2020-11-2 12:33


   
我在想不限制4线程有没有办法
就是遍历所有.ts文件
有几个就开几个ffmpeg线程
我有用过一个gui软件就是这样处理的 Medlexo Ultimate
但是他那个命令行转换出来有问题。
用上面所说才是正常的。

不过刚刚测试了下好像一个线程一个线程的也不慢,差不多和复制没太大差别,估计是参数copy没转码的原因吧。
好像也没啥必要多线程了
还是谢谢了吧
作者: 老刘1号    时间: 2020-11-2 18:35

回复 3# loli


    是的,转封装不转码很快的
作者: ericsia    时间: 2022-3-4 13:35

回复 3# loli


是你视频命名错了吧? 我看见你用了 "-f mp4" 应该不是 .ts 是 .mp4
有样本吗?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2