我有一个在线音频流在https://iceant.antfarm.co.za/edenfm. 您只需将音频流粘贴到浏览器中即可收听音频。我的问题是:“如何确定流的音频格式?这可以用linux命令完成吗?
3pmvbmvn1#
你可以用它来做这个 curl 通过仅获取具有 -I 或 --head 选项可以根据响应中的内容类型确定音频格式。
curl
-I
--head
curl -I https://iceant.antfarm.co.za/EdenFM
具有 grep 您可以筛选相关行:
grep
curl -I -s https://iceant.antfarm.co.za/EdenFM | grep -i "^Content-Type:"
哪个输出:
Content-Type: audio/aac
当然,在java中也可以通过发送 HEAD 请求所需的端点:
HEAD
URL url = new URL("https://iceant.antfarm.co.za/EdenFM"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("HEAD"); con.connect(); String contentType = con.getContentType(); System.out.println(contentType); // output: audio/aac
以下是java 11中新httpclient的版本:
HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://iceant.antfarm.co.za/EdenFM")) .method("HEAD", HttpRequest.BodyPublishers.noBody()) .build(); HttpResponse<Void> response = client.send(request, HttpResponse.BodyHandlers.discarding()); HttpHeaders headers = response.headers(); headers.firstValue("Content-Type").ifPresent(System.out::println); // output: audio/aac
根据服务器、java版本和其他因素,您可能需要克服ssl/tls证书的一些额外障碍。
bxgwgixi2#
您使用tag::java标记问题,但您的问题只提到一个shell命令,因此您可以:
$ curl -I https://iceant.antfarm.co.za/EdenFM
将为您提供:
HTTP/1.1 200 OK Content-Type: audio/aac Date: Thu, 08 Jul 2021 13:33:16 GMT icy-description:EDEN FM – Your Voice in Paradise icy-genre:Various icy-metadata:1 icy-name:EdenFM icy-pub:1 Server: Icecast 2.4.0-kh13 Cache-Control: no-cache, no-store Access-Control-Allow-Origin: * Access-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type Access-Control-Allow-Methods: GET, OPTIONS, HEAD Connection: Close Expires: Mon, 26 Jul 1997 05:00:00 GMT
当然,相关的路线是:
你可以通过grep得到。
2条答案
按热度按时间3pmvbmvn1#
你可以用它来做这个
curl
通过仅获取具有-I
或--head
选项可以根据响应中的内容类型确定音频格式。具有
grep
您可以筛选相关行:哪个输出:
当然,在java中也可以通过发送
HEAD
请求所需的端点:以下是java 11中新httpclient的版本:
根据服务器、java版本和其他因素,您可能需要克服ssl/tls证书的一些额外障碍。
bxgwgixi2#
您使用tag::java标记问题,但您的问题只提到一个shell命令,因此您可以:
将为您提供:
当然,相关的路线是:
你可以通过grep得到。