【问题标题】:How to convert mkv movies to mp4 for streaming to XBox 360如何将 mkv 电影转换为 mp4 以流式传输到 Xbox 360
【发布时间】:2014-02-05 12:00:17
【问题描述】:

我最近购买了 Synology Diskstation DS412+,我有许多 .mkv 电影,我想将它们转换/转码为 mp4 文件,以便将它们直接流式传输到我的 XBox 360。我在笔记本电脑上使用 Handbrake ,但我宁愿直接在我的 NAS 上发生这种情况。

我对 Linux 很生疏,对转码很陌生,但我目前拥有的脚本如下:

#!/bin/bash
for dir in *; do
  if test -d "$dir"; then
    #echo $dir
    for file in "$dir"/*.mkv; do
      noextension=${file%.*}.mp4
      ffmpeg -y -i "$file" -vcodec copy -acodec copy "$noextension"
    done
  fi
done

据我了解,它只是将音频和视频组件复制到 mkv 容器中,然后将它们插入到新的 mp4 容器中。这适用于我的几个文件,但有一些文件不起作用。

以下是失败运行的输出示例:

ffmpeg version UNKNOWN, Copyright (c) 2000-2011 the FFmpeg developers
  built on Sep 16 2013 00:45:02 with gcc 4.2.1
  configuration: --prefix=/usr/syno --arch=i686 --target-os=linux --cross-prefix=/usr/local/i686-linux-gnu/bin/i686-linux-gnu- --enable-cross-compile --enable-optimizations --disable-yasm --disable-altivec --enable-pic --enable-shared --disable-static --disable-swscale-alpha --disable-ffserver --disable-ffplay --enable-libmp3lame --enable-libfaac --enable-nonfree --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-indev=alsa --disable-outdev=alsa --disable-encoder=dca --disable-encoder=ac3 --disable-encoder=ac3_fixed --disable-encoder=ac3_float --disable-encoder=eac3 --disable-decoder=dca --disable-decoder=eac3 --disable-decoder=truehd --cc=/usr/local/i686-linux-gnu/bin/i686-linux-gnu-ccache-gcc
  libavutil    50. 40. 1 / 50. 40. 1
  libavcodec   52.120. 0 / 52.120. 0
  libavformat  52.108. 0 / 52.108. 0
  libavdevice  52.  4. 0 / 52.  4. 0
  libavfilter   1. 77. 0 /  1. 77. 0
  libswscale    0. 14. 0 /  0. 14. 0
[matroska,webm @ 0x80726c0] Estimating duration from bitrate, this may be inaccurate

Seems stream 1 codec frame rate differs from container frame rate: 47.95 (5994/125) -> 23.98 (24000/1001)

...然后是输入章节开始和结束时间的列表,然后...

 Stream #0.0(eng): Audio: aac, 48000 Hz, stereo, s16 (default)
 Stream #0.1(eng): Video: h264 (High), yuv420p, 1280x692 [PAR 1:1 DAR 320:173], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)

...然后是输出章节开始和结束时间的列表,然后...

Stream #0.0(eng): Video: ![0][0][0] / 0x0021, yuv420p, 1280x692 [PAR 1:1 DAR 320:173], q=2-31, 2997 tbn, 23.98 tbc (default)
Stream #0.1(eng): Audio: libfaac, 48000 Hz, stereo (default)
Stream mapping:
  Stream #0.1 -> #0.0
  Stream #0.0 -> #0.1
Press [q] to stop encoding
[mp4 @ 0x808a020] pts < dts in stream 0
av_interleaved_write_frame(): Invalid data found when processing input

Xbox 支持网站提供了有关支持的文件类型的详细信息,其中 mp4 包含在 H.264 标准中:http://support.xbox.com/ar-SA/xbox-360/system/audio-video-playback

我有点不知所措。我已经阅读了http://www.ffmpeg.org/ffmpeg.html,但来自 ffmpeg 的错误消息似乎没有多大帮助,而且在 Synology Box 上运行这些东西时资源充其量是稀少的。

我尝试了我的脚本的一些排列,例如:

ffmpeg -i "$file" "$noextension"

ffmpeg -y -i "$file" -vcodec mpeg4 -acodec libfaac "$noextension"

但是那些都给了我以下错误:

Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height

我假设我需要专门指定输入和输出编解码器,以及比特率或纵横比等内容,但这是我遇到的问题。

任何帮助将不胜感激!

【问题讨论】:

  • 如果不先更新您的 ffmpeg 版本,我不会走得更远。如果从 2011 年开始,您的 - 现在已经三年了。请下载或编译一个更新的:ffmpeg.org/download.html — 然后再试一次,请包含完整的、未删减的命令行输出,而不仅仅是您认为相关的部分。谢谢

标签: ffmpeg mp4 xbox360 mkv synology


【解决方案1】:

好的,现在实际上需要有更多关于在转码时失败的视频的细节。但仍在查看错误,这是您可以做的尝试。我会警告你,输出可能有很多组合(比特率、帧率等),但你必须决定。

选项 1

ffmpeg -y -i ip.mkv -vcodec libx264 -acodec libvo_aacenc op.mp4

这类似于ffmpeg -i ip.mkv op.mp4,但我明确添加了编解码器。

选项 2

ffmpeg -y -i ip.mkv -vcodec libx264 -acodec libvo_aacenc -b:a 92k op.mp4

添加了比特率,您可以根据需要进行更改。

选项 3

ffmpeg -y -i ip.mkv -vcodec libx264 -acodec libvo_aacenc -b:a 92k -r 30 op.mp4

增加了 30 的 fps。

您也可以尝试混合2 and 3 选项。

希望这会有所帮助。干杯。:)

PS:正如@slhck 所说;请先更新 ffmpeg,然后尝试这些。所有这些都是re-encoding 命令,所以如果你真的想要它们;使用比我说明的更好的音频编码器。

【讨论】:

  • OP 不想重新编码视频,您的所有选项都会这样做。当然,这可能适用于无法放入 MP4 的编解码器。
  • @slhck 是的,它确实对视频进行了重新编码;但这些只是获得输出的可能解决方案。
  • 我其实重新编码没问题;我的偏好会更简单=更好,但如果唯一的解决方案涉及重新编码,那很好。我会尝试更新 ffmpeg,看看我以后会怎样。
  • 哇,我完全忘记了我问过这个问题,直到将近 3 年后才发现。我最终选择的答案是使用 Plex 以任何格式播放视频,而不是将它们摔跤到 mp4 以在 XBox 360 上播放。我已经接受了这个答案,因为我付出了很多努力如果我有足够的勇气坚持下去,我相信它会很有帮助。
猜你喜欢
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 2014-11-04
  • 2013-01-04
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 2021-02-07
相关资源
最近更新 更多