ubuntu上的HDMI数据线带来的音频视频问题

Posted 王玉成的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu上的HDMI数据线带来的音频视频问题相关的知识,希望对你有一定的参考价值。

我自己家用的电脑是一个笔记本,最大分辨率到1366x768,带HDMI接口。


自己太喜欢大屏幕了,入手了一台23英寸的IPS显示器。带HDMI接口。


视频和音频的配置就麻烦起来了。


1. 视频

安装包


我的笔记本上用的是NVIDIA的GT630M的显示芯片。自己从nvidia的官网上下了最新版的linux 64bit的驱动。


把二进制包(我的二进制包的名字NVIDIA-Linux-x86_64-310.19.run)下载下来后,加上可执行权限。


由于nvidia的显卡驱动不能在x server环境下安装。于是切到任何一个控制台界面下(不要在X环境下)


[ycwang@ycwang-asus:desktop]$ sudo stop lightdm

[ycwang@ycwang-asus:desktop]$ sudo ./NVIDIA-Linux-x86_64-310.19.run

[ycwang@ycwang-asus:desktop]$ sudo start lightdm


下面我安装完成后的信息。

[ycwang@ycwang-asus:desktop]$ cat /proc/driver/nvidia/version 
NVRM version: NVIDIA UNIX x86_64 Kernel Module  310.19  Thu Nov  8 00:52:03 PST 2012
GCC version:  gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 


这里最好不要用ubuntu自带的nvidia-curent 包,这个包比起官网更新速度来说,有点老了,而且,安装这个包后,在virtual box下用3D加速,会直接退出virtualbox,不信可以试试。

3D加速问题

安装包后,用命令gfxinfo [ycwang@ycwang-asus:desktop]$ glxinfo 
name of display: :0.0
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Xlib:  extension "GLX" missing on display ":0.0".
Error: couldn't find RGB GLX visual or fbconfig

也就是3D加速用不了,在virtualbox的显卡配置里不能启用3d。可以查看这篇文章: http://superuser.com/questions/484991/nvidia-graphics-driver-in-ubuntu-12-04

这篇文章里的核心步骤: For 32 bit Reinstall xorg completely
sudo apt-get install --reinstall xserver-xorg-core libgl1-mesa-glx:i386 libgl1-mesa-dri:i386 

For 64 bit Reinstall xorg completely
sudo apt-get install --reinstall xserver-xorg-core libgl1-mesa-glx:amd64 libgl1-mesa-dri:amd64

the OS info (32 bit/64 bit) can be verified using uname -a

Then Reconfigure Xorg
sudo dpkg-reconfigure xserver-xorg
sudo reboot


等重启过后,再用命令查看

[ycwang@ycwang-asus:desktop]$ glxinfo
name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, 
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, 
    GLX_OML_swap_method, GLX_SGI_swap_control, GLX_SGIS_multisample, 
    GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, 
    GLX_INTEL_swap_event
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:

。。。。。。。。。。。。。。。。。。。。。。

后面的信息不用再贴了。


可以看到几个屏幕都正常了。


然后在virtualbox里开启3D加速,在virtualbox的windows里进入安全模式,装上guest installtions,可以选择3D支持。然后正常进入window,这时3D加速OK。


多屏切换

笔记本自带的屏,一个VGA接口,一个HDMI接口。如何在这三个屏中自由的切换?

使用ubuntu的多屏管理软件

[ycwang@ycwang-asus:desktop]$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
LVDS1 connected (normal left inverted right x axis y axis)
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 290mm
   1920x1080      60.0*+
   1680x1050      60.0  
   1280x1024      60.0  
   1280x960       60.0  
   1152x864       60.0  
   1024x768       60.0  
   800x600        60.3  
   640x480        60.0  
DP1 disconnected (normal left inverted right x axis y axis)

这个信息告诉我,LVDS1,VGA1,HDMI1,DP1这四块屏。以及连接的屏幕的最大分辨率是多少。


但是这个信息有问题。由于我的笔记本自带的屏是1366x768的分辨率,而它这个640x480        59.9  。无语。

造成这种情况的原因是由于NVIDIA的显卡驱动启用了xorg.conf文件。里面一大堆老式的配置。ubuntu的lightdm并没有用这个文件。

那么直接删除这个配置文件。

[ycwang@ycwang-asus:desktop]$ sudo rm /etc/X11/xorg.conf

然后再看一下分辨率的情况。

[ycwang@ycwang-asus:desktop]$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
LVDS1 connected (normal left inverted right x axis y axis)
   1366x768       60.0 +
   1360x768       59.8     60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 290mm
   1920x1080      60.0*+
   1680x1050      60.0  
   1280x1024      60.0  
   1280x960       60.0  
   1152x864       60.0  
   1024x768       60.0  
   800x600        60.3  
   640x480        60.0  
DP1 disconnected (normal left inverted right x axis y axis)

这次正常。的确是1366x768的分辨率。


由于grub默认是切换到笔记本自己的屏幕LVDS1上去。而我想只显示在HDMI1的屏幕上。

可以编写一个脚本

#!/bin/bash

#use command xrandr to display


result=$(xrandr  | grep "HDMI1 connected")

if [[ $result == "" ]]
then
    xrandr --output LVDS1 --auto --output HDMI1 --off
else
    xrandr --output HDMI1 --auto --output LVDS1 --off
fi

然后把脚本放在ubuntu的Startup Applications..中执行。

具体可参考http://hi.baidu.com/sicceer/item/634dee0c3ba8af1aebfe3867

中间加上一个条件语句是为了HDMI拨掉的情况下,在LVDS1上输出。


声音控制

三种声道,笔记本自带的耳机,笔记本自带的扬声器,还有HDMI的音频输出。

打开ubuntu自带的音频设置

HDMI的情况下:



如果是笔记本上的音箱或者耳机输出


然后在output标签里改一下耳机还是音箱即可。






以上是关于ubuntu上的HDMI数据线带来的音频视频问题的主要内容,如果未能解决你的问题,请参考以下文章

HDMI 视频到 iOS 设备

基于FPGA的HDMI高清显示接口驱动

HDMI中的ARC和CEC都是啥功能?

HDMI,DVI,DP三种接口差别有多大??

vga高清线和hdmi高清线有啥区别呢?

如何辨别游戏直播HDMI采集卡哪个好