我尝试使用FFmpeg连接四个MP4视频文件。 (最新版本)这四个mp4视频不同于一般的mp4视频,并且有特定的编解码器,我在K-Lite Mega Codec Pack 13.1.0的帮助下在Windows Media Player中播放。
MediaInfo的一个文件(所有四个文件具有相同的编解码器)的编解码信息:
General
Complete name : Testing - 1.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom (mp41/avc1)
File size : 59.4 MiB
Duration : 3 min 47 s
Overall bit rate mode : Variable
Overall bit rate : 2 196 kb/s
Writing application : vlc 2.2.4 stream output
Comment : QuickTime 6.0 or greater
Video
ID : 2
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L3
Format settings, CABAC : Yes
Format settings, ReFrames : 3 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 3 min 47 s
Bit rate mode : Constant
Bit rate : 2 000 kb/s
Width : 720 pixels
Height : 576 pixels
Display aspect ratio : 5:4
Frame rate mode : Constant
Frame rate : 25.000 FPS
Standard : PAL
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.193
Stream size : 54.1 MiB (91%)
Audio
ID : 1
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : 40
Duration : 3 min 47 s
Source duration : 3 min 46 s
Bit rate mode : Variable
Bit rate : 192 kb/s
Maximum bit rate : 294 kb/s
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 spf)
Compression mode : Lossy
Stream size : 5.13 MiB (9%)
Source stream size : 5.13 MiB (9%)
要连接的MP4视频文件是"测试 - 1.mp4","测试 - 2.mp4","测试 - 3.mp4"和"测试 - 4.mp4"。
我需要使用FFmpeg的连接方法将这四个MP4文件连接成一个MP4文件。
首次尝试(使用Concat Demuxer):
FFmpeg -f concat -safe 0 -i "F:\New Text Document.txt" -c copy E:\Testing.mp4
文件连接成一个MP4文件,其中包含来自FFmpeg的多个错误和警告。
输出流中的非单调DTS
SPS NALU丢失或无效,结果流可能无法播放
使用Windows Media Player在连接文件上方播放时,会出现错误
网络太忙,无法以原始质量播放文件
但该文件实际上位于本地硬盘中。
寻求选项不起作用(即使在VLC媒体播放器中)和Windows资源管理器显示错误的持续时间,如3小时54分钟,应该是15分05秒。
第二次尝试(使用Concat Demuxer):
FFmpeg -f concat -safe 0 -i "F:\New Text Document.txt" -vcodec copy -acodec copy -crf 0 E:\Testing.mp4
然后文件连接成功并在Windows Media Player和VLC媒体播放器中播放没有任何错误。这里唯一的问题是文件非常大,大小约为1.2GB,因为Constant Rate Factor设置为0以停止WMP网络相关错误。
注意:连接之前(四个源文件)在两个播放器中播放都没有任何错误,但它们的大小也适中。正如MediaInfo所示,"测试 - 1.mp4"是59.4 MB,而不是巨大的尺寸。
当我加入那些使用EasiestSoft Video / Audio Joiner 4.7的文件时,文件在播放时不会产生任何错误(我的意思是一切正常,但我需要一个像FFmpeg这样的命令行工具批量处理多个视频),但是在5.0版本中,它似乎产生了这个网络相关的错误(这可能是程序错误,我认为它重新编码,即使我检查不要重新编码复选框)。
使用FFmpeg可以使这个连续的MP4文件更小(大约四个源文件的总大小),并使其能够在两个播放器中播放,而不会出现任何网络相关问题或不正确的持续时间问题。