mirror of
https://github.com/Wan-Video/Wan2.1.git
synced 2025-11-04 14:16:57 +00:00
fixed fmpeg crasg on linux
This commit is contained in:
parent
7b6c6e11b5
commit
b2c3416bcd
@ -488,6 +488,8 @@ def extract_audio_tracks(source_video, verbose=False, query_only=False):
|
|||||||
return file_paths, metadata
|
return file_paths, metadata
|
||||||
|
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
def combine_and_concatenate_video_with_audio_tracks(
|
def combine_and_concatenate_video_with_audio_tracks(
|
||||||
@ -516,10 +518,10 @@ def combine_and_concatenate_video_with_audio_tracks(
|
|||||||
if source_audio_duration == 0:
|
if source_audio_duration == 0:
|
||||||
if n:
|
if n:
|
||||||
inputs += ['-i', n]
|
inputs += ['-i', n]
|
||||||
filters.append(f'[{idx}:a]apad=pad_dur=100[aout{i}];')
|
filters.append(f'[{idx}:a]apad=pad_dur=100[aout{i}]')
|
||||||
idx += 1
|
idx += 1
|
||||||
else:
|
else:
|
||||||
filters.append(f'anullsrc=r={audio_sampling_rate}:cl=mono,apad=pad_dur=100[aout{i}];')
|
filters.append(f'anullsrc=r={audio_sampling_rate}:cl=mono,apad=pad_dur=100[aout{i}]')
|
||||||
else:
|
else:
|
||||||
if s:
|
if s:
|
||||||
inputs += ['-i', s]
|
inputs += ['-i', s]
|
||||||
@ -533,32 +535,32 @@ def combine_and_concatenate_video_with_audio_tracks(
|
|||||||
if needs_filter:
|
if needs_filter:
|
||||||
filters.append(
|
filters.append(
|
||||||
f'[{idx}:a]aresample={audio_sampling_rate},aformat=channel_layouts=mono,'
|
f'[{idx}:a]aresample={audio_sampling_rate},aformat=channel_layouts=mono,'
|
||||||
f'apad=pad_dur={source_audio_duration},atrim=0:{source_audio_duration},asetpts=PTS-STARTPTS[s{i}];')
|
f'apad=pad_dur={source_audio_duration},atrim=0:{source_audio_duration},asetpts=PTS-STARTPTS[s{i}]')
|
||||||
else:
|
else:
|
||||||
filters.append(
|
filters.append(
|
||||||
f'[{idx}:a]apad=pad_dur={source_audio_duration},atrim=0:{source_audio_duration},asetpts=PTS-STARTPTS[s{i}];')
|
f'[{idx}:a]apad=pad_dur={source_audio_duration},atrim=0:{source_audio_duration},asetpts=PTS-STARTPTS[s{i}]')
|
||||||
if lang := meta.get('language'):
|
if lang := meta.get('language'):
|
||||||
metadata_args += ['-metadata:s:a:' + str(i), f'language={lang}']
|
metadata_args += ['-metadata:s:a:' + str(i), f'language={lang}']
|
||||||
idx += 1
|
idx += 1
|
||||||
else:
|
else:
|
||||||
filters.append(
|
filters.append(
|
||||||
f'anullsrc=r={audio_sampling_rate}:cl=mono,atrim=0:{source_audio_duration},asetpts=PTS-STARTPTS[s{i}];')
|
f'anullsrc=r={audio_sampling_rate}:cl=mono,atrim=0:{source_audio_duration},asetpts=PTS-STARTPTS[s{i}]')
|
||||||
|
|
||||||
if n:
|
if n:
|
||||||
inputs += ['-i', n]
|
inputs += ['-i', n]
|
||||||
start = '0' if new_audio_from_start else source_audio_duration
|
start = '0' if new_audio_from_start else source_audio_duration
|
||||||
filters.append(
|
filters.append(
|
||||||
f'[{idx}:a]aresample={audio_sampling_rate},aformat=channel_layouts=mono,'
|
f'[{idx}:a]aresample={audio_sampling_rate},aformat=channel_layouts=mono,'
|
||||||
f'atrim=start={start},asetpts=PTS-STARTPTS[n{i}];'
|
f'atrim=start={start},asetpts=PTS-STARTPTS[n{i}]')
|
||||||
f'[s{i}][n{i}]concat=n=2:v=0:a=1[aout{i}];')
|
filters.append(f'[s{i}][n{i}]concat=n=2:v=0:a=1[aout{i}]')
|
||||||
idx += 1
|
idx += 1
|
||||||
else:
|
else:
|
||||||
filters.append(f'[s{i}]apad=pad_dur=100[aout{i}];')
|
filters.append(f'[s{i}]apad=pad_dur=100[aout{i}]')
|
||||||
|
|
||||||
maps += ['-map', f'[aout{i}]']
|
maps += ['-map', f'[aout{i}]']
|
||||||
|
|
||||||
cmd = ['ffmpeg', '-y', *inputs,
|
cmd = ['ffmpeg', '-y', *inputs,
|
||||||
'-filter_complex', ''.join(filters),
|
'-filter_complex', ';'.join(filters), # ✅ Only change made
|
||||||
*maps, *metadata_args,
|
*maps, *metadata_args,
|
||||||
'-c:v', 'copy',
|
'-c:v', 'copy',
|
||||||
'-c:a', audio_codec,
|
'-c:a', audio_codec,
|
||||||
@ -567,7 +569,7 @@ def combine_and_concatenate_video_with_audio_tracks(
|
|||||||
'-ac', '1',
|
'-ac', '1',
|
||||||
'-shortest', save_path_tmp]
|
'-shortest', save_path_tmp]
|
||||||
|
|
||||||
if verbose :
|
if verbose:
|
||||||
print(f"ffmpeg command: {cmd}")
|
print(f"ffmpeg command: {cmd}")
|
||||||
try:
|
try:
|
||||||
subprocess.run(cmd, check=True, capture_output=True, text=True)
|
subprocess.run(cmd, check=True, capture_output=True, text=True)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user