使用临时文件的方式可以实现,但是会增加读写磁盘的次数
[Python] 纯文本查看 复制代码 import subprocess
import os
# 假设 video_resp 和 audio_resp 是你通过 requests 获取到的字节流
video_resp = b'...' # 视频字节流
audio_resp = b'...' # 音频字节流
# 创建两个子进程来分别处理视频和音频流
video_process = subprocess.Popen(
['ffmpeg', '-f', 'mp4', '-i', 'pipe:0', '-vcodec', 'copy', '-y', 'temp_video.mp4'],
stdin=subprocess.PIPE
)
audio_process = subprocess.Popen(
['ffmpeg', '-f', 'mp3', '-i', 'pipe:0', '-acodec', 'copy', '-y', 'temp_audio.mp3'],
stdin=subprocess.PIPE
)
# 将视频和音频字节流分别写入子进程的 stdin
video_process.stdin.write(video_resp)
video_process.stdin.close()
audio_process.stdin.write(audio_resp)
audio_process.stdin.close()
# 等待子进程完成
video_process.wait()
audio_process.wait()
# 合并视频和音频
merge_process = subprocess.Popen(
['ffmpeg', '-i', 'temp_video.mp4', '-i', 'temp_audio.mp3', '-vcodec', 'copy', '-acodec', 'copy', '-y', 'video_with_audio.mp4']
)
merge_process.wait()
# 删除临时文件
os.remove('temp_video.mp4')
os.remove('temp_audio.mp3')
|