Video 如何通过avconv合并视频?
我的文件夹里有几个块Video 如何通过avconv合并视频?,video,avconv,Video,Avconv,我的文件夹里有几个块 0001.mp4 0002.mp4 0003.mp4 ... 0112.mp4 我想把它们合并成full.mp4 我尝试使用: avconv -f concat -i <(printf "file '%s'\n" /root/chunk/*.mp4) -y \ -c copy /root/test/full.mp4 在上一版本中,只有一个输入文件被捕获到输出 如何将文件夹中的所有块合并到完整视频中 我不想使用ffmpeg或其他。仅限Avconv avconv -i
0001.mp4
0002.mp4
0003.mp4
...
0112.mp4
我想把它们合并成full.mp4
我尝试使用:
avconv -f concat -i <(printf "file '%s'\n" /root/chunk/*.mp4) -y \
-c copy /root/test/full.mp4
在上一版本中,只有一个输入文件被捕获到输出
如何将文件夹中的所有块合并到完整视频中
我不想使用ffmpeg或其他。仅限Avconv
avconv -i concat:file1.mp4\|file2.mp4 -c copy output.mp4
我不知道是否适用于任何容器的类型(适用于我的
AVI
)。mp4
文件不能简单地连接,正如“已接受”的答案所示
如果您单独运行它,您将得到output.mp4
中只有file1.mp4
的内容
也就是说,只要您将原始文件正确地分割为mpeg流,您在原始问题中希望做的事情实际上是可以完成的
以下命令将在文件[1-3].ts中将input.mp4
拆分为3x 60秒的段:
avconv -ss 0 -i input.mp4 -t 60 -vcodec libx264 -acodec aac \
-bsf:v h264_mp4toannexb -f mpegts -strict experimental -y file1.ts
avconv -ss 0 -i input.mp4 -t 60 -vcodec libx264 -acodec aac \
-bsf:v h264_mp4toannexb -f mpegts -strict experimental -y file2.ts
avconv -ss 0 -i input.mp4 -t 60 -vcodec libx264 -acodec aac \
-bsf:v h264_mp4toannexb -f mpegts -strict experimental -y file3.ts
然后,您可以按照另一个答案的建议将它们重新组合在一起:
avconv -i concat:"file1.ts|file2.ts|file3.ts" -c copy \
-bsf:a aac_adtstoasc -y full.mp4
我使用此过程创建了一个可伸缩的并行转码器,如所述:
cat *.avi > out_tmp.avi
avconv -i out_tmp.avi -c copy output.avi
再一次:仅适用于未压缩的*.avi文件。此操作有效
avconv -i 1.mp4 1.mpeg
avconv -i 2.mp4 2.mpeg
avconv -i 3.mp4 3.mpeg
cat 1.mpeg 2.mpeg 3.mpeg | avconv -f mpeg -i - -vcodec mpeg4 -strict experimental output.mp4
如果您只有avconv,以上功能就可以使用-但是ffmpeg添加了一些功能。。。引述:
“以上avconv步骤会执行不必要的额外有损编码步骤,这一步骤非常缓慢,并且会降低成本
输出的质量。我建议使用concat demuxer(其他信息)
或者改为concat过滤器,但avconv缺少ffmpeg中ffmpeg中提供的功能
SEE https://trac.ffmpeg.org/wiki/Concatenate
如果您使用的系统支持命名管道,则可以使用这些管道来避免创建中间文件-这会将stderr(ffmpeg将所有写入的数据发送到)发送到/dev/null,以避免命令行混乱:
mkfifo temp1 temp2
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp1 2> /dev/null
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts temp2 2> /dev/null
ffmpeg -f mpegts -i "concat:temp1|temp2" -c copy -bsf:a aac_adtstoasc output.mp4
对于mp4,我找到的唯一可行的解决方案是使用gpac包中的MP4Box
#!/bin/bash
filesList=""
for file in $(ls *.mp4|sort -n);do
filesList="$filesList -cat $file"
done
MP4Box $filesList -new merged_files_$(date +%Y%m%d_%H%M%S).mp4
或者命令是
MP4Box -cat file1.mp4 -cat file2.mp4 -new mergedFile.mp4
使用mencoder和avconv,我无法使它工作:-(我使用gtk工具实现了这一点)。它作为一个软件包在大多数Linux下可用,也适用于Windows和Mac。
我只是打开了第一个文件,然后按顺序添加了下一个文件。
最后,我使用音频和视频拷贝和格式mp4保存了连接的视频
它工作得很好!这一款适合我:
avconv -i "concat:001.mp4|002.mp4|003.mp4" -c copy full.mp4
只需将所有文件合并成一个mp4,而无需重新编码。我正在使用
ffmpeg
命令来完成此操作。以下是示例:
ffmpeg -i concat:/dev/null|file1.ts|file2.ts -c copy -bsf:a aac_adtstoasc -y output.mp4
看看这个github项目,我发现了一个名为Avdshare Video Converter 7的工具,它成功地连接了我的视频。它甚至可以将它们转换成我想要的任何格式 我尝试了这一页上的每一个解决方案…他们都给了我你在阅读我的答案时可能遇到的相同错误。“没有找到协议”会让你不高兴吗?他们可能这也是适合你的程序 我正在windows上运行它 在程序中连接两个视频的步骤如下: 将视频拖放到程序中 单击“合并” 选择一个“保存配置文件”,该文件指定您可以使用的每个参数 想要调整吗 单击保存按钮
在没有得到错误消息的答案后,我得到了所有这些类似的答案:
~ avconv -i 'concat:' -c copy test.mp4
avconv version 12.3, Copyright (c) 2000-2018 the Libav developers
built on Jan 22 2019 21:47:11 with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
concat:: Protocol not found
我翻阅了一些谷歌搜索结果,进入bug追踪器,发现了以下内容:
cat *.VOB | avconv -i - -c copy test.mp4
对我来说不起作用…必须使用mencoder…mencoder-oac pcm-ovc copy-o merged_file.mp4
ls*.mp4
mp4容器不能以这种方式连接。mp4和matroska不能连接。您需要先将其重新编码到一个可连接的或可随机查看的容器中,如MPEG-TS或NUT。接受的答案对我来说不起作用相反,我使用了MP4Box
命令(来自gpac包),如下所示:MP4Box video1.mp4-cat video2.mp4-cat video3.mp4[…]-out video full.mp4
no,不起作用。最终结果是视频与第一个视频一样长,可查看的内容正好是第一个视频的内容。其他视频似乎被忽略。此解决方案对我不起作用。如果我在命令行中的任何位置使用单词concat
,我总是会出现类似请求的输出格式“concat:test.mp3”不是合适的输出格式
。有什么建议吗?你有什么版本的avconv?我与avconv版本12有同样的问题。版本11不起作用。当涉及到webm时,我在这里提出了一个相关的错误:存在链接损坏问题,since您已经从dropbox中删除了avconv.txt文件。我将从问题中删除它。我使用了avconv-I“concat:`ls*.mp4 | tr'\r\n'\\\\\\''''''-c copy“combined.mp4”在windows上。对于linux,我认为您应该只使用\n,而不是\r\n显示许多错误(在最后一步),但唯一的答案是我合并了一个文件,所以+1!这几乎对我有效,但质量有所下降…(图像是像素化的。)有什么办法解决这个问题吗?我在debian jessie上,这是我唯一可以运行的答案(主要是因为缺少软件包)。但结果很奇怪,实际流比VLC显示的流短,在那里搜索时,它只会重新启动播放。接收当前目录中所有mp4文件的较短命令行是:MP4Box$(printf--“-cat%s”*.mp4)-new mergedFi
~ avconv -i 'concat:' -c copy test.mp4
avconv version 12.3, Copyright (c) 2000-2018 the Libav developers
built on Jan 22 2019 21:47:11 with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
concat:: Protocol not found
cat *.VOB | avconv -i - -c copy test.mp4