mkv转码mp4(ffmpeg工具)

news/2025/1/20 18:14:37/

基于windows,Linux也可以用,都是命令行

下载路径(https://github.com/BtbN/FFmpeg-Builds/releases)
下载安装包:ffmpeg-n6.1-latest-win64-lgpl-6.1.zip,(根据自己的平台选择下载)并解压到对应目录,拷贝解压后的目录,添加到环境变量

新增配置:D:\ffmpeg-n6.1-latest-win64-lgpl-6.1(换成你自己的路径)

path配置:%FFMPEG_HOME%/bin

然后打开终端输入:ffmpeg -version,看是否有以下内容输出,有则配置成功

C:\Users\actor>ffmpeg -version
ffmpeg version n6.1.2-21-gac60bc2bb0-20250117 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 14.2.0 (crosstool-NG 1.26.0.120_4d36f27)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-libxml2 --enable-lzma --enable-fontconfig --enable-libharfbuzz --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --disable-avisynth --enable-chromaprint --enable-libdav1d --disable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --disable-frei0r --enable-libgme --enable-libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-libzmq --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --disable-librubberband --enable-schannel --enable-sdl2 --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --enable-vaapi --disable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --disable-libx264 --disable-libx265 --disable-libxavs2 --disable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-libs=-lgomp --extra-ldflags=-pthread --extra-ldexeflags= --cc=x86_64-w64-mingw32-gcc --cxx=x86_64-w64-mingw32-g++ --ar=x86_64-w64-mingw32-gcc-ar --ranlib=x86_64-w64-mingw32-gcc-ranlib --nm=x86_64-w64-mingw32-gcc-nm --extra-version=20250117
libavutil      58. 29.100 / 58. 29.100
libavcodec     60. 31.102 / 60. 31.102
libavformat    60. 16.100 / 60. 16.100
libavdevice    60.  3.100 / 60.  3.100
libavfilter     9. 12.100 /  9. 12.100
libswscale      7.  5.100 /  7.  5.100
libswresample   4. 12.100 /  4. 12.100

开始转码

命令行输入

D:\Download>ffmpeg -i 练习.mkv -vcodec copy -acodec copy 练习.mp4

批量转码

我自己写的脚本,把一个目录下所有的mkv文件全部转码,只需要把脚本拷贝到存有mkv文件的目录下执行即可。装有git的 Windows 电脑也可以执行(在git命令行中执行)。

#!/bin/bash
# 设置目标文件夹
target_directory="."
# 遍历所有 .mkv 后缀的文件
for file in "$target_directory"/*.mkv; do# 确保是文件而不是目录if [ -f "$file" ]; then# 提取文件名并去掉路径filename=$(basename "$file")# 去掉文件名中的空格new_filename=$(echo "$filename" | tr -d ' ')# 如果文件名发生了变化,重命名文件if [ "$filename" != "$new_filename" ]; thenmv "$file" "$target_directory/$new_filename"echo "Renamed: $filename -> $new_filename"fifi
done
# 再次遍历文件夹,过滤出所有 .mkv 后缀的文件
echo "Remaining MKV files after renaming:"
for file in "$target_directory"/*.mkv; do# 确保是文件而不是目录if [ -f "$file" ]; theninput_file_name="$(basename "$file")"output_file_name="$(basename "$file" .mkv)"echo "转换:$input_file_name"ffmpeg -i "$input_file_name" -vcodec copy -acodec copy "$output_file_name.mp4" >> ffmpeg_output.log 2>&1fi
done

ffmpeg 是一个非常强大的工具,支持几乎所有音频和视频格式的相互转换。以下是一些常见的格式和编码器,ffmpeg 支持它们之间的相互转换;你可以根据自己的需求选择适当的编解码器和容器格式来进行转换。通过简单的命令,ffmpeg 可以处理非常复杂的格式转换任务。

1. 视频格式转换

ffmpeg 支持广泛的视频格式之间的转换,包括但不限于:

  • 视频格式:

    • .mp4 (H.264/AAC)
    • .mkv (H.264, H.265, VP9 等)
    • .avi (DivX, XviD, MJPEG 等)
    • .mov (H.264, ProRes, HEVC 等)
    • .flv (Flash Video)
    • .webm (VP8, VP9)
    • .wmv (Windows Media Video)
    • .mpg/.mpeg (MPEG-1, MPEG-2)
    • .3gp (3GPP)
    • .ogv (Theora)
  • 音频格式

    • .mp3 (MPEG-1 Audio Layer 3)
    • .aac (Advanced Audio Codec)
    • .ogg (Ogg Vorbis)
    • .flac (Free Lossless Audio Codec)
    • .wav (Waveform Audio)
    • .m4a (Apple Audio)
    • .alac (Apple Lossless Audio Codec)
    • .wma (Windows Media Audio)
    • .opus (Opus)
  • 转码示例:

    • wav转换为 mp3

      ffmpeg -i input.wav -acodec libmp3lame output.mp3
      
    • ogg转换为 .flac

      ffmpeg -i input.ogg -acodec flac output.flac
      

http://www.ppmy.cn/news/1564721.html

相关文章

《 C++ 点滴漫谈: 二十二 》操作符炼金术:用C++ operator重塑代码美学

摘要 C 的 operator 关键字和操作符重载是语言的核心特性之一,使开发者能够扩展内置操作符以适应自定义类型,从而实现更高效、直观的代码表达。本文全面解析了 operator 关键字的基本概念、支持重载的操作符范围及其使用场景,详细介绍了操作…

FunASR 在Linux/Unix 平台编译

第一步拉取镜像并生成容器: ### 镜像启动 通过下述命令拉取并启动FunASR软件包的docker镜像: shell sudo docker pull \ registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12 mkdir -p ./funasr-runtime-…

【全栈开发】----Mysql基本配置与使用

本篇是在已下载Mysql的情况下进行的,若还未下载或未创建Mysql服务,请转到这篇: 2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)_mysql8.0.40下载安装教程-CSDN博客 本文对于mysql的操作均使用控制台sql原生代码…

【Rust自学】13.2. 闭包 Pt.2:闭包的类型推断和标注

13.2.0. 写在正文之前 Rust语言在设计过程中收到了很多语言的启发,而函数式编程对Rust产生了非常显著的影响。函数式编程通常包括通过将函数作为值传递给参数、从其他函数返回它们、将它们分配给变量以供以后执行等等。 在本章中,我们会讨论 Rust 的一…

【C语言】_自定义类型:联合体

目录 1. 联合体类型的声明 2. 联合体的特点 3.1 成员变量共用一块内存 3.2 由于共用内存导致的相关性 4. 结构体与联合体对比 5. 联合体大小的计算 6. 联合体的应用 6.1 多类型特定属性组结构体 6.1.1 设计方案1:采用纯结构体 6.1.2 设计方案2&#xff1a…

2025寒假备战蓝桥杯01---朴素二分查找的学习

文章目录 1.暴力方法的引入2.暴力解法的思考 与改进3.朴素二分查找的引入4.朴素二分查找的流程5.朴素二分查找的细节6.朴素二分查找的题目 1.暴力方法的引入 对于下面的这个有序的数据元素的组合,我们的暴力解法就是挨个进行遍历操作,一直找到和我们的这…

PHP版接口调试工具(自定义GET|POST|COOKIE|HEADER|User Agent|来路Referer)

<?php // 如果是OPTIONS请求&#xff0c;直接返回 if ($_GET[act] ! ) { header(Content-Type: application/json); // 允许跨域请求 header(Access-Control-Allow-Origin: *); header(Access-Control-Allow-Methods: GET, POST, OPTIONS); header(Access-Control-Allow-He…

SQL Server查询计划操作符——查询计划相关操作符(4)

7.3. 查询计划相关操作符 28)Declare:该操作符在查询计划中分配一个本地变量。该操作符是一个语言元素。该操作符具体如图7.2-28所示。 图 7.2-28 查询计划操作符Declare示例 29)Delete:该操作符从一个对象中删除满足其参数列中可选谓词的数据行。该操作符具体如图7.2-29…