将 mp4 视频转换为 xbox 360 可以播放的格式

将 mp4 视频转换为 xbox 360 可以播放的格式

这是我的 Xbox 360 拒绝播放的视频文件:

$ MP4Box -info video.mp4
* Movie Info *
        Timescale 90000 - Duration 02:18:33.365
        Fragmented File no - 2 track(s)
        File Brand mp42 - version 0
        Created: GMT Sat Jul 21 07:08:55 2012

File has root IOD (9 bytes)
Scene PL 0xff - Graphics PL 0xff - OD PL 0xff
Visual PL: ISO Reserved Profile (0x7f)
Audio PL: High Quality Audio Profile @ Level 2 (0x0f)
No streams included in root OD

iTunes Info:
        Encoder Software: HandBrake 0.9.6 2012022800

Track # 1 Info - TrackID 1 - TimeScale 90000 - Duration 02:18:33.235
Media Info: Language "Undetermined" - Type "vide:avc1" - 199318 samples
Visual Track layout: x=0 y=0 width=1280 height=688
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 1280 x 688
        AVC Info: 1 SPS - 1 PPS - Profile High @ Level 4.1
        NAL Unit length bits: 32
Self-synchronized

Track # 2 Info - TrackID 2 - TimeScale 48000 - Duration 02:18:33.365
Media Info: Language "English" - Type "soun:mp4a" - 389689 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio MPEG-4 Audio AAC LC - 6 Channel(s) - SampleRate 48000
Synchronized on stream 1

$ avconv -i video.mp4
avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav     developers
  built on Nov  6 2012 16:51:33 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2012-07-21 07:08:55
    encoder         : HandBrake 0.9.6 2012022800
  Duration: 02:18:33.36, start: 0.000000, bitrate: 2299 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 1280x688, 1973 kb/s, 23.98 fps, 90k tbr, 90k tbn, 180k tbc
    Metadata:
      creation_time   : 2012-07-21 07:08:55
    Stream #0.1(eng): Audio: aac, 48000 Hz, 5.1, s16, 319 kb/s
    Metadata:
      creation_time   : 2012-07-21 07:08:55
At least one output file must be specified

我应该使用什么工具(例如 ffmpeg 或 mencoder)以及什么神奇的命令行咒语将此文件转码为 Xbox 360 可以播放的格式?我希望转码过程尽可能保留良好的视频质量。

在 slhck 的帮助下,我成功创建了一个新的 mp4 文件,并将音频改为双声道。但是 Xbox 360 仍然因为某种原因拒绝播放它。以下是 MP4Box 和 ffmpeg 对新文件的评论:

$ MP4Box -info final.mp4
* Movie Info *
        Timescale 1000 - Duration 02:18:33.343
        Fragmented File no - 2 track(s)
        File Brand isom - version 512
        Created: GMT Sat Jul 21 07:08:55 2012

File has root IOD (9 bytes)
Scene PL 0xff - Graphics PL 0xff - OD PL 0xff
Visual PL: Not part of MPEG-4 Visual profiles (0xfe)
Audio PL: Not part of MPEG-4 audio profiles (0xfe)
No streams included in root OD

iTunes Info:
        Encoder Software: Lavf53.21.0

Track # 1 Info - TrackID 1 - TimeScale 90000 - Duration 02:18:33.193
Media Info: Language "Undetermined" - Type "vide:avc1" - 199318 samples
Visual Track layout: x=0 y=0 width=1280 height=688
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 1280 x 688
        AVC Info: 1 SPS - 1 PPS - Profile High @ Level 4.1
        NAL Unit length bits: 32
Self-synchronized

Track # 2 Info - TrackID 2 - TimeScale 48000 - Duration 02:18:33.343
Media Info: Language "Undetermined" - Type "soun:mp4a" - 389688 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 48000
Synchronized on stream 1
Alternate Group ID 1

$ avconv -i final.mp4   
avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
  built on Nov  6 2012 16:51:33 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'final.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 2012-07-21 07:08:55
    encoder         : Lavf53.21.0
  Duration: 02:18:33.34, start: 0.000000, bitrate: 2161 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 1280x688, 1973 kb/s, 23.98 fps, 90k     tbr, 90k tbn, 180k tbc
    Metadata:
      creation_time   : 2012-07-21 07:08:55
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 180 kb/s
    Metadata:
      creation_time   : 2012-07-21 07:08:55
At least one output file must be specified

答案1

根据Xbox 工程视频播放常见问题解答,H.264 的要求是:

  • 视频配置文件:基线配置文件、主要配置文件和高级配置文件(最高可达 4.1 级)。
  • 视频比特率:10 Mbps,分辨率为 1920 x 1080,帧率为 30fps。有关详细信息,请参阅问题 11。
  • 音频配置文件:2 通道 AAC 低复杂度 (LC)
  • 音频最大比特率:无限制。

现在,作为通用命令行,这应该可以工作:

ffmpeg -i input.mp4 -c:v libx264 -profile:v high -crf 23 -c:a libfaac -q:a 100 output.mp4

更改-crf-q:a参数以改变质量。CRF 越低表示质量越好。23 是默认值,但请在 18 到 28 之间选择一个值,看看您是否喜欢这个质量。FAAC 的音频质量以百分比表示,因此 100% 是默认值,值越高表示质量越好。


在您的特定情况下,除了音频通道数之外,所有要求都已满足。您有 5.1 音频,需要将其转换为 2.0 立体声。因此,我们复制视频比特流并使用以下方法更改音频通道数选项-ac

ffmpeg -i input.mp4 -c:a libfaac -q:a 100 -ac 2 -c:v copy output.mp4

根据您拥有的编码器更改突出显示的部分 - 某些 FFmpeg 版本可能不捆绑 FAAC,因此您也可以使用内置编码器:

ffmpeg -i input.mp4 -c:a aac -strict experimental -ac 2 -c:v copy output.mp4

如果你收到有关 FFmpeg 无法将 6 声道音频下混为 2 声道的错误,你需要做的是提取原始音频,然后使用脂肪肝防治协会

ffmpeg -i input.mp4 -c:a copy audio-6.aac

然后,下采样为 PCM 立体声 WAV 文件:

faad -d -o audio-2.wav audio-6.aac

并将其重新混合到您已有的视频中。这不会重新编码视频,因此它将保留您的原始质量,但我们必须再次编码音频。如果您没有libfaac,请参阅上面的内置替代方法,使用aac

ffmpeg -i input.mp4 -i audio-2.wav -c:v copy -c:a libfaac -map 0:0 -map 1:0 output.mp4

如果视频仍然无法播放,您可以尝试重新编码整个视频。

答案2

我一直在尝试做与原始发帖人相同的事情。无论出于什么原因,我都没能成功让 slhck 的答案中的说明发挥作用。可能是因为我的工作笔记本电脑装有 ubuntu,它已被ffmpeg替换avconv

总之,长话短说,我放弃了使用命令行解决方案,而是handbrake使用预设安装并转换文件Universal。这样会生成格式正确的文件mp4,但会为它们添加m4v扩展名。重命名文件以为其添加mp4扩展名。这意味着同样的事情,但 xbox 不知道这一点,并且只有在扩展名为 时才会读取它们mp4

相关内容