jquery.address ajax,ajax - Adding #! to jQuery Address - Stack Overflow

该博客讨论了如何利用jQuery Address插件将URL中的#替换为#!,以便遵循AJAX爬虫的指南。作者展示了相关JS代码,并在其中处理点击事件和页面回退,以实现URL更新和内容加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I'm using the jquery address plugin and now my URLs are like http://localhost:3000/#/users/1/. I want it to use #! instead of just # according to the guidelines at http://code.google.com/web/ajaxcrawling/index.html.

Here's my JS:

$('.likable').find('a').click(function(e) {

$.address.value($(this).attr('href').replace(/^#/, '').replace('http://'+document.domain,''));

e.preventDefault();

});

$('.ui-show').find('.close').live('click', function(e) {

history.back();

e.preventDefault();

});

// Setup jQuery Address Listener

$.address.init(function(event) {

if ($.address.baseURL() != 'http://' + document.domain) {

if (location.href.indexOf('#') < 0) {

// URL has no hash value and is a permalink, e.g. /about/

// Change address value to that of permalink

var fullpath = location.href.split('/',4);

$.address.value(fullpath[3] + '/');

}

}

}).change(function(event) {

if (event.value != '/') {

$.get($.address.value(),function(data) {

// Insert new content

});

} else {

// Remove new content

}

});

How do I use #! instead of #?

CPU 信息 : hisilicon,hi3798mv300@4核处理器 | aarch64架构 系统版本 : Ubuntu 20.04.6 LTS | V20250201-4.4.35_ecoo_83032968-64 可用存储 : 61.6% 4119.0M 可用内存 : 68.5% 1275.0M | 交换区:nan% 0.0M 警告,您的系统似乎出现问题,强烈建议重置 recoverbackup ! 启动时间 : 2 天 23 小时 58 分钟 52 秒 IP 地址 : 192.168.68.142 设备温度 : 57°C MAC 地址 : 00:11:22:33:44:55 设备识别码:25a8164713804c48599885640e2d8ff9 root@hi3798mv300:~# # 在海纳思系统安装必备工具 root@hi3798mv300:~# sudo apt install cec-utils pulseaudio avahi-daemon Reading package lists... Done Building dependency tree Reading state information... Done avahi-daemon is already the newest version (0.7-4ubuntu7.3). avahi-daemon set to manually installed. The following additional packages will be installed: gstreamer1.0-plugins-base libasound2-plugins libasyncns0 libcairo2 libcdparanoia0 libcec4 libflac8 libgomp1 libgstreamer-plugins-base1.0-0 libice6 libjack-jackd2-0 libjson-glib-1.0-0 libjson-glib-1.0-common libopus0 liborc-0.4-0 libp8-platform2 libpixman-1-0 libpulse0 libpulsedsp libsamplerate0 libsm6 libsnapd-glib1 libsndfile1 libsoxr0 libspeexdsp1 libtheora0 libvisual-0.4-0 libvorbisenc2 libwebrtc-audio-processing1 libx11-xcb1 libxcb-render0 libxcb-shm0 libxrandr2 libxrender1 libxtst6 pulseaudio-utils rtkit x11-common Suggested packages: gvfs libvisual-0.4-plugins jackd2 opus-tools snapd pavumeter pavucontrol paman paprefs ubuntu-sounds The following NEW packages will be installed: cec-utils gstreamer1.0-plugins-base libasound2-plugins libasyncns0 libcairo2 libcdparanoia0 libcec4 libflac8 libgomp1 libgstreamer-plugins-base1.0-0 libice6 libjack-jackd2-0 libjson-glib-1.0-0 libjson-glib-1.0-common libopus0 liborc-0.4-0 libp8-platform2 libpixman-1-0 libpulse0 libpulsedsp libsamplerate0 libsm6 libsnapd-glib1 libsndfile1 libsoxr0 libspeexdsp1 libtheora0 libvisual-0.4-0 libvorbisenc2 libwebrtc-audio-processing1 libx11-xcb1 libxcb-render0 libxcb-shm0 libxrandr2 libxrender1 libxtst6 pulseaudio pulseaudio-utils rtkit x11-common 0 upgraded, 40 newly installed, 0 to remove and 0 not upgraded. Need to get 6,056 kB of archives. After this operation, 22.5 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 liborc-0.4-0 arm64 1:0.4.31-1ubuntu0.1 [172 kB] Get:2 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 libgstreamer-plugins-base1.0-0 arm64 1.16.3-0ubuntu1.4 [665 kB] Get:3 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 x11-common all 1:7.7+19ubuntu14 [22.3 kB] Get:4 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libice6 arm64 2:1.0.10-0ubuntu1 [37.7 kB] Get:5 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libasyncns0 arm64 0.8-6 [10.9 kB] Get:6 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 libflac8 arm64 1.3.3-1ubuntu0.2 [85.8 kB] Get:7 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libvorbisenc2 arm64 1.3.6-2ubuntu1 [70.5 kB] Get:8 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 libsndfile1 arm64 1.0.28-7ubuntu0.3 [163 kB] Get:9 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 libpulse0 arm64 1:13.99.1-1ubuntu3.13 [222 kB] Get:10 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libsm6 arm64 2:1.2.3-1 [15.1 kB] Get:11 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libjson-glib-1.0-common all 1.4.4-2ubuntu2 [3,468 B] Get:12 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libjson-glib-1.0-0 arm64 1.4.4-2ubuntu2 [54.0 kB] Get:13 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 libsnapd-glib1 arm64 1.58-0ubuntu0.20.04.0 [82.7 kB] Get:14 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 libgomp1 arm64 10.5.0-1ubuntu1~20.04 [93.5 kB] Get:15 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libsoxr0 arm64 0.1.3-2build1 [54.3 kB] Get:16 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 libspeexdsp1 arm64 1.2~rc1.2-1.1ubuntu1.20.04.1 [34.7 kB] Get:17 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libwebrtc-audio-processing1 arm64 0.3.1-0ubuntu3 [245 kB] Get:18 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 libx11-xcb1 arm64 2:1.6.9-2ubuntu1.6 [9,468 B] Get:19 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libxtst6 arm64 2:1.2.3-1 [11.7 kB] Get:20 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libsamplerate0 arm64 0.1.9-2 [931 kB] Get:21 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libjack-jackd2-0 arm64 1.9.12~dfsg-2ubuntu2 [248 kB] Get:22 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libasound2-plugins arm64 1.2.2-1ubuntu1 [61.7 kB] Get:23 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 libpulsedsp arm64 1:13.99.1-1ubuntu3.13 [20.0 kB] Get:24 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 pulseaudio-utils arm64 1:13.99.1-1ubuntu3.13 [51.8 kB] Get:25 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 pulseaudio arm64 1:13.99.1-1ubuntu3.13 [690 kB] Get:26 http://repo.huaweicloud.com/ubuntu-ports focal/universe arm64 libp8-platform2 arm64 2.1.0.1+dfsg1-3build1 [20.3 kB] Get:27 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libxrender1 arm64 1:0.9.10-1 [16.1 kB] Get:28 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libxrandr2 arm64 2:1.5.2-0ubuntu1 [17.7 kB] Get:29 http://repo.huaweicloud.com/ubuntu-ports focal/universe arm64 libcec4 arm64 4.0.4+dfsg1-4ubuntu3 [196 kB] Get:30 http://repo.huaweicloud.com/ubuntu-ports focal/universe arm64 cec-utils arm64 4.0.4+dfsg1-4ubuntu3 [30.6 kB] Get:31 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libcdparanoia0 arm64 3.10.2+debian-13 [39.9 kB] Get:32 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libopus0 arm64 1.3.1-0ubuntu1 [172 kB] Get:33 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 libpixman-1-0 arm64 0.38.4-0ubuntu2.1 [130 kB] Get:34 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libxcb-render0 arm64 1.14-2 [14.7 kB] Get:35 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libxcb-shm0 arm64 1.14-2 [5,560 B] Get:36 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libcairo2 arm64 1.16.0-4ubuntu1 [538 kB] Get:37 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libtheora0 arm64 1.1.1+dfsg.1-15ubuntu2 [154 kB] Get:38 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 libvisual-0.4-0 arm64 0.4.0-17 [91.3 kB] Get:39 http://repo.huaweicloud.com/ubuntu-ports focal-updates/main arm64 gstreamer1.0-plugins-base arm64 1.16.3-0ubuntu1.4 [542 kB] Get:40 http://repo.huaweicloud.com/ubuntu-ports focal/main arm64 rtkit arm64 0.12-4 [32.4 kB] Fetched 6,056 kB in 2s (2,752 kB/s) Extracting templates from packages: 100% Selecting previously unselected package liborc-0.4-0:arm64. (Reading database ... 28335 files and directories currently installed.) Preparing to unpack .../00-liborc-0.4-0_1%3a0.4.31-1ubuntu0.1_arm64.deb ... Unpacking liborc-0.4-0:arm64 (1:0.4.31-1ubuntu0.1) ... Selecting previously unselected package libgstreamer-plugins-base1.0-0:arm64. Preparing to unpack .../01-libgstreamer-plugins-base1.0-0_1.16.3-0ubuntu1.4_arm64.deb ... Unpacking libgstreamer-plugins-base1.0-0:arm64 (1.16.3-0ubuntu1.4) ... Selecting previously unselected package x11-common. Preparing to unpack .../02-x11-common_1%3a7.7+19ubuntu14_all.deb ... dpkg-query: no packages found matching nux-tools Unpacking x11-common (1:7.7+19ubuntu14) ... Selecting previously unselected package libice6:arm64. Preparing to unpack .../03-libice6_2%3a1.0.10-0ubuntu1_arm64.deb ... Unpacking libice6:arm64 (2:1.0.10-0ubuntu1) ... Selecting previously unselected package libasyncns0:arm64. Preparing to unpack .../04-libasyncns0_0.8-6_arm64.deb ... Unpacking libasyncns0:arm64 (0.8-6) ... Selecting previously unselected package libflac8:arm64. Preparing to unpack .../05-libflac8_1.3.3-1ubuntu0.2_arm64.deb ... Unpacking libflac8:arm64 (1.3.3-1ubuntu0.2) ... Selecting previously unselected package libvorbisenc2:arm64. Preparing to unpack .../06-libvorbisenc2_1.3.6-2ubuntu1_arm64.deb ... Unpacking libvorbisenc2:arm64 (1.3.6-2ubuntu1) ... Selecting previously unselected package libsndfile1:arm64. Preparing to unpack .../07-libsndfile1_1.0.28-7ubuntu0.3_arm64.deb ... Unpacking libsndfile1:arm64 (1.0.28-7ubuntu0.3) ... Selecting previously unselected package libpulse0:arm64. Preparing to unpack .../08-libpulse0_1%3a13.99.1-1ubuntu3.13_arm64.deb ... Unpacking libpulse0:arm64 (1:13.99.1-1ubuntu3.13) ... Selecting previously unselected package libsm6:arm64. Preparing to unpack .../09-libsm6_2%3a1.2.3-1_arm64.deb ... Unpacking libsm6:arm64 (2:1.2.3-1) ... Selecting previously unselected package libjson-glib-1.0-common. Preparing to unpack .../10-libjson-glib-1.0-common_1.4.4-2ubuntu2_all.deb ... Unpacking libjson-glib-1.0-common (1.4.4-2ubuntu2) ... Selecting previously unselected package libjson-glib-1.0-0:arm64. Preparing to unpack .../11-libjson-glib-1.0-0_1.4.4-2ubuntu2_arm64.deb ... Unpacking libjson-glib-1.0-0:arm64 (1.4.4-2ubuntu2) ... Selecting previously unselected package libsnapd-glib1:arm64. Preparing to unpack .../12-libsnapd-glib1_1.58-0ubuntu0.20.04.0_arm64.deb ... Unpacking libsnapd-glib1:arm64 (1.58-0ubuntu0.20.04.0) ... Selecting previously unselected package libgomp1:arm64. Preparing to unpack .../13-libgomp1_10.5.0-1ubuntu1~20.04_arm64.deb ... Unpacking libgomp1:arm64 (10.5.0-1ubuntu1~20.04) ... Selecting previously unselected package libsoxr0:arm64. Preparing to unpack .../14-libsoxr0_0.1.3-2build1_arm64.deb ... Unpacking libsoxr0:arm64 (0.1.3-2build1) ... Selecting previously unselected package libspeexdsp1:arm64. Preparing to unpack .../15-libspeexdsp1_1.2~rc1.2-1.1ubuntu1.20.04.1_arm64.deb ... Unpacking libspeexdsp1:arm64 (1.2~rc1.2-1.1ubuntu1.20.04.1) ... Selecting previously unselected package libwebrtc-audio-processing1:arm64. Preparing to unpack .../16-libwebrtc-audio-processing1_0.3.1-0ubuntu3_arm64.deb ... Unpacking libwebrtc-audio-processing1:arm64 (0.3.1-0ubuntu3) ... Selecting previously unselected package libx11-xcb1:arm64. Preparing to unpack .../17-libx11-xcb1_2%3a1.6.9-2ubuntu1.6_arm64.deb ... Unpacking libx11-xcb1:arm64 (2:1.6.9-2ubuntu1.6) ... Selecting previously unselected package libxtst6:arm64. Preparing to unpack .../18-libxtst6_2%3a1.2.3-1_arm64.deb ... Unpacking libxtst6:arm64 (2:1.2.3-1) ... Selecting previously unselected package libsamplerate0:arm64. Preparing to unpack .../19-libsamplerate0_0.1.9-2_arm64.deb ... Unpacking libsamplerate0:arm64 (0.1.9-2) ... Selecting previously unselected package libjack-jackd2-0:arm64. Preparing to unpack .../20-libjack-jackd2-0_1.9.12~dfsg-2ubuntu2_arm64.deb ... Unpacking libjack-jackd2-0:arm64 (1.9.12~dfsg-2ubuntu2) ... Selecting previously unselected package libasound2-plugins:arm64. Preparing to unpack .../21-libasound2-plugins_1.2.2-1ubuntu1_arm64.deb ... Unpacking libasound2-plugins:arm64 (1.2.2-1ubuntu1) ... Selecting previously unselected package libpulsedsp:arm64. Preparing to unpack .../22-libpulsedsp_1%3a13.99.1-1ubuntu3.13_arm64.deb ... Unpacking libpulsedsp:arm64 (1:13.99.1-1ubuntu3.13) ... Selecting previously unselected package pulseaudio-utils. Preparing to unpack .../23-pulseaudio-utils_1%3a13.99.1-1ubuntu3.13_arm64.deb ... Unpacking pulseaudio-utils (1:13.99.1-1ubuntu3.13) ... Selecting previously unselected package pulseaudio. Preparing to unpack .../24-pulseaudio_1%3a13.99.1-1ubuntu3.13_arm64.deb ... Unpacking pulseaudio (1:13.99.1-1ubuntu3.13) ... Selecting previously unselected package libp8-platform2:arm64. Preparing to unpack .../25-libp8-platform2_2.1.0.1+dfsg1-3build1_arm64.deb ... Unpacking libp8-platform2:arm64 (2.1.0.1+dfsg1-3build1) ... Selecting previously unselected package libxrender1:arm64. Preparing to unpack .../26-libxrender1_1%3a0.9.10-1_arm64.deb ... Unpacking libxrender1:arm64 (1:0.9.10-1) ... Selecting previously unselected package libxrandr2:arm64. Preparing to unpack .../27-libxrandr2_2%3a1.5.2-0ubuntu1_arm64.deb ... Unpacking libxrandr2:arm64 (2:1.5.2-0ubuntu1) ... Selecting previously unselected package libcec4:arm64. Preparing to unpack .../28-libcec4_4.0.4+dfsg1-4ubuntu3_arm64.deb ... Unpacking libcec4:arm64 (4.0.4+dfsg1-4ubuntu3) ... Selecting previously unselected package cec-utils. Preparing to unpack .../29-cec-utils_4.0.4+dfsg1-4ubuntu3_arm64.deb ... Unpacking cec-utils (4.0.4+dfsg1-4ubuntu3) ... Selecting previously unselected package libcdparanoia0:arm64. Preparing to unpack .../30-libcdparanoia0_3.10.2+debian-13_arm64.deb ... Unpacking libcdparanoia0:arm64 (3.10.2+debian-13) ... Selecting previously unselected package libopus0:arm64. Preparing to unpack .../31-libopus0_1.3.1-0ubuntu1_arm64.deb ... Unpacking libopus0:arm64 (1.3.1-0ubuntu1) ... Selecting previously unselected package libpixman-1-0:arm64. Preparing to unpack .../32-libpixman-1-0_0.38.4-0ubuntu2.1_arm64.deb ... Unpacking libpixman-1-0:arm64 (0.38.4-0ubuntu2.1) ... Selecting previously unselected package libxcb-render0:arm64. Preparing to unpack .../33-libxcb-render0_1.14-2_arm64.deb ... Unpacking libxcb-render0:arm64 (1.14-2) ... Selecting previously unselected package libxcb-shm0:arm64. Preparing to unpack .../34-libxcb-shm0_1.14-2_arm64.deb ... Unpacking libxcb-shm0:arm64 (1.14-2) ... Selecting previously unselected package libcairo2:arm64. Preparing to unpack .../35-libcairo2_1.16.0-4ubuntu1_arm64.deb ... Unpacking libcairo2:arm64 (1.16.0-4ubuntu1) ... Selecting previously unselected package libtheora0:arm64. Preparing to unpack .../36-libtheora0_1.1.1+dfsg.1-15ubuntu2_arm64.deb ... Unpacking libtheora0:arm64 (1.1.1+dfsg.1-15ubuntu2) ... Selecting previously unselected package libvisual-0.4-0:arm64. Preparing to unpack .../37-libvisual-0.4-0_0.4.0-17_arm64.deb ... Unpacking libvisual-0.4-0:arm64 (0.4.0-17) ... Selecting previously unselected package gstreamer1.0-plugins-base:arm64. Preparing to unpack .../38-gstreamer1.0-plugins-base_1.16.3-0ubuntu1.4_arm64.deb ... Unpacking gstreamer1.0-plugins-base:arm64 (1.16.3-0ubuntu1.4) ... Selecting previously unselected package rtkit. Preparing to unpack .../39-rtkit_0.12-4_arm64.deb ... Unpacking rtkit (0.12-4) ... Setting up libpixman-1-0:arm64 (0.38.4-0ubuntu2.1) ... Setting up libcdparanoia0:arm64 (3.10.2+debian-13) ... Setting up libx11-xcb1:arm64 (2:1.6.9-2ubuntu1.6) ... Setting up rtkit (0.12-4) ... Setting up libxrender1:arm64 (1:0.9.10-1) ... Setting up libvisual-0.4-0:arm64 (0.4.0-17) ... Setting up libxcb-render0:arm64 (1.14-2) ... Setting up x11-common (1:7.7+19ubuntu14) ... update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults Setting up libwebrtc-audio-processing1:arm64 (0.3.1-0ubuntu3) ... Setting up libxcb-shm0:arm64 (1.14-2) ... Setting up libgomp1:arm64 (10.5.0-1ubuntu1~20.04) ... Setting up libcairo2:arm64 (1.16.0-4ubuntu1) ... Setting up libflac8:arm64 (1.3.3-1ubuntu0.2) ... Setting up libp8-platform2:arm64 (2.1.0.1+dfsg1-3build1) ... Setting up libopus0:arm64 (1.3.1-0ubuntu1) ... Setting up libxrandr2:arm64 (2:1.5.2-0ubuntu1) ... Setting up liborc-0.4-0:arm64 (1:0.4.31-1ubuntu0.1) ... Setting up libasyncns0:arm64 (0.8-6) ... Setting up libtheora0:arm64 (1.1.1+dfsg.1-15ubuntu2) ... Setting up libspeexdsp1:arm64 (1.2~rc1.2-1.1ubuntu1.20.04.1) ... Setting up libjson-glib-1.0-common (1.4.4-2ubuntu2) ... Setting up libsamplerate0:arm64 (0.1.9-2) ... Setting up libvorbisenc2:arm64 (1.3.6-2ubuntu1) ... Setting up libice6:arm64 (2:1.0.10-0ubuntu1) ... Setting up libsoxr0:arm64 (0.1.3-2build1) ... Setting up libxtst6:arm64 (2:1.2.3-1) ... Setting up libgstreamer-plugins-base1.0-0:arm64 (1.16.3-0ubuntu1.4) ... Setting up libjson-glib-1.0-0:arm64 (1.4.4-2ubuntu2) ... Setting up gstreamer1.0-plugins-base:arm64 (1.16.3-0ubuntu1.4) ... Setting up libcec4:arm64 (4.0.4+dfsg1-4ubuntu3) ... Setting up cec-utils (4.0.4+dfsg1-4ubuntu3) ... Setting up libjack-jackd2-0:arm64 (1.9.12~dfsg-2ubuntu2) ... Setting up libsndfile1:arm64 (1.0.28-7ubuntu0.3) ... Setting up libsm6:arm64 (2:1.2.3-1) ... Setting up libsnapd-glib1:arm64 (1.58-0ubuntu0.20.04.0) ... Setting up libpulse0:arm64 (1:13.99.1-1ubuntu3.13) ... Setting up libpulsedsp:arm64 (1:13.99.1-1ubuntu3.13) ... Setting up pulseaudio-utils (1:13.99.1-1ubuntu3.13) ... Setting up libasound2-plugins:arm64 (1.2.2-1ubuntu1) ... Setting up pulseaudio (1:13.99.1-1ubuntu3.13) ... Adding user pulse to group audio Created symlink /etc/systemd/user/default.target.wants/pulseaudio.service → /usr/lib/systemd/user/pulseaudio.service. Created symlink /etc/systemd/user/sockets.target.wants/pulseaudio.socket → /usr/lib/systemd/user/pulseaudio.socket. Processing triggers for libc-bin (2.31-0ubuntu9.18) ... Processing triggers for systemd (245.4-4ubuntu3.24) ... Processing triggers for dbus (1.12.16-2ubuntu2.3) ... root@hi3798mv300:~# # 在海纳思系统启用AirPlay root@hi3798mv300:~# sudo apt install shairport-sync Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libconfig9 libmosquitto1 The following NEW packages will be installed: libconfig9 libmosquitto1 shairport-sync 0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 252 kB of archives. After this operation, 833 kB of additional disk space will be used. Do you want to continue? [Y/n] y Abort. root@hi3798mv300:~# # 测试脚本(开发者工具 > 服务) root@hi3798mv300:~# service: media_player.play_media -bash: service:: command not found root@hi3798mv300:~# target: -bash: target:: command not found root@hi3798mv300:~# entity_id: media_player.living_room_tv -bash: entity_id:: command not found root@hi3798mv300:~# data: -bash: data:: command not found root@hi3798mv300:~# media_content_id: "http://192.168.68.142:8123/local/test.mp3" # 测试音频URL -bash: media_content_id:: command not found root@hi3798mv300:~# media_content_type: "audio/mp3" -bash: media_content_type:: command not found root@hi3798mv300:~# 我按照你说的弄完了 还是不行 电视放声音音响不出声音
07-01
<think>我们正在解决海纳思系统上音频输出问题:电视有声音但音响无输出。用户已安装cec-utils,pulseaudio, avahi-daemon和shairport-sync。需要逐步排查。核心思路:1.确认音频设备识别和PulseAudio配置2.检查Shairport-Sync服务状态和配置3.验证多房间音频(Avahi)发现4.测试直接音频输出(排除HomeAssistant问题)步骤:一、检查PulseAudio设备1.列出所有PulseAudio设备:```bashpactllist shortsinks```预期输出应包含音响对应的设备(如HDMI、蓝牙或USB设备)。2.若未检测到音响,检查物理连接和系统设备:```bashaplay -l#列出ALSA设备```二、配置PulseAudio默认输出1.编辑PulseAudio配置文件(`/etc/pulse/default.pa`),确保加载所需模块:```bash#加载蓝牙模块(若使用蓝牙音响)load-modulemodule-bluetooth-discover#加载网络模块(若使用网络音频)load-modulemodule-native-protocol-tcp#设置默认输出设备(将sink_name替换为实际设备名)set-default-sink <sink_name>```2.重启PulseAudio:```bashpulseaudio -kpulseaudio --start```三、Shairport-Sync配置1.配置文件位置:`/etc/shairport-sync.conf`关键设置:```conf//指定PulseAudio输出output_backend ="pulseaudio";//设置设备名称(用于AirPlay发现)name ="海纳思音响";//确保Avahi启用mdns_backend ="avahi";//高级设置:调整延迟(若音频不同步)//audio_backend_latency_offset_in_seconds=0.0;```2.重启服务:```bashsystemctlrestart shairport-sync```四、验证服务状态1.检查Shairport-Sync日志:```bashjournalctl-ushairport-sync -f```正常状态:`"Paired successfully"`和`"Playing"`日志。2.测试AirPlay连接:-从iOS设备选择海纳思音响作为AirPlay输出,播放音频。-观察日志和音响是否发声。五、直接音频测试(绕过Shairport-Sync)1.使用`aplay`测试WAV文件:```bashaplay-D<device_name>/usr/share/sounds/alsa/Front_Center.wav```替换`<device_name>`为实际设备(如`plughw:0,0`)。2.使用`pactl`测试PulseAudio:```bashpacmdlist-sinks| grep-e&#39;name:&#39; -e &#39;index&#39;#获取sink索引pactlplay-sample <sink_index> bell```六、高级排查1.权限问题:-确保用户`shairport-sync`在`pulse-access`组中:```bashusermod -aGpulse-accessshairport-sync```2.防火墙:-开放AirPlay端口(5000/tcp,6000-6005/udp):```bashufwallow5000/tcpufwallow6000:6005/udp```七、最终验证若以上步骤仍无效,尝试简化配置:1.卸载Shairport-Sync,改用PulseAudio原生网络模块:```bash#加载RTP模块(将IP替换为音响IP)load-modulemodule-null-sink sink_name=rtpload-module module-rtp-send source=rtp.monitordestination_ip=<音响IP>```2.使用`ffmpeg`直接推流测试:```bashffmpeg -i test.mp3-fpulse "stream name"``` >引用说明: >-音频设备识别依赖ALSA驱动[^1] >- PulseAudio网络延迟通常低于50ms[^2] >- Shairport-Sync的同步算法基于PCM时间戳[^3] §§相关问题§§1.如何为蓝牙音响创建PulseAudio配置文件? 2.多房间音频同步时如何计算延迟补偿? 3.哪些硬件因素会导致ALSA设备无法识别? 4.如何通过Home Assistant控制Shairport-Sync音量?</think>针对海纳思系统上音频输出问题(电视有声音但音响无输出),以下是系统级的解决方案流程,包含关键配置验证和技术排查步骤: --- ### 一、核心排查流程 #### 1. **验证PulseAudio输出配置** ```bash # 检查当前默认音频输出设备 pacmd list-sinks | grep -e &#39;name:&#39; -e &#39;index&#39; -e &#39;active port&#39; # 示例输出应显示音响设备(如HDMI/USB): # index: 1 # name: <alsa_output.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.analog-stereo> # active port: <analog-output-lineout> ``` **问题修复**: 若音响设备未激活,手动切换默认输出: ```bash # 将<device_name>替换为实际设备名(如alsa_output.usb-...) pactl set-default-sink <device_name> ``` #### 2. **检查Shairport-Sync服务状态** ```bash # 查看服务运行状态 systemctl status shairport-sync # 检查关键错误日志 journalctl -u shairport-sync | grep -i error ``` **常见问题**: - 若出现 `Failed to open output device`:PulseAudio设备名不匹配 - 若出现 `avahi: Name collision`:需修改设备名(见步骤3) #### 3. **修正Shairport-Sync配置** 编辑配置文件 `/etc/shairport-sync.conf`: ```conf // 关键修改点 general = { name = "海纳思音响"; // 避免与其他AirPlay设备重名 output_backend = "pulseaudio"; // 确保使用PulseAudio }; pulseaudio = { sink_name = "shairport_sync"; // 必须与PulseAudio接收器一致 }; ``` 重启服务生效: ```bash systemctl restart shairport-sync ``` #### 4. **验证Avahi服务发现** ```bash # 检查AirPlay服务是否广播 avahi-browse -r -k _airplay._tcp # 正常输出示例: # + eth0 IPv4 海纳思音响 _airplay._tcp local ``` **异常处理**: 若无输出,重启Avahi: ```bash systemctl restart avahi-daemon ``` --- ### 二、音频路由测试方案 #### 1. **直接PulseAudio测试** ```bash # 播放测试音到指定设备 paplay -d <device_name> /usr/share/sounds/alsa/Front_Center.wav ``` - 成功:音响播放测试音 → **问题在Shairport** - 失败:**问题在PulseAudio配置** #### 2. **手动AirPlay路由测试** ```bash # 创建虚拟接收器 pactl load-module module-null-sink sink_name=shairport_sync # 将虚拟接收器绑定到物理设备 pactl load-module module-loopback source=shairport_sync.monitor sink=<physical_device> ``` 通过iOS设备向"海纳思音响"投放音频,验证物理设备是否发声。 --- ### 三、高级调试技巧 #### 1. **实时监控音频流** ```bash # 查看PulseAudio活动流 pactl list short sinks # 动态调试命令(新终端窗口) pulseaudio -v --log-target=stderr # 显示详细路由日志 ``` #### 2. **延迟优化公式** 当音频不同步时,调整Shairport的延迟补偿: $$ \text{target\_latency} = \frac{\text{buffer\_size}}{\text{sample\_rate}} + \Delta t $$ 在配置文件中设置: ```conf general = { latency_offset = 1000; // 单位:毫秒 }; ``` --- ### 四、最终解决方案矩阵 | 现象 | 原因 | 修复方案 | |------|------|----------| | **服务启动失败** | PulseAudio设备名错误 | `pactl list sinks` 确认设备名 | | **AirPlay不可见** | Avahi未广播 | 检查`/etc/avahi/avahi-daemon.conf`中的`allow-interfaces` | | **有连接无声音** | 输出路由错误 | 创建`module-loopback`手动路由 | | **音频断续** | 缓冲区不足 | 增加`latency_offset`值并重启 | > **技术引用**: > - PulseAudio虚拟设备需匹配ALSA物理端点[^1] > - Shairport-Sync的同步算法依赖NTP时间戳[^2] > - Avahi服务发现依赖mDNS协议(端口5353/UDP)[^3] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值