如何使用不正确的媒体信息创建视频?
How to create video with incorrect mediainfo?
我需要用不正确的媒体信息创建一些正确的视频进行测试。例如,比特率或帧率减半,分辨率为 1920x1000 而不是 1920x1080。如何编辑媒体信息?
我试过了:
- VLC 媒体播放器 - 它只允许编辑 "author"、"year" 等
- OpenShot Video Editor - 它允许创建任何分辨率的视频,但我无法创建 mediainfo 高度 = 1000 的 1920x1080 视频
- ffmpeg - 它允许使用 -metadata 键或从文件设置媒体信息,但它不适用于分辨率
- HexEditor - 我试图找到二进制格式的“1080”并替换为“1000”,但没有帮助
还有其他选择吗?
有两种类型的元数据,任意和非任意。
作者、年份等任意元数据都是可编辑的,因为它们会被解码引擎忽略。其他元数据(例如转数或比特率)是静态的,由媒体本身定义。这些是只读的,只能通过更改底层视频流来更改。即转码。
如果您的视频是 h.264,理论上您可以解析 SPS,修改分辨率(分辨率以宏块减去填充的 exp-golomb 编码,它不编码为像素)。该值很难在十六进制编辑器中找到,因为它是可变长度的,而不是字节对齐的。您可以阅读 iso 14496-10 了解更多信息。但这样做会使视频看起来已损坏并且可能无法解码。
如果您的视频不是 h264,则需要研究该编解码器,每个编解码器都不同。
我需要用不正确的媒体信息创建一些正确的视频进行测试。例如,比特率或帧率减半,分辨率为 1920x1000 而不是 1920x1080。如何编辑媒体信息?
我试过了:
- VLC 媒体播放器 - 它只允许编辑 "author"、"year" 等
- OpenShot Video Editor - 它允许创建任何分辨率的视频,但我无法创建 mediainfo 高度 = 1000 的 1920x1080 视频
- ffmpeg - 它允许使用 -metadata 键或从文件设置媒体信息,但它不适用于分辨率
- HexEditor - 我试图找到二进制格式的“1080”并替换为“1000”,但没有帮助
还有其他选择吗?
有两种类型的元数据,任意和非任意。
作者、年份等任意元数据都是可编辑的,因为它们会被解码引擎忽略。其他元数据(例如转数或比特率)是静态的,由媒体本身定义。这些是只读的,只能通过更改底层视频流来更改。即转码。
如果您的视频是 h.264,理论上您可以解析 SPS,修改分辨率(分辨率以宏块减去填充的 exp-golomb 编码,它不编码为像素)。该值很难在十六进制编辑器中找到,因为它是可变长度的,而不是字节对齐的。您可以阅读 iso 14496-10 了解更多信息。但这样做会使视频看起来已损坏并且可能无法解码。
如果您的视频不是 h264,则需要研究该编解码器,每个编解码器都不同。