有什么软件可以在不重新渲染的情况下合并视频文件(具有相同格式和参数的文件)?

已知恒星播放器和以前的暴风影音有个小插件可以,但是现在恒星不好用了,有没有什么独立的小工具,电脑版手机版均可。
使用场景:手机拍摄视频或录屏,中间停止了,想把多个具有相同格式参数的视屏文件迅速合并成一个。
注意:不是用视频编辑软件重新渲染。

试试万能的 ffmpeg

1、将合并的文件夹都放在同一个文件夹下,例如:test.mp4,test2.mp4

2、新建一个video.txt文件,文件的内容是需要合并的视频名称,内容格式为

file 'test.mp4'
file 'test2.mp4'

可以用以下语句直接按文件名顺序生成video.txt文件

(for %i in (*.mp4) do @echo file '%i') > video.txt

3、执行ffmpeg的命令

ffmpeg -f concat -i video.txt -c copy concat.mp4

执行完之后就可以看到合并起来的视频concat.mp4了。

5 个赞

这个方法似乎可以。但这个如果不常用,安装不太方便。而且没有图形界面。

winrar 或类似软件.

压缩成zip格式, 注意压缩率选择为"存储".

然后改名为 原视频格式后缀.

我用potplayer 测试播放成功.

插个话:如果不是特别在意耗时、又很注重视频的声音质量的话,合并视频请尽量用格式工厂等软件“重新渲染”,俗称“二压”。
原因: 我尝试用ffmpeg等工具快速合并视频,发现音画不同步的现象。
如果你不在意声音,那2楼的方法最简单。

目前一直在用的两个基于FFmpeg的视频工具:
视频合并 FFmpeg Joiner
视频合并+裁剪(我仅用他的裁剪) JoinerSplitter GitHub - Rambalac/JoinerSplitter: Fast video joiner/splitter using ffmpeg codec copy
楼上说的音画不同步的现象确实有,但是不常见,不清楚什么原因导致的
ps.QQ影音也有合并插件

午休时间写个小 bat

  1. 把下面的代码保存为 concat.bat
@echo off
setlocal

if exist concat_temp.txt del concat_temp.txt
:loop
if "%~1"=="" goto :break
echo file '%~nx1'>>concat_temp.txt
shift
goto :loop

:break
if not exist concat_temp.txt exit /b
sort concat_temp.txt /O concat_temp.txt
set /p output="请输入合并后的文件名:"
ffmpeg -f concat -i concat_temp.txt -c copy %output%
del concat_temp.txt

echo.
echo 完成
pause
  1. 生成 concat.bat 的快捷方式,把快捷方式复制到 “发送到”文件夹下 (shell:sendto)

    (或者不用快捷方式,直接把 concat.bat 复制到 “发送到”文件夹下也行)

  2. 使用:选中多个视频文件,右键 发送到 > concat.bat 快捷方式

啊,这个是固定按文件名顺序合并,要调顺序的话,还是找个软件靠谱 :stuck_out_tongue_winking_eye:

1 个赞

QuickCut,Avidemux,Mediamux

ShanaEncoder也行:


(图中不是最新版,最新版界面会有一点点区别)

你要的是简单的视频拼接,都客混剪工厂可以试试.这个很简单.

小弟也是用这套阿…ffmpeg功能真的超多…真的好用…而且…写个批次就可以了…文件拉进…或者使用shell:sendto 又更方便…超推荐

大佬您可能有写错误…不能运行…小弟重新写了一个 各位大佬试试
一样放在…shell:sendto 里 把要转档的文件选择起来右键传送至 Join.bat就可以了

把下列复制进空白文件.txt里储存并改名为Join.bat

@echo off
setlocal enabledelayedexpansion
chcp 65001

REM 将目录设定为你的影片档案所在的文件夹
set "dir=%~dp1"

REM 建立一个新的档案来储存所有影片档案的列表
echo. > "%dir%\listfile.txt"

REM 将选取的.mp4档案的名称写入到listfile.txt
for %%a in (%*) do (
    echo file '%%~nxa' >> "%dir%\listfile.txt"
)

REM 使用ffmpeg来合并影片
ffmpeg -f concat -safe 0 -i "%dir%\listfile.txt" -c copy "%dir%\output.mp4"

REM 删除listfile.txt
del "%dir%\listfile.txt"

endlocal

这个原理是什么? :rofl:

无损剪切或合并视频, 有界面。

2 个赞

如果剪切点都在关键帧(keyframe)上一般不会出问题
实测还有些视频本身的索引就有问题
用avidemux copy模式剪的话偶尔不能保存
用losslesscut默认模式目前还没有不能存的

猜测主要原因是视频格式的帧比较复杂,分为关键帧Inter frame(I-Frame ,有完整的单帧图片数据),Predicted Frame(P-Frame根据前面时间的帧预测出来的帧),Bi-Frame(B-Frame根据前后的帧预测)。在两个非关键帧(I-Frame)之间的点做剪切往往容易出问题。要看编辑软件作者对视频格式和处理的理解功力了。看到losslesscut的作者在实验把非关键帧的一部分重编码,我用过一次碰巧效果不太好。。。

声音压缩比视频简单,因为文件本身就不大,不追求极限压缩,用的貌似是叠加的思路?没有P帧和B帧这些难搞的东西

所以如果不需要精确剪切,那么最佳操作还是永远在关键帧上下剪刀,就不需要费时重压了,如果需要精确的画面,那么可以先用losslesscut试试,如果不满足要求的话再重新压一下。

avidemux用鼠标拖动默认就是永远停留在关键帧上,关键帧步进和单帧步进分别有不同的按钮,而且当前帧的类型会有清晰的指示
而losslesscut则是默认单帧需要用按钮或快捷键对齐关键帧,也不提示帧类型,所以手感就差那么点,但是快捷键自定义很方便,其他功能也比较丰富,容错性似乎更高

1 个赞

流媒体文件,不用读取整个文件就可以从中取出一段来顺序播放,rar的非solid模式貌似也和流媒体差不多,可以边解压边用。

应该是十几二十年前的一种软件设计哲学,就是让部分加载的文件也可以立即被使用,不再需要等加载整个文件之后再操作。

像图片可以在loding时就显示模糊的轮廓或者已经加载的那部分,媒体文件可以实时播放已经加载的帧,winrar可以先解包已经有的卷。

1 个赞