每日教程在另一篇文章《python实现原视频自动添加字幕功能,字幕跟随声音自动显示》介绍了如何自动给原视频添加字幕,前提条件是要先生成字幕文件。本篇文章介绍如何分离原视频音频文件,有了音频文件就可以生成字幕文件了。
要将视频的画面(视频流)和音频分离出来,可以使用几种工具和方法,其中最常用的工具是 FFmpeg,它非常强大且支持多种格式。以下是一些方法来实现视频的画面和音频分离。
1. 使用 FFmpeg 分离视频画面和音频
(1)分离视频画面(视频流)
将视频的画面提取出来,只保留视频流(无音频):
ffmpeg -i input_video.mp4 -an -vcodec copy output_video.mp4
解释:
- -i input_video.mp4:输入的视频文件。
- -an:去除音频流,只保留视频。
- -vcodec copy:视频编码方式,表示直接复制视频流,不重新编码。
- output_video.mp4:输出的视频文件(只包含视频流,没有音频)。
(2)分离音频
将视频的音频提取出来,只保留音频流:
ffmpeg -i input_video.mp4 -vn -acodec copy output_audio.mp3
解释:
- -vn:去除视频流,只保留音频。
- -acodec copy:音频编码方式,表示直接复制音频流,不重新编码。
- output_audio.mp3:输出的音频文件。
(3)分离并指定输出格式
如果需要将音频保存为其他格式,比如 WAV,可以这样做:
ffmpeg -i input_video.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 output_audio.wav
解释:
- -acodec pcm_s16le:指定音频编码为 PCM(无压缩的音频格式)。
- -ar 44100:音频采样率为 44.1kHz(标准音频采样率)。
- -ac 2:音频声道数为 2(立体声)。
2. 使用 Python 和 moviepy 库分离视频和音频
moviepy 是一个 Python 库,允许简便处理视频文件。可以使用 moviepy 来提取视频和音频流。
(1)分离视频流(仅保留画面)
from moviepy.editor import VideoFileClip
# 读取视频文件
video = VideoFileClip("input_video.mp4")
# 提取视频部分并保存为新文件
video.audio = None # 去掉音频
video.write_videofile("output_video_without_audio.mp4", codec="libx264")

(2)分离音频流(仅保留音频)
from moviepy.editor import VideoFileClip
# 读取视频文件
video = VideoFileClip("input_video.mp4")
# 提取音频并保存为新文件
audio = video.audio
audio.write_audiofile("output_audio.mp3")

3. 使用 Python 和 ffmpeg-python 库
ffmpeg-python 是一个 Python 的 FFmpeg 封装库,它使得调用 FFmpeg 更加方便。下面是使用 ffmpeg-python 来分离视频流和音频流的代码示例。
(1)分离视频流(去除音频)
import ffmpeg
def extract_video(input_file, output_file):
ffmpeg.input(input_file).output(output_file, an=None).run()
input_video = "input_video.mp4"
output_video = "output_video_without_audio.mp4"
extract_video(input_video, output_video)
(2)分离音频流(去除视频)
import ffmpeg
def extract_audio(input_file, output_file):
ffmpeg.input(input_file).output(output_file, vn=None).run()
input_video = "input_video.mp4"
output_audio = "output_audio.mp3"
extract_audio(input_video, output_audio)
总结:
- FFmpeg:最强大的工具,可以通过命令行轻松地提取视频画面和音频流。
- MoviePy:适用于 Python 环境中的简单视频编辑操作。
- ffmpeg-python:Python 封装的 FFmpeg,可以直接在 Python 中操作,适合自动化脚本。
可以根据自己的需求选择合适的工具来进行视频和音频的分离。如果需要更多的自定义处理,moviepy 或 ffmpeg-python 可以提供更多灵活性,而如果只是简单的分离任务,FFmpeg 的命令行方式是最直接且高效的。
funclip api识别音频字幕
FunClip是一款阿里巴巴开源的视频字幕识别工具,支持api调用,当前获取到了原视频和原视频的音频后,直接调用FunClip提供的api,等待一两分钟即可识别完成,具体的代码
def __generate_subtitle(video_path, audio_path):
audio_path = __read_audio(video_path, audio_path)
client = Client("http://127.0.0.1:7860/")
result = client.predict(
video_input={"video": file(video_path)},
audio_input=file(audio_path),
hotwords="",
output_dir=" ",
api_name="/mix_recog"
)
print(result)
return result
本地启动FunClip项目

参数说明
http://127.0.0.1:7860/,是本地启动FunClip项目的服务器访问地址video_path,表示本地视频的绝对路径、相对路径或网络的视频url地址audio_path,同理,表示音频的绝对路径、相对路径或网络的音频url地址
验证测试的效果,resul返回的是一个tuple数组,第一个参数是文字信息,第二个参数是字幕信息

最后,我们安装上一篇文章《python实现原视频自动添加字幕功能,字幕跟随声音自动显示》介绍的方法就可以给原视频添加字幕了。
当前文章价值9.56元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

评论已关闭!