重新复用/编码/转换 MPG 为 MP4

重新复用/编码/转换 MPG 为 MP4

我知道不可能编辑 MPG 文件的元数据(即创建日期),所以我正在寻找另一种方法将我的 MPG“升级”为较新的文件格式(最好是在 Windows 和 iOS 上都能使用的格式)。

我应该怎么做才能实现这个目标?将我的 MPG 视频重新混合/编码/转换为 MP4 或 MOV,在重新混合/编码/转换文件时应该使用哪些设置?哪种操作会产生最佳效果;尽可能接近原始 MPG 视频?

这是我的一个 MPG 文件的 mediainfo 规范:

General
Complete name : E:\Users\Owner\Desktop\test\MOV03521.MPG
Format : MPEG-PS
File size : 25.1 MiB
Duration : 20s 124ms
Overall bit rate mode : Variable
Overall bit rate : 10.5 Mbps

Video
ID : 224 (0xE0)
Format : MPEG Video
Format version : Version 1
Format settings, BVOP : No
Format settings, Matrix : Default
Format settings, GOP : N=1
Duration : 20s 100ms
Bit rate mode : Variable
Bit rate : 10.2 Mbps
Width : 640 pixels
Height : 480 pixels
Display aspect ratio : 4:3
Frame rate : 30.000 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Compression mode : Lossy
Bits/(Pixel*Frame) : 1.105
Time code of first frame : 00:00:00:00
Time code source : Group of pictures header
GOP, Open/Closed : Closed
Stream size : 24.4 MiB (97%)

Audio
ID : 192 (0xC0)
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 2
Duration : 20s 124ms
Bit rate mode : Constant
Bit rate : 64.0 Kbps
Channel(s) : 1 channel
Sampling rate : 32.0 KHz
Compression mode : Lossy
Stream size : 157 KiB (1%) 

答案1

创建日期(与许多其他元数据字段一样)是您可以为 MP4/MOV 和 MKV 容器(以及其他几个容器)设置的属性,但不能为 MPEG 程序流或传输流设置。事实上,视频元数据没有标准,就像照片没有 EXIF 一样。当他们设计 MPEG 容器时,他们可能只是还没有考虑过这个应用程序(还没有)。

你必须意识到 MPEG-1非常太旧了——他们从我出生时就开始开发它了——你最好将视频转换为更新、压缩效率更高的编解码器,如 H.264。你的 10 MBit/s MPEG-1 视频最终在 1 MBit/s H.264 下看起来可能一样好,甚至更低。

因此,如果真正的问题是视频需要在某种文件管理器中以正确的顺序显示,并且你无法更改文件管理器或使用元数据平台,您需要重新混合或重新编码视频。

重新混合不会影响视频/音频比特流,从而保持文件大小和质量不变。ffmpeg,您可以尝试以下方法:

ffmpeg -i input.mpeg -c copy output.mkv

这可能有效,也可能无效。我试过,但理论上 Matroska 支持 MPEG-1 视频。不过 Matroska 本身并不支持 Windows 或 iOS。

因此,您可以在 MP4 容器中将视频和音频重新编码为 H.264/AAC:

ffmpeg -i input.mpeg -c:v libx264 -preset slow -crf 18 -c:a aac -strict experimental -b:a 128k output.mp4

这里,CRF 选项设置质量。18 表示非常好。23 是默认值。越低表示越好,因此,如果您想保持质量,您甚至可能希望低于 18。CRF 为 ±6 会导致文件大小减少一半/两倍。H.264 编码指南非常有用。请注意,生成的文件可能比输入文件小,但看起来仍然一样好。这是因为编解码器效率更高。我建议您改变 CRF,直到找到一个值,让您无法再感觉到原始文件和重新编码文件之间的差异。

MP4 中的 H.264/AAC 在(较新的)Windows 和 iOS 上受支持。较旧的 Windows 版本(包括 Windows 7 IIRC)除非安装编解码器包,否则无法播放它。为了在较旧的设备上兼容 iOS,您可能必须设置-profile:v baseline为选项。

转换为 MKV 或 MP4 后,可以设置创建日期等元数据。

答案2

我成功使用exiftool为此。这是 MPG 文件的元数据更正:

C:\>exiftool.exe -s test.mp4

ExifToolVersion                 : 10.01
FileName                        : test.mp4
Directory                       : .
FileSize                        : 14 MB
FileModifyDate                  : 2015:09:04 22:33:16+05:00
FileAccessDate                  : 2015:09:05 14:10:08+05:00
FileCreateDate                  : 2015:09:05 14:10:08+05:00
FilePermissions                 : rw-rw-rw-
FileType                        : MP4
FileTypeExtension               : mp4
MIMEType                        : video/mp4
MajorBrand                      : MP4  Base Media v1 [IS0 14496-12:2003]
MinorVersion                    : 0.2.0
CompatibleBrands                : isom, iso2, avc1, mp41
MovieHeaderVersion              : 0
CreateDate                      : 0000:00:00 00:00:00
ModifyDate                      : 0000:00:00 00:00:00
TimeScale                       : 1000
Duration                        : 0:01:22
-- snip --
TrackHeaderVersion              : 0
TrackCreateDate                 : 0000:00:00 00:00:00
TrackModifyDate                 : 0000:00:00 00:00:00
-- snip --
MediaHeaderVersion              : 0
MediaCreateDate                 : 0000:00:00 00:00:00
MediaModifyDate                 : 0000:00:00 00:00:00
-- snip --

我用这个来改变全部日期:

C:\>exiftool.exe ^
-Quicktime:CreateDate="2007-01-02 03:04:05" ^
-Quicktime:ModifyDate="2007-01-02 03:04:05" ^
     -TrackCreateDate="2007-01-02 03:04:05" ^
     -TrackModifyDate="2007-01-02 03:04:05" ^
     -MediaCreateDate="2007-01-02 03:04:05" ^
     -MediaModifyDate="2007-01-02 03:04:05" ^
test.mp4

这是元数据更正:

FileModifyDate                  : 2015:09:05 14:20:54+05:00
FileAccessDate                  : 2015:09:05 14:20:54+05:00
FileCreateDate                  : 2015:09:05 14:10:08+05:00
-- snip --
CreateDate                      : 2007:01:02 03:04:05
ModifyDate                      : 2007:01:02 03:04:05
-- snip --
TrackCreateDate                 : 2007:01:02 03:04:05
TrackModifyDate                 : 2007:01:02 03:04:05
-- snip --
MediaCreateDate                 : 2007:01:02 03:04:05
MediaModifyDate                 : 2007:01:02 03:04:05
-- snip --

我建议您首先查看已知 MPG 文件的元数据,并记下哪个日期是哪个日期。在进行实验之前备份您的文件(exiftool 默认会创建备份)。在我的测试中,原始文件和更新文件的大小完全相同。

相关内容