파이프 없이 youtube-dl과 VLC 결합

파이프 없이 youtube-dl과 VLC 결합

youtube-dl -o - <webpage> | vlc -VLC에 비디오를 표시합니다. 그러나 영상은관로(그런 식으로 fd://0) 앞으로/뒤로 점프할 가능성을 억제합니다.

그러나 youtube-dl -j <webpage>여러 "url" 속성을 포함하는 JSON 데이터가 나열됩니다. 이렇게 하면 vlc <url>VLC는 이제 로컬 비디오를 재생하는 것처럼 비디오 길이, 점프 등을 표시합니다.

질문: 이제 URL을 추출하기 위한 작은 Python 스크립트를 작성하는 것이 전적으로 가능합니다. 하지만 간단한 Bash(가급적 한 줄의 코드)를 사용하여 이 작업을 수행하는 쉬운 방법이 있습니까?

참고: youtube-dl -j다양한 품질의 비디오 스트림이 나열되어 있으므로 최고 품질의 비디오를 선택하는 것이 가장 좋습니다.

답변1

셸에서 JSON을 구문 분석하는 것은 일반적으로 좋은 생각이 아닙니다. U&L의 거의 모든 질문에 대한 대답은 "셸에서 이 JSON을 어떻게 구문 분석합니까?"라는 것을 쉽게 찾을 수 있으며, 이는 특수 도구(예:jq또는jshon).

youtube-dl그렇기 때문에 사용 가능한 비디오 버전이 여러 개 있을 때 비디오 버전을 선택하고 해당 URL을 다운로드하는 대신 표준 출력으로 인쇄하는 기능을 활용하는 것이 좋습니다.

  • --format또는 -f: 형식을 지정할 수 있습니다. 최고의 품질을 얻으려면 best. 실제로 귀하의 경우 다음과 같은 이유로 이것이 필요하지 않을 수도 있습니다(man 페이지 참조 youtube-dl(1)).

    기본적으로 youtube-dl은 사용 가능한 최상의 품질을 다운로드하려고 시도합니다.

  • --get-url, 또는 -g는 비디오 다운로드를 방지하고 선택한 비디오의 URL만 표준 출력으로 인쇄합니다.

그런 다음 기능을 활용하여 vlcURL에서 비디오를 재생(및 검색)합니다. URL을 다음으로 전송할 수 있습니다 vlc.

youtube-dl --get-url --format best 'https://www.youtube.com/watch?v=video_id' | vlc -

또는 vlc명령 대체를 사용하여 URL을 인수로 사용하여 호출하세요.

vlc "$(youtube-dl --get-url --format best 'https://www.youtube.com/watch?v=video_id')"

관련 정보