Skip to content

Commit d835de6

Browse files
committed
Use pre-built binaries for ffmpeg extension
1 parent ca66a1d commit d835de6

File tree

5 files changed

+76
-272
lines changed

5 files changed

+76
-272
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ if (BUILD_SOX)
171171
add_subdirectory(torchaudio/csrc/sox)
172172
endif()
173173
if (USE_FFMPEG)
174+
add_subdirectory(third_party/ffmpeg)
174175
add_subdirectory(torchaudio/csrc/ffmpeg)
175176
endif()
176177
if (BUILD_CUDA_CTC_DECODER)

cmake/FindFFMPEG.cmake

Lines changed: 0 additions & 264 deletions
This file was deleted.

third_party/ffmpeg/CMakeLists.txt

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
################################################################################
2+
# This file defines the following FFmpeg libraries using pre-built binaries.
3+
4+
add_library(ffmpeg4 INTERFACE)
5+
add_library(ffmpeg ALIAS ffmpeg4)
6+
7+
################################################################################
8+
9+
include(FetchContent)
10+
11+
set(base_url https://pytorch.s3.amazonaws.com/torchaudio/ffmpeg/2023-07-06)
12+
13+
if (APPLE)
14+
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
15+
FetchContent_Declare(
16+
f4
17+
URL ${base_url}/macos_arm64/4.1.8.tar.gz
18+
URL_HASH SHA256=0ada555024d2ac9eee1e5072a61c893d6d326fc01557291474fd60e49f567055
19+
)
20+
else()
21+
FetchContent_Declare(
22+
f4
23+
URL ${base_url}/macos_x86_64/4.1.8.tar.gz
24+
URL_HASH SHA256=7e7118a9ec73910f6af8c9b51a26b58c05fe844250ee642f1cb298f919710f34
25+
)
26+
endif()
27+
elseif (UNIX)
28+
FetchContent_Declare(
29+
f4
30+
URL ${base_url}/linux/4.1.8.tar.gz
31+
URL_HASH SHA256=8066a8fc49ebd5b2a0b444b6095aa84bd4c16deddf7503039891ceac5cf6fcc8
32+
)
33+
elseif(MSVC)
34+
FetchContent_Declare(
35+
f4
36+
URL ${base_url}/windows/4.1.8.tar.gz
37+
URL_HASH SHA256=ddf2185b2938149179063172b8d0da4f3ba5f545c29568e913e7f2aa623011fe
38+
)
39+
endif()
40+
41+
FetchContent_MakeAvailable(f4)
42+
target_include_directories(ffmpeg4 INTERFACE ${f4_SOURCE_DIR}/include)
43+
44+
if(APPLE)
45+
target_link_libraries(
46+
ffmpeg4
47+
INTERFACE
48+
${f4_SOURCE_DIR}/lib/libavutil.56.dylib
49+
${f4_SOURCE_DIR}/lib/libavcodec.58.dylib
50+
${f4_SOURCE_DIR}/lib/libavformat.58.dylib
51+
${f4_SOURCE_DIR}/lib/libavdevice.58.dylib
52+
${f4_SOURCE_DIR}/lib/libavfilter.7.dylib
53+
)
54+
elseif (UNIX)
55+
target_link_libraries(
56+
ffmpeg4
57+
INTERFACE
58+
${f4_SOURCE_DIR}/lib/libavutil.so.56
59+
${f4_SOURCE_DIR}/lib/libavcodec.so.58
60+
${f4_SOURCE_DIR}/lib/libavformat.so.58
61+
${f4_SOURCE_DIR}/lib/libavdevice.so.58
62+
${f4_SOURCE_DIR}/lib/libavfilter.so.7
63+
)
64+
elseif(MSVC)
65+
target_link_libraries(
66+
ffmpeg4
67+
INTERFACE
68+
${f4_SOURCE_DIR}/bin/avutil.lib
69+
${f4_SOURCE_DIR}/bin/avcodec.lib
70+
${f4_SOURCE_DIR}/bin/avformat.lib
71+
${f4_SOURCE_DIR}/bin/avdevice.lib
72+
${f4_SOURCE_DIR}/bin/avfilter.lib
73+
)
74+
endif()

tools/setup_helpers/extension.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def _get_build(var, default=False):
3636
_BUILD_SOX = False if platform.system() == "Windows" else _get_build("BUILD_SOX", True)
3737
_BUILD_RIR = _get_build("BUILD_RIR", True)
3838
_BUILD_RNNT = _get_build("BUILD_RNNT", True)
39-
_USE_FFMPEG = _get_build("USE_FFMPEG", False)
39+
_USE_FFMPEG = _get_build("USE_FFMPEG", True)
4040
_USE_ROCM = _get_build("USE_ROCM", torch.backends.cuda.is_built() and torch.version.hip is not None)
4141
_USE_CUDA = _get_build("USE_CUDA", torch.backends.cuda.is_built() and torch.version.hip is None)
4242
_BUILD_ALIGN = _get_build("BUILD_ALIGN", True)

torchaudio/csrc/ffmpeg/CMakeLists.txt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,3 @@
1-
message(STATUS "FFMPEG_ROOT=$ENV{FFMPEG_ROOT}")
2-
find_package(FFMPEG 4.1 REQUIRED COMPONENTS avdevice avfilter avformat avcodec avutil)
3-
add_library(ffmpeg INTERFACE)
4-
target_include_directories(ffmpeg INTERFACE "${FFMPEG_INCLUDE_DIRS}")
5-
target_link_libraries(ffmpeg INTERFACE "${FFMPEG_LIBRARIES}")
6-
7-
81
set(
92
sources
103
ffmpeg.cpp

0 commit comments

Comments
 (0)