ffmpeg 替换音频流.bat

功能:将视频.mp4的音频流替换为音频.wav
主要适用于pcm音频流、avi封装的视频文件。

用法: 拖拽两个文件到本脚本上
或者在命令行中使用:
替换音频流.bat "视频.mp4" "音频.wav"

输出文件将自动生成在视频同目录下,文件名为: 原视频名_replace.avi

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
title 视频音频替换工具

echo ================================
echo     视频音频替换工具
echo ================================
echo.

if "%~1"=="" goto noargs
if "%~2"=="" goto noargs

set "INPUT_VIDEO=%~1"
set "INPUT_AUDIO=%~2"

:: 自动生成输出文件名(在原视频同目录下)
for %%F in ("%INPUT_VIDEO%") do (
    set "VIDEO_DIR=%%~dpF"
    set "VIDEO_NAME=%%~nF"
    set "OUTPUT_AVI=!VIDEO_DIR!!VIDEO_NAME!_replace.avi"
)

echo [信息] 输入视频: %INPUT_VIDEO%
echo [信息] 输入音频: %INPUT_AUDIO%
echo [信息] 输出文件: %OUTPUT_AVI%
echo.

:: 检查文件是否存在
if not exist "%INPUT_VIDEO%" (
    echo 错误: 视频文件不存在!
    pause
    exit /b 1
)

if not exist "%INPUT_AUDIO%" (
    echo 错误: 音频文件不存在!
    pause
    exit /b 1
)

:: 检查FFmpeg是否安装
where ffmpeg >nul 2>nul
if errorlevel 1 (
    echo 错误: 未找到FFmpeg,请先安装FFmpeg
    echo 下载地址: https://ffmpeg.org/download.html
    pause
    exit /b 1
)

:: 获取视频信息
for /f "delims=" %%a in ('ffprobe -v error -select_streams v:0 -show_entries stream^=codec_name -of default^=noprint_wrappers^=1:nokey^=1 "%INPUT_VIDEO%" 2^>^&1') do set "VIDEO_CODEC=%%a"
for /f "delims=" %%a in ('ffprobe -v error -select_streams v:0 -show_entries stream^=width -of default^=noprint_wrappers^=1:nokey^=1 "%INPUT_VIDEO%" 2^>^&1') do set "VIDEO_WIDTH=%%a"
for /f "delims=" %%a in ('ffprobe -v error -select_streams v:0 -show_entries stream^=height -of default^=noprint_wrappers^=1:nokey^=1 "%INPUT_VIDEO%" 2^>^&1') do set "VIDEO_HEIGHT=%%a"

echo [信息] 视频编码: !VIDEO_CODEC!
echo [信息] 分辨率: !VIDEO_WIDTH!x!VIDEO_HEIGHT!
echo.

:: 获取音频信息
for /f "delims=" %%a in ('ffprobe -v error -select_streams a:0 -show_entries stream^=codec_name -of default^=noprint_wrappers^=1:nokey^=1 "%INPUT_AUDIO%" 2^>^&1') do set "AUDIO_CODEC=%%a"
for /f "delims=" %%a in ('ffprobe -v error -select_streams a:0 -show_entries stream^=sample_rate -of default^=noprint_wrappers^=1:nokey^=1 "%INPUT_AUDIO%" 2^>^&1') do set "SAMPLE_RATE=%%a"
for /f "delims=" %%a in ('ffprobe -v error -select_streams a:0 -show_entries stream^=channels -of default^=noprint_wrappers^=1:nokey^=1 "%INPUT_AUDIO%" 2^>^&1') do set "CHANNELS=%%a"

echo [信息] 音频编码: !AUDIO_CODEC!
echo [信息] 采样率: !SAMPLE_RATE! Hz
echo [信息] 声道数: !CHANNELS!
echo.

:: 确定PCM格式
if "!AUDIO_CODEC!"=="" (
    set "PCM_FORMAT=pcm_s24le"
    echo [警告] 使用默认PCM格式: pcm_s24le
) else if "!AUDIO_CODEC!"=="unknown" (
    set "PCM_FORMAT=pcm_s24le"
    echo [警告] 使用默认PCM格式: pcm_s24le
) else (
    set "PCM_FORMAT=!AUDIO_CODEC!"
    echo [信息] 使用PCM格式: !AUDIO_CODEC!
)

:: 确认继续
set /p "CONTINUE=是否继续?(Y/N): "
if /i not "!CONTINUE!"=="Y" (
    echo 用户取消操作
    pause
    exit /b 0
)

echo [信息] 开始处理视频和音频...
echo.

:: 构建FFmpeg命令
set "FFMPEG_CMD=ffmpeg -i "%INPUT_VIDEO%" -i "%INPUT_AUDIO%" -c:v copy -c:a !PCM_FORMAT! -map 0:v:0 -map 1:a:0 -shortest -y -f avi"

:: 添加音频参数
if not "!SAMPLE_RATE!"=="" (
    set "FFMPEG_CMD=!FFMPEG_CMD! -ar !SAMPLE_RATE!"
) else (
    echo [警告] 使用默认采样率: 48000 Hz
    set "FFMPEG_CMD=!FFMPEG_CMD! -ar 48000"
)

if not "!CHANNELS!"=="" (
    set "FFMPEG_CMD=!FFMPEG_CMD! -ac !CHANNELS!"
) else (
    echo [警告] 使用默认声道数: 2
    set "FFMPEG_CMD=!FFMPEG_CMD! -ac 2"
)

set "FFMPEG_CMD=!FFMPEG_CMD! "%OUTPUT_AVI%""

echo 执行命令:
echo !FFMPEG_CMD!
echo.

:: 执行转换
echo [信息] 正在转换,请稍候...
!FFMPEG_CMD!

if !errorlevel! equ 0 (
    echo.
    echo [成功] 转换完成!
    echo [信息] 输出文件: %OUTPUT_AVI%

    :: 显示文件大小
    for %%F in ("%OUTPUT_AVI%") do (
        set "size=%%~zF"
        set /a "sizeMB=!size!/1048576"
        echo [信息] 文件大小: !sizeMB! MB
    )
) else (
    echo.
    echo [错误] 转换失败!
)

echo.
pause
exit /b 0

:noargs
echo 用法: 拖拽两个文件到本脚本上
echo 顺序: 视频文件, 音频文件
echo.
echo 或者在命令行中使用:
echo %~nx0 "视频.mp4" "音频.wav"
echo.
echo 输出文件将自动生成在视频同目录下,文件名为: 原视频名_replace.avi
echo.
pause
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇