适当的DVD翻录通过UPnP服务


1

我是一个快乐的用户 minidlna (版本1.0.24)在旧的Mac Mini G4上。它在我的环境中运行良好。由于minidlna不允许转码,我想撕掉一组DVD(主要是漫画)供观看。但是,我无法理解如何正确编码它们仅用于通过UPnP为它们提供服务。

  • 我的DSL提供商有一个内置客户端(Freebox ADSL,固件1.5.20),它只是拒绝服务 ISO Media, MP4 Base Media v1 [IS0 14496-12:2003] (* .mp4)文件。
  • 我有一个Windows 8平板电脑,不支持 EBML file / Matroska (* .mkv)容器。

因此我需要使用 AVI 我的设置容器。现在复杂的部分是我需要使用的编码选项 将DVD翻录到AVI容器

视频 :我已经测试过,mpeg4和x264视频流都可以使用。据我所知,x264不是一个选项,因为我使用AVI容器。那么高质量的mpeg4视频流有哪些选择呢?使用试验和错误我发现使用带有以下流的mkv容器视频有点不稳定:

Stream #0.0(eng): Video: h264 (High), yuv420p, 1280x568 [PAR 1:1 DAR 160:71], 25 fps, 25 tbr, 1k tbn, 50 tbc (default)

音频 :我遇到了一个包含以下问题的文件的问题:

Stream #0.1(fre): Audio: dca (DTS), 48000 Hz, 5.1, s16, 1536 kb/s (default)

虽然这些音频中的任何一个都有效:

Stream #0.1(fre): Audio: aac, 48000 Hz, stereo, s16 (default)
Stream #0.1: Audio: mp3, 44100 Hz, mono, s16, 128 kb/s (default)

我应该选择什么音频选项?

奖励积分 :什么是完整的 avconvffmpeg )命令行直接从DVD(* .vob)转换为这样的AVI?我想避免使用 mencoder,因为它最近已经 去除 来自Debian。

编辑: 这完全是偏离主题的,但这可能会澄清下面的评论。经过多次试验,我已经诊断出MPEG-4容器问题确实存在于客户端。我不知道为什么客户拒绝显示它。我能够使用* .mp4容器并使用以下代码对其进行转码: mkvmerge -o out.mkv in.mp4,现在文件在客户端正确显示(并可以播放!)。从默认的Windows 8 Media Player中可以看出相同的* .mp4,所以这绝对不是服务器问题。

EDIT2: 使用的唯一技巧 minidlna 为了 FreeBox client 看得见 这里

参考文献: * 创建准备用于HTTP流式传输的MP4视频


对于那些投票结束的人,我看不出这个问题的主观性。对于MP4,它是由服务器禁用还是只是视频无法播放?可能是你只是使用了错误的编码选项..
slhck

Answers:


0

经过一些研究,我发现了这一点 上一篇文章 。因此,为了生成* .mp4文件,诀窍是使用:

$ ffmpeg -i input.avi -c:v libx264 -crf 22 -c:a libfaac -movflags faststart output.mp4

然而 -movflags faststart 只有在mp4代的情况下才有意义。看着 man ffmpeg 从debian / jessie系统中,我能够找到建议的DVD翻录单行:

$ ffmpeg -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi

生成的文件在我的设置中流畅播放,我可以快速前进和快退,所以我想 AVI 是对的 索引 (或至少与...中所需的任何内容兼容 UPnP 协议)。

基于一些信息 在互联网上可用 ,Freebox V5似乎只支持一组有限的格式和编解码器:

  • conteneur编码解码器vidéo编解码器音频résolutionmaxmaximareceptée
  • ts(mpeg ts)mpeg4 ac52 1280×720
  • ts(mpeg ts)h264 ac52 1280×720
  • avi xvid mp3 1280×720和1440×1080

但是对matroska(* .mkv)有部分支持,在这种情况下,更容易安装mkv编解码器 这里 。所以最后我用HandBrake(GUI)将DVD转换成mp4(高调+ 网络优化 )然后转码为mkv:

$ mkvmerge -q -o out.mkv --compression 0:none --compression 1:none in.mp4

还需要确保使用 -map_chapters -1 avconv选项,以确保生成的mkv输出文件中没有章节。我无法播放任何带有UPnP章节的mkv文件(使用minidlna),尽管它们在本地(或通过USB)播放效果很好, Windows媒体播放器 (Windows 8.1)。

$ ffmpeg -i input.mkv -map_chapters -1 -c:v copy -c:a copy output.mkv

因为我可以轻松地使FreeBox客户端崩溃(按 fast forward 使用全高清电影(1920x)连续两次按钮以使整个系统重新启动,我需要将视频缩小一点(1280x):

$ ffmpeg -i in.mp4 -c:v libx264 -crf 23 -vf scale=1280:-1 -c:a aac -strict experimental -sn -movflags faststart -metadata title="in" out.mp4 

有些电影使用的是ac3和/或DTS,这对我来说不起作用,所以有 aac 是一个可接受的解决方Windows Media Player不喜欢ac3 over UPnP和FreeBox V5(固件1.5.20)不喜欢 DTS 声音。

因此,当输入是带有ac3声音流的AVI容器时,您需要将其转换为mp4(实际上是FreeBox的mkv):

$ ffmpeg -i input_with_ac3.avi -c:v copy -c:a copy output.mp4

如果你想要mkv并且不想先转换为mp4然后转换为mkv,那么你需要解决这个错误:

[matroska @ 0x1b62100]无法写入未知时间戳的数据包   av_interleaved_write_frame():参数无效

例如,参见 这里

$ ffmpeg -fflags +genpts -i input_with_ac3.avi -c copy out.mkv

更新:有时使用 mpeg4_unpack_bframes 确实导致文件较小。看到 DOC

更新:请注意,如果你在Linux上工作, ntfs-3g 默认使用 windows_names:off,所以你不应该在其中创建带有':'的新文件(windows media player和VLC不支持它们)。看到 这里


更新:FreeBox将需要特定的像素格式: -pix_fmt yuv420p。它也可以使用 -profile:v high -level 4.0 由于框中生成的* .ts文件正在使用此配置文件(ffprobe -show_streams * .ts | grep“profile \ | level”)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.