
FFmpeg의 공식 다운로드 페이지는 다음과 같습니다.http://ffmpeg.org/download.html
Windows의 경우 다음으로 연결됩니다.https://ffmpeg.zeranoe.com/builds/
지금은 두 페이지를 모두 주의 깊게 연구했지만 다음 작업을 자동화할 수 있는 방법을 찾을 수 없습니다.
- FFmepg의 현재 안정 버전이 무엇인지 확인합니다.
- 현재 안정 버전에 대한 Windows 아카이브의 URL을 결정합니다.
로컬로 입력하는 경우:
ffmpeg.exe -version
다음과 같이 출력됩니다.
ffmpeg version N-94664-g0821bc4eee Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.1.1 (GCC) 20190807
"N-94664-g0821bc4eee"가 현재 버전인 것 같습니다. 에헴. 나는 솔직히 왜 그들이 간단한 "1.2.3" 구성표를 사용할 수 없는지 이해하지 못하지만 현재 버전이 다음과 같은지 확인해 보겠습니다.다른정수 또는 정상적인 버전 문자열로 "비교"하려고 시도하는 대신 최신 안정 버전으로 결정된 모든 것에서.
방금 ExifTool을 사용하여 동일한 작업을 수행했지만 최소한 현재 최신 버전을 표시하는 간단한 URL이 있었고 바이너리가 포함된 Windows ZIP 파일에 대해 예측 가능한 URL 체계가 있었습니다. FFmpeg의 경우에는 그렇지 않습니다. 이는 나에게 정말 이상합니다.
(초콜릿리를 사용하라고 말하지 마세요.)
답변1
아래 답변에서는 Zeranoe에서 제공하는 FFmpeg 빌드에 중점을 두고 있습니다. 이 정보는 2020년 7월 기준 최신 정보입니다. 혹시라도 놓치거나 이미 알고 계시는 내용을 다루더라도 양해해 주시기 바랍니다. =)
TL;DR
Zeranoe에는 GPL 3.0에 따라 라이센스가 부여된 최신 Git 빌드에 대한 "최신" 빌드 .zip
파일이 있습니다(이 파일은 며칠마다 업데이트된다고 생각합니다). 정적으로 연결된 버전에 만족한다면 다음에서 얻을 수 있습니다.
https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-latest-win32-static.zip
https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-latest-win64-static.zip
정적으로 연결된 빌드만 사용 가능한 빌드는 아닙니다. 특히 위의 URL 대신 shared
(공유 라이브러리의 경우) 또는 dev
(개발 버전의 경우)을 사용하여 해당 Git 빌드에 액세스할 수도 있습니다.static
불행하게도 Git이 아닌 일반 릴리스 버전("현재 안정 버전"이라고 가정함)의 경우 자동으로 업데이트되는 동등한 파일을 찾을 수 없는 것 같습니다. 따라서 최신 버전의 HTML을 검사하는 데 어려움을 겪을 가능성이 높습니다.
개요
다음 작업을 자동화할 수 있는 방법이 없습니다 [...]
현재 안정 버전 확인
위에 자세히 설명된 "최신" Git 버전 파일을 사용하고 싶지 않다고 가정하면 .zip
(현재) 기본 프로세스는 스크립트(또는 스크립트)를 사용하여 다음을 수행하는 것입니다.
Zeranoe에서 특정 HTML 페이지를 다운로드합니다.
<a>
해당 페이지에서 요소 만 추출합니다 .해당 요소의 텍스트를 사용하여
<a>
다운로드하려는 FFmpeg의 Git이 아닌 릴리스 버전을 결정하세요.해당 버전 정보가 포함된 스크립트 결정 URL을 일부 다운로드 도구(아마도 스크립트 자체)에 제공합니다.
첫 번째 단계에 대한 자세한 내용은 다음을 참조하세요.페이지 소스 옵션이 답변의 끝부분에 있는 섹션입니다. 또한 해당 섹션 뒤에는 <a>
텍스트 요소 추출 에 도움이 될 수 있는 최소한의 PowerShell 예제도 포함했습니다 . <a>
현재 관련 HTML 페이지 소스의 어떤 요소도 전체 다운로드 URL을 보유하지 않는 것으로 나타납니다.
Zeranoe는 일반 릴리스와 Git 릴리스 모두에 대한 릴리스 목록을 자동으로 주문하는 것으로 보이므로 요소나 파일 이름을 개별적으로 분석하고 싶지 않은 경우 <a>
단순히 Git이 아닌 최신 버전을 결정하기 위해 설정된 위치를 사용하여 속임수를 쓸 수 있습니다.
즉, Git이 아닌 최신 FFmpeg 버전/파일 이름은 현재 <a>
페이지 소스의 첫 번째 요소( 렌더링된 버전의 경우 ) 또는 페이지 소스의 https://ffmpeg.zeranoe.com/builds/
마지막에서 두 번째/마지막에서 세 번째 요소( <a>
서버에서 생성된 디렉토리 목록의 경우).
Windows 아카이브 URL 결정
나는 좋은 방법이 있다고 믿지 않는다자동으로특정 릴리스에 대한 Windows 아카이브의 URL을 확인합니다. 사이트가 현재 어떻게 구성되어 있는지에 대한 관찰에만 의존해야 할 것입니다. 즉, 다운로드 스크립트에 URL 구성 방법을 알려주어야 할 수도 있습니다.
버전 이름
현재 상황만 말하면FFmpeg는 Zeranoe에서 빌드됩니다., 요소 텍스트에서 최신 버전의 FFmpeg를 결정하는 것은 <a>
그리 어렵지 않습니다.
일반 릴리스의 경우 간단한 "1.2.3" 구성표(귀하가 참조한 대로)가 사용됩니다. 그래서 예. 버전이
4.3
버전보다 최신입니다4.2.3
.최신 Git 빌드(위의 "주요" 버전 사이에 릴리스됨)의 경우 현재 구성표는 빌드 날짜(
year/month/day-gitstuff
)로 표시하는 것입니다.
Git 빌드가 로 표시되었다고 가정하면 20200628-4cfcfb3
대시 뒤의 부분(예: -4cfcfb3
)이 삭제되어 20200628
이 버전의 FFmpeg가 06-28-2020(또는 위치에 따라 아마도 28-06-2020)에 빌드되었다는 결론을 내릴 수 있습니다. 당신은 살고 있습니다).
을 입력하면
ffmpeg.exe -version
[...]이 출력됩니다.
Zeranoe의 Windows용 FFmpeg 최신 버전은 -version
웹 사이트에 나열된 버전 이름과 동일한 배너 명명 체계를 사용합니다.
전. Zeranoe FFmpeg 배너
ffmpeg version 4.3 Copyright (c) 2000-2020 ...
ffmpeg version git-2020-06-28-4cfcfb3 Copyright (c) 2000-2020 ...
URL 형식 다운로드
방금 ExifTool을 사용하여 동일한 작업을 수행했지만 최소한 현재 최신 버전을 표시하는 간단한 URL이 있었고 바이너리가 포함된 Windows ZIP 파일에 대해 예측 가능한 URL 체계가 있었습니다. FFmpeg의 경우에는 그렇지 않습니다. 이는 나에게 정말 이상합니다.
즉시 명확하지 않을 수도 있지만 모든 JavaScript가 https://ffmpeg.zeranoe.com/builds/
수행하는 작업은 기본 "빌드 다운로드" 버튼(페이지 하단 근처)에 연결된 URL을 즉시 "재구성"하여 이를 다른 정적 다운로드 옵션에 연결하는 것입니다.
몇 가지 다른 옵션을 살펴보면 최종 다운로드 URL의 구성은 매우 간단합니다.
전. Zeranoe FFmpeg 다운로드 URL 구축
url/platform/linking/ffmpeg-version-platform-linking(.zip)(-lgpl.zip)
어디:
url
이다https://ffmpeg.zeranoe.com/builds/
.platform
은 세 가지 옵션 중 하나입니다:win64
,win32
또는macos64
.linking
은 세 가지 옵션 중 하나입니다:static
,shared
또는dev
.ffmpeg
그냥 "ffmpeg"입니다.version
버전입니다(예:4.3
또는20200628-4cfcfb3
).추가한다는 것은
.zip
FFmpeg 버전이 GPL 3.0 라이센스를 따른다는 것을 의미하고, 추가한다는 것은-lgpl.zip
FFmpeg 버전이 LGPL 3.0 라이센스를 따른다는 것을 의미합니다.
따라서 누군가가 다운로드를 원한다고 가정해 보겠습니다.
- Windows 64비트, 공유 라이브러리, FFmpeg 4.3의 LGPL 3.0 라이센스 버전
- FFmpeg Git 빌드 20200628-4cfcfb3의 Windows 32비트, 정적으로 링크된 GPL 3.0 라이선스 버전
이러한 URL은 다음과 같습니다.
전. Zeranoe FFmpeg URL
https://ffmpeg.zeranoe.com/builds/win64/shared/ffmpeg-4.3-win64-shared-lgpl.zip
https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-20200628-4cfcfb3-win32-static.zip
LGPL 3.0 라이선스는 Zeranoe에서 배포하는 Git 버전이 아닌 FFmpeg에서만 사용할 수 있는 것으로 보입니다. 그래서 예. ffmpeg-20200628-4cfcfb3-win32-static-lgpl.zip
유효하지 않습니다.
SHA256 체크섬
특정 다운로드에 적합한 SHA256 파일에 대한 링크는 기본 파일과 끝에 ".sha256"이 추가된 "sha256"이 삽입된 기본적으로 동일한 URL 구성 url
입니다 platform
.
전. Zeranoe SHA256 URL 구축
url/sha256/platform/linking/ffmpeg-version-platform-linking(.zip)(-lgpl.zip).sha256
위 파일에 해당하는 SHA256 URL은 다음과 같습니다.
전. Zeranoe FFmpeg SHA256 URL
https://ffmpeg.zeranoe.com/builds/sha256/win64/shared/ffmpeg-4.3-win64-shared-lgpl.zip.sha256
https://ffmpeg.zeranoe.com/builds/sha256/win32/static/ffmpeg-20200628-4cfcfb3-win32-static.zip.sha256
페이지 소스 옵션
FFmpeg 버전 정보는 <a>
Zeranoe의 관련 HTML 페이지 소스에 있는 (앵커) 요소에 일반 텍스트로 포함되어 있습니다. https://ffmpeg.zeranoe.com/builds/
특정 빌드에 대해 렌더링된 버전이나 서버에서 생성된 디렉터리 목록을 사용하여 이러한 <a>
요소를 제공할 수 있지만 알아야 할 몇 가지 사항이 있습니다.
ffmpeg.zeranoe.com/builds/ 사용
https://ffmpeg.zeranoe.com/builds/
현재 버전 정보를 수집하는 데 사용하면 몇 가지 단점이 있습니다.
<a>
버전 정보를 보유하는 요소에는 버전 정보만 포함됩니다.<a role="menuitem" href="#" target="_self" class="dropdown-item">4.3</a>
이는 원하는 다운로드에 대한 파일 이름을 직접 구성해야 함을 의미합니다.
<a>
의 요소는https://ffmpeg.zeranoe.com/builds/
모두 버전 번호만은 아닙니다. 각<a>
태그는 플라이아웃/드롭다운 텍스트를 지정합니다. 즉, 스크립트에서 버전 번호를 수동으로 정렬해야 합니다.<a>
의 요소는https://ffmpeg.zeranoe.com/builds/
웹페이지가 브라우저 창에 표시되는 경우에만 (JavaScript를 통해) 렌더링됩니다.
이 마지막 항목은 일반 명령줄 도구(예: , 등)를 사용하여 페이지 소스를 수집할 수 없음을 의미합니다 curl
( wget
파일 https://ffmpeg.zeranoe.com/builds/
다운로드에는 계속 사용할 수 있음). 브라우저 자동화의 경우(예: 페이지 소스를셀레늄 웹드라이버, 다음 Save As
과 같은 것으로 리깅오토핫키등), 브라우저 창이 표시되어야 합니다(즉, headless
Firefox/Chrome 및 Selenium에서는 모드를 사용할 수 없습니다).
서버에서 생성된 디렉토리 목록 사용
위에 나열된 단점으로 인해 HTML 페이지 소스를 구문 분석하는 것은 https://ffmpeg.zeranoe.com/builds/
바람직한 옵션이 아닐 수 있습니다. 현재 https://ffmpeg.zeranoe.com/builds/
다음과 같은 형식을 사용하여 공개적으로 사용 가능한 여러 웹 디렉토리에 대한 단순한 프런트 엔드입니다.
전. Zeranoe FFmpeg 디렉토리
url/platform/linking
그리고
전. Zeranoe SHA256 디렉터리
url/sha256/platform/linking
여기서 (다시):
url
이다https://ffmpeg.zeranoe.com/builds/
.platform
은 세 가지 옵션 중 하나입니다:win64
,win32
또는macos64
.linking
은 세 가지 옵션 중 하나입니다:static
,shared
또는dev
.
그래서모두예를 들어 Zeranoe에서 호스팅하는 Windows 32비트 정적으로 링크된 빌드(및 해당 SHA256 체크섬)의 전체 디렉토리 목록은 다음에서 확인할 수 있습니다.
전. Zeranoe Windows 32비트 정적으로 링크된 빌드
https://ffmpeg.zeranoe.com/builds/win32/static/
https://ffmpeg.zeranoe.com/builds/sha256/win32/static/
<a>
이러한 목록에는 JavaScript가 포함되어 있지 않으므로(일반 HTML을 반환함) 브라우저에서 먼저 렌더링하지 않고도 필요한 요소를 추출할 수 있습니다 .
<a href="ffmpeg-4.3-win32-dev.zip">ffmpeg-4.3-win32-dev.zip</a>
이는 잠재적으로 누락되지 않으며 각 디렉토리 목록의 페이지 소스를 명령줄 도구(예: , 등)를 사용하여 가져올 수 있음을 의미 curl
합니다 wget
.
사소한 주의 사항으로 curl -O
( --remote-name
)를 사용하면 원격 디렉터리를 가져오는 데 실패하게 됩니다. 출력 파일의 이름을 수동으로 지정해야 합니다(예: curl -o zeranoe_win32.html https://ffmpeg.zeranoe.com/builds/win32/static/
).
파워셸 예
<a>
PowerShell의 Zeranoe에서 서버 생성 디렉터리 목록의 요소 텍스트 가져오기 :
전. extract_anchor_text.ps1
# Print the text associated with each <a> element for the given Zeranoe
# server-generated directory listing at the command line.
$SiteAdress = "https://ffmpeg.zeranoe.com/builds/win32/static/"
$HttpContent = Invoke-WebRequest -URI $SiteAdress
# Get the href= value for each link
# $HttpContent.Links | Foreach {$_.href }
# Get the inner text between <a> and <\a> for each link
$HttpContent.Links | innerText
이 경우 값의 텍스트는 및 href=
사이의 텍스트와 동일합니다 (앞서 설명한 대로 현재 관련 요소에는 전체 다운로드 URL이 포함되어 있지 않습니다).<a>
<\a>
<a>
전. extract_anchor_text.ps1 출력(명령줄)
[...]
ffmpeg-20200626-7447045-win32-static.zip
ffmpeg-20200628-4cfcfb3-win32-static.zip
[...]
ffmpeg-4.3-win32-static-lgpl.zip
ffmpeg-4.3-win32-static.zip
PowerShell을 사용하여 HTML 웹 페이지를 구문 분석하는 방법에 대해 좀 더 자세히 알아보려면 이 예제를 가져온 링크를 방문하세요.여기.