Wir haben einen langen Python -Code, der das Video in mehrere Teile einbricht und die Geschwindigkeit mithilfe von SetPTs -Filter .
ändertimport ffmpeg
ffmpeg.input(segment_path).filter("setpts", f"{1/speed_factor}*PTS").output(
adjusted_segment_path,vcodec="h264_nvenc", acodec="aac",preset="fast", crf=23, g=30, keyint_min=30, sc_threshold=0,r=30,vsync='cfr',threads=1
).global_args("-hwaccel", "cuda").run(quiet=True, overwrite_output=True,capture_stdout=True, capture_stderr=True)
< /code>
Nun, da dies mehrmals vor der Verkettung geschieht, dachten wir, anstelle einer sequentiellen Verarbeitung unter Verwendung eines Threadpools kann dies dazu beitragen.import ffmpeg
import concurrent.futures
def process_video(segment_path, adjusted_segment_path, speed_factor):
ffmpeg.input(segment_path).filter("setpts", f"{1/speed_factor}*PTS").output(
adjusted_segment_path,
vcodec="h264_nvenc",
acodec="aac",
preset="fast",
crf=23,
g=30,
keyint_min=30,
sc_threshold=0,
r=30,
vsync='cfr',
threads=1
).global_args("-hwaccel", "cuda").run(
quiet=True, overwrite_output=True, capture_stdout=True, capture_stderr=True
)
segment_paths = ["input1.mp4", "input2.mp4", "input3.mp4"] # List of input video segments
output_paths = ["output1.mp4", "output2.mp4", "output3.mp4"] # Corresponding output paths
speed_factor = 1.5
# Using ThreadPoolExecutor for concurrent processing
with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
futures = [
executor.submit(process_video, seg, out, speed_factor)
for seg, out in zip(segment_paths, output_paths)
]
# Wait for all tasks to complete
for future in concurrent.futures.as_completed(futures):
try:
future.result() # This will raise any exceptions encountered in the thread
except Exception as e:
print(f"Error processing video: {e}")
< /code>
, aber die erforderliche Zeit verringerte sich nicht. Zuvor war es auch 50 Sekunden für einen langen Videoeingang, es bleibt auch gleich. Version: 12.4, NVCC CUDA Toolkit liegt ebenfalls bei 12.4
Wie kann ich FFMPEG -SETPTS -Filter bei der Verwendung von GPU parallelisieren? ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post
-
-
So führen Sie FFMPEG mit einem kompilierten FFMPEG -Glas auf Android aus
by Anonymous » » in Android - 0 Replies
- 19 Views
-
Last post by Anonymous
-
-
-
Parallel einer Liste der nachfolgenden API -Aufrufe in Python parallelisieren
by Anonymous » » in Python - 0 Replies
- 18 Views
-
Last post by Anonymous
-