本文目录导读:

使用 FFmpeg(最常用)
安装 FFmpeg
# Ubuntu/Debian sudo apt install ffmpeg # macOS brew install ffmpeg # Windows 下载安装包 https://ffmpeg.org/download.html
提取音频脚本
#!/bin/bash
# extract_audio.sh
# 基本提取
ffmpeg -i input.mp4 -vn -acodec copy output.aac
# 提取为 MP3
ffmpeg -i input.mp4 -vn -acodec libmp3lame -q:a 2 output.mp3
# 提取为 WAV
ffmpeg -i input.mp4 -vn -acodec pcm_s16le output.wav
# 提取高质量音频
ffmpeg -i input.mp4 -vn -b:a 320k output.mp3
# 批量提取当前目录所有视频
for file in *.mp4; do
ffmpeg -i "$file" -vn "${file%.mp4}.mp3"
done
Python 脚本
使用 moviepy
# extract_audio.py
from moviepy.editor import VideoFileClip
def extract_audio(video_path, output_path):
video = VideoFileClip(video_path)
audio = video.audio
audio.write_audiofile(output_path)
audio.close()
video.close()
print(f"音频已提取到: {output_path}")
# 使用示例
extract_audio("video.mp4", "output.mp3")
使用 pydub
# extract_audio_pydub.py
from pydub import AudioSegment
import subprocess
import os
def extract_audio_ffmpeg(video_path, output_path):
# 使用 ffmpeg 提取
cmd = f'ffmpeg -i {video_path} -vn -acodec pcm_s16le temp.wav'
subprocess.run(cmd, shell=True)
# 使用 pydub 处理
audio = AudioSegment.from_wav("temp.wav")
audio.export(output_path, format="mp3")
# 清理临时文件
os.remove("temp.wav")
extract_audio_ffmpeg("video.mp4", "output.mp3")
批量处理脚本
Python 批量处理
# batch_extract.py
import os
import subprocess
from pathlib import Path
def batch_extract_audio(input_dir="videos", output_dir="audios"):
# 创建输出目录
Path(output_dir).mkdir(exist_ok=True)
# 支持的视频格式
video_formats = ['.mp4', '.avi', '.mkv', '.mov', '.wmv', '.flv']
for file in os.listdir(input_dir):
file_path = os.path.join(input_dir, file)
if os.path.isfile(file_path) and Path(file).suffix.lower() in video_formats:
# 生成输出文件名
audio_name = Path(file).stem + '.mp3'
output_path = os.path.join(output_dir, audio_name)
# 提取音频
cmd = f'ffmpeg -i "{file_path}" -vn -acodec libmp3lame "{output_path}"'
print(f"正在处理: {file}")
subprocess.run(cmd, shell=True)
print("批量提取完成!")
if __name__ == "__main__":
batch_extract_audio()
高级功能脚本
提取并转换格式
# advanced_extract.py
import subprocess
import os
class AudioExtractor:
def __init__(self, video_path):
self.video_path = video_path
def extract_with_params(self, output_path, format="mp3", bitrate="192k",
start_time=None, duration=None):
"""
带参数的音频提取
"""
# 构建命令
cmd = ['ffmpeg', '-i', self.video_path]
# 添加时间参数
if start_time:
cmd.extend(['-ss', start_time])
if duration:
cmd.extend(['-t', duration])
# 添加音频参数
cmd.extend(['-vn'])
if format == "mp3":
cmd.extend(['-acodec', 'libmp3lame', '-b:a', bitrate])
elif format == "wav":
cmd.extend(['-acodec', 'pcm_s16le'])
# 输出文件
num_ext = '.' + format
if not output_path.endswith(num_ext):
output_path += num_ext
cmd.append(output_path)
# 执行
subprocess.run(cmd, check=True)
print(f"提取成功: {output_path}")
def extract_audio_fragment(self, output_path, start, duration):
"""提取音频片段"""
self.extract_with_params(output_path, start_time=start, duration=duration)
def extract_high_quality(self, output_path):
"""提取高质量音频"""
self.extract_with_params(output_path, bitrate="320k")
# 使用示例
extractor = AudioExtractor("video.mp4")
extractor.extract_with_params("audio", format="mp3", bitrate="256k")
extractor.extract_audio_fragment("fragment.mp3", "00:01:30", "00:00:30")
一键执行脚本(Shell)
#!/bin/bash
# extract_all_audio.sh
# 显示帮助
usage() {
echo "使用方法: $0 [输入目录] [输出格式]"
echo "示例: $0 ./videos mp3"
exit 1
}
# 检查参数
if [ $# -lt 1 ]; then
usage
fi
INPUT_DIR="${1:-.}"
OUTPUT_FORMAT="${2:-mp3}"
OUTPUT_DIR="extracted_audios"
# 创建输出目录
mkdir -p "$OUTPUT_DIR"
# 遍历视频文件
find "$INPUT_DIR" -type f \( -name "*.mp4" -o -name "*.avi" -o -name "*.mkv" \
-o -name "*.mov" -o -name "*.wmv" -o -name "*.flv" \) | while read file; do
filename=$(basename "$file")
basename="${filename%.*}"
echo "正在处理: $filename"
# 提取音频
if [ "$OUTPUT_FORMAT" = "wav" ]; then
ffmpeg -i "$file" -vn -acodec pcm_s16le "$OUTPUT_DIR/$basename.wav" -y
else
ffmpeg -i "$file" -vn -acodec libmp3lame -q:a 2 "$OUTPUT_DIR/$basename.mp3" -y
fi
done
echo "完成!音频文件已保存到 $OUTPUT_DIR 目录"
使用建议
- 安装依赖:确保已安装 FFmpeg
- 选择合适的格式:
- MP3:通用性好,适合日常使用
- WAV:无损,但文件大
- AAC:质量高,体积小
- 调整参数:根据需求修改码率、采样率等
需要更多具体的功能吗?比如批量处理特定格式、添加音频过滤等?
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播