免责声明:这不是一个实际的问题,而是“以问答式分享您的知识”。


所以,我在Raspberry Pi上运行Xbmc,我很难理解我可以实际使用什么,不能做什么。

我读到RPi可以播放H.264编码的视频,但是我只能找到x264编码的视频。那也行吗?如果是这样,为什么某些文件可能无法工作?

#1 楼

关于H.264(带点)的实际含义,似乎存在很多误解。因此,引自Wikipedia:


H.264 / MPEG-4 Part 10或AVC(高级视频编码)是
视频压缩的标准,目前是其中之一最常用的
格式[...]


这里延伸的重要部分是它只是一个标准。这意味着视频实际上并未使用H.264进行编码,而是使用了符合H.264标准的编解码器。最常见的一种是x264(小写的x,没有点):


x264是一个免费的软件库,用于将视频流编码为H.264 / MPEG-4
AVC格式。
[...]
x264与其他H.264编码器相比具有许多功能。


H。 264是一种接口,而x264是该接口的实现(具有实际功能)。

,Pi会很好地播放x264编码的文件。


然后为什么某些x264编码的文件播放不流畅,却每4-6秒钟停止播放一次(取决于GPU-Ram的数量)?

大多数情况下都是声音。由于x264是用于高清视频文件的编码器,因此大多数文件都带有数字高品质音轨,该音轨使用DTS编解码器。

(目前)Pi尚无法对DTS轨道进行硬件解码,而它的CPU不够强大。在官方论坛上有关于此问题的讨论,值得研究。

要找出适合您的情况,可以使用mediainfo -tool(必须安装,软件包名称)取决于您的发行版):

[tv@raspberry]$ mediainfo some_random_movie.mkv 
# Shortened output!
Audio #2
ID                                       : 3
Format                                   : DTS
Format/Info                              : Digital Theater Systems
Codec ID                                 : A_DTS


您现在有两个选择:


购买具有DTS功能的接收器(也许是您的电视也可以做到吗?)并在Xbmc(或您使用的任何播放器)中启用“通过”(最后一点)。
将DTS轨道转换为AC3,可以通过(更快) )或CPU解码。

要了解您的接收器(插入HDMI电缆的设备)的功能,请使用tvservice -tool(它不在PATH中,因此您需要完整的路径):

[tv@raspberry ~]$ /opt/vc/bin/tvservice -a
     PCM supported: Max channels: 2, Max samplerate:  48kHz, Max samplesize 24 bits.
     AC3 supported: Max channels: 6, Max samplerate:  48kHz, Max rate  640 kb/s.


如您所见,我当前的接收器能够解码PCM和AC3(不是DTS)。

我对此问题的解决方案是将音频转换为DTS到AC3的曲目。这是一个很小的单行代码,它可以将infile.mkv中的所有音频流都转换为AC3,并且不触摸视频:



ffmpeg -i infile.mkv -map 0 -codec:v copy -codec:s copy -codec:a ac3 outfile.mkv



avconv:

avconv -i infile.mkv -map 0 -vcodec copy -acodec ac3 -ab 256k outfile.mkv


注意:上面的命令还为生成的AC3编码的音频流(似乎是必要的)。 256kbps
是相当不错的(大多数DVD使用192kbps),但是您可能想
增加/减少它。


幸运的是,这只需要5分钟左右(当然取决于您的硬件)。另外,您的文件会变小,如果您不是发烧友,您将听不到任何区别。


仍然无法播放1080p FullHD电影,屏幕变黑几秒钟没有声音,但视频播放似乎仍在继续。电影在带有AC3轨道的MKV容器中经过H.264编码。这是什么问题?

很可能,影片文件没有问题,但是Xbmc设置没有问题。就我而言,问题是Xbmc的“刷新率”。默认情况下设置为60Hz。对于720p和任何其他小型视频文件,Pi似乎没有问题,但是1080p文件会导致上述问题。

将刷新率降低到小于60Hz(至少电影足以达到24Hz)。这里有两个选项:


全局Xbmc(包括Xbmc本身):System -> Settings -> System -> Video output -> Refresh rate

仅电影(由视频文件确定):System -> Settings -> Video -> Playback -> Adjust display refresh rate to match video


降低刷新率后,1080p电影也可以正常播放。

评论


RaspberryPi.stackexchange.com上的最佳答案很有可能。

– Vincent P
13年1月29日在4:52

哦,我也看到ffmpeg甚至可以用于RPI。 sudo apt-get安装ffmpeg。您是否在RPI上尝试过?它运作良好吗?

– Vincent P
13年1月29日,下午4:55

@Raphael不,不是:stackoverflow.com/a/9477756/717341

–卢卡斯·努斯(Lukas Knuth)
13年3月15日在11:49

@Raphael取决于您的发行版。在ArchLinux中,我没有看到这个问题。

–卢卡斯·努斯(Lukas Knuth)
13年3月15日在11:53

@LukasKnuth很好的答案,除了ffmpeg并不被其他人偏爱。 avconv是一个叉子。

–aergistal
2015年9月19日在20:29