arv*_*nd8 2 python subprocess ffmpeg audio-video-sync
我正在尝试创建一个 python 脚本,将音频和视频文件合并到一个(音频+视频)文件中。
我正在使用 ffmpeg 来实现此目的,但它不起作用,并且出现错误。运行此脚本时,这里是我的脚本。
import os
import subprocess
import time
from datetime import datetime
def merge_all():
global p
p =subprocess.Popen('ffmpeg -i temp_vid.mp4 -i temp_voice.wav -c:v copy -c:a aac -strict experimental -
strftime 1 ' + dt_file_name ,stdin=subprocess.PIPE,creationflags = subprocess.CREATE_NO_WINDOW)
time.sleep(2)
print('merging done')
os.remove('temp_vid.mp4')
os.remove('temp_voice.wav')
print('file delete done')>
Run Code Online (Sandbox Code Playgroud)
这是错误
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\kp\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "C:\Users\kp\Desktop\test.py", line 179, in change_icon
merge_all()
File "C:\Users\kp\Desktop\test.py", line 104, in merge_all
p =subprocess.Popen('ffmpeg -i temp_vid.mp4 -i temp_voice.wav -c:v copy -c:a aac -strict experimental -strftime 1 ' + dt_file_name ,stdin=subprocess.PIPE,creationflags = subprocess.CREATE_NO_WINDOW)
File "C:\Users\kp\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\kp\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)
小智 5
这是在您的环境中安装 pip install ffmpeg-python 后的 python 代码:
import ffmpeg
input_video = ffmpeg.input('./test_Directory/test.webm')
input_audio = ffmpeg.input('./test_Directory/test.webm')
ffmpeg.concat(input_video, input_audio, v=1, a=1).output('./test_Directory/complete.mp4').run()
Run Code Online (Sandbox Code Playgroud)
或者
video = ffmpeg.input('video.mp4')
audio = ffmpeg.input('audio.wav')
out = ffmpeg.output(video, audio, video_path, vcodec='copy', acodec='aac', strict='experimental')
out.run()
Run Code Online (Sandbox Code Playgroud)
或者
cmd = 'ffmpeg -y -i Audio.wav -r 30 -i Video.h264 -filter:a aresample=async=1 -c:a flac -c:v copy av.mkv'
subprocess.call(cmd, shell=True)
print('Mixing Done')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7409 次 |
| 最近记录: |