
1 watara OP 我有一个思路,不过不知道怎实现。。。。就是用循环,比如要合并001、002、003、004、005这4个文件,第一次先合并001和002,产生一个out.ts,第二次再让out.ts和003合并,再产生一个out.ts,如此循环,我不是程序猿,不知道这思路对吗。。。。 |
2 Lelouchcr 2014 年 11 月 9 日 我也干过这事情,用来合并hls流,差不多500+个。其实就是你上面的思路,只不过concat部分用代码写个循环就行啦。 比如 python 写 cmd = "ffmpeg -i \"concat:" for i in xrange(1): cmd += 'file%03d'%3 cmd += '... out.mp4' print cmd |
3 Lelouchcr 2014 年 11 月 9 日 代码写错了,改不了。。。再发次 cmd = "ffmpeg -i \"concat:" for i in xrange(1): cmd += 'file%03d'%i cmd += '... out.mp4' print cmd |
4 ysjdx 2014 年 11 月 9 日 ffmpeg -i `for i in {1..1000};do echo -e "file$i.ts|\c"` ;done `" -acodec copy -vcodec copy -absf aac_adtstoasc out.mp4 |
5 seki 2014 年 11 月 9 日 -i 还支持文件列表,剩下的事情就是怎么生成文件列表了 |
6 old9 2014 年 11 月 9 日 via Android ffmpeg -f concat -i filelist.txt -c copy...... filelist 格式类似 file 'path/to/file001.ts' file 'path/to/file002.ts' ... 生成这样的 filelist.txt 应该不难吧 另外,Windows 下也有 ffmpeg |
7 em70 2014 年 11 月 9 日 ts合并不需要ffempg,直接copy拼接就可以了 |
8 SoloCompany 2014 年 11 月 9 日 * 是 shell 解释的,你不能加 "" 如果一定需要要加,可以用 “`echo *`" 代替 |
9 sycsycsyc378 2014 年 11 月 9 日 MPEG2 的还是 h264?前者直接合并播放会出错吧。 |
10 watara OP @seki @old9 感谢,我已经解决了,用的下面的命令,某位大神教的 ls * | perl -nale 'chomp;push @a, $_;END{printf "ffmpeg -i \"concat:%s\" -acodec copy -vcodec copy -absf aac_adtstoasc out.mp4\n", join("|",@a)}' @sycsycsyc378 我的是h264的,接触ffmpeg不久,很多都是现找现用的,原来里面有这么多门道呢,谢谢哈 @em70 嗯嗯,感谢,涨姿势了 |
11 watara OP 谢谢楼上各位,问题已经解决了,我得继续学习学习了。 |