Board logo

标题: [文件操作] win 下使用 ffmpeg 大批量合并 ts 文件,求助 [打印本页]

作者: LKJHGFDSA    时间: 2018-7-12 06:26     标题: win 下使用 ffmpeg 大批量合并 ts 文件,求助

本帖最后由 LKJHGFDSA 于 2018-7-12 07:04 编辑

我需要把一个目录下的大量文件(名字非常规律的,都是 1.ts,2.ts,3.ts.......有一千多个文件)合并成一个文件,
我用的ffmpeg来合并的,用了十个文件做测试,发现很流畅,完全符合要求,当时现在的问题在于。。。。我怎么批量导入这1000多个文件呢。。。我做测试的时候用的下面的命令:
    ffmpeg -i 1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts 1.ts
    ffmpeg -i 2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts 2.ts
    ffmpeg -i 3.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts 3.ts
    .........
    ffmpeg -i "concat:1.ts|2.ts|3.ts|........" -c copy -bsf:a aac_adtstoasc -movflags +faststart output.mp4
我试着使用 * 通配符,不过提示找不到*.ts。。。。。加前缀也是不行,用绝对地址也不行。。。我估计是不是得用正则啥的了?。。。所以求助下各位了,谢谢
作者: 523066680    时间: 2018-7-12 08:49

本帖最后由 523066680 于 2018-7-12 09:18 编辑

我印象中 ts 文件是可以直接合并,不需要 ffmpeg 的

直接 copy /b *.ts output.ts ,但是上千个文件,名字从1开始,没有补0,可能顺序会出错。

可以批量重命名,在文件名编号前补0来确保顺序正确。

——
补充
参考:https://www.therandombits.com/135/how-to-combine-merge-mp4-videos-with-ffmpeg/

你可以用脚本列出文件名单保存到 files.txt 中,格式类似( "file "前缀是必须的):
  1. file f1.mp4
  2. file f2.mp4
  3. file f3.mp4
复制代码
然后 ffmpeg -f concat -i files.txt ......
作者: LKJHGFDSA    时间: 2018-7-12 10:17

回复 2# 523066680


    你说的这几种方式我都试过 合并后有问题
作者: 523066680    时间: 2018-7-12 10:32

按零请高明(逃
作者: 狄钦dQ    时间: 2018-7-14 00:08

ts合并用copy简单快捷,顺序问题用补零解决。
适用于上千的1.ts,2.ts,3.ts等文件,补零为0001.ts,0002.ts,0003.ts,再按正常顺序合并即可。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a n=10000
  4. set "fpath=D:\TsFolder"
  5. dir %fpath% /A-D /B>list.txt
  6. for /f "delims=" %%i in (list.txt) do (
  7. set /a num=%%~ni
  8. set /a fname=!num!+!n!
  9. ren "%fpath%\%%i" "!fname:~1!.ts"
  10. )
  11. copy /b "%fpath%\*.ts" output.ts
  12. pause
复制代码

作者: Batcher    时间: 2018-7-14 14:21

回复 3# LKJHGFDSA


    合并后有什么问题?
作者: LKJHGFDSA    时间: 2018-7-15 08:27

回复 6# Batcher


    有部分视频不能正常播放




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