我有一堆 mp4 格式的视频文件要上传到网上供亲朋好友观看。初步检查显示,每个文件都超过 1 GB,长度在 20-30 分钟之间。
从我录制的电视观看经验来看,这种时长的 480p 视频可以装入不到 300 MB 大小的 mp4 文件中。
我想将这些视频转换为 480p 格式,我想使用的工具是 ffmpeg。因为它可以免费使用,而且是命令行,所以我可以将命令塞进批处理文件中,然后运行它,如果需要的话,几天后就不用管它了。
我搜索了有关使用 ffmpeg 实现目标的帮助,但作为视频处理新手,这毫无帮助。到目前为止,我找到的每个命令都因找不到这个或那个而失败。
我对其中一个文件执行的 ffprobe 命令返回以下信息:
ffprobe version 4.0.2 Copyright (c) 2007-2018 the FFmpeg developers
built with gcc 7.3.1 (GCC) 20180722
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --e
nable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libblur
ay --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enab
le-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-li
bvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --en
able-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-
libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enabl
e-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enabl
e-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enab
le-dxva2 --enable-avisynth
libavutil 56. 14.100 / 56. 14.100
libavcodec 58. 18.100 / 58. 18.100
libavformat 58. 12.100 / 58. 12.100
libavdevice 58. 3.100 / 58. 3.100
libavfilter 7. 16.100 / 7. 16.100
libswscale 5. 1.100 / 5. 1.100
libswresample 3. 1.100 / 3. 1.100
libpostproc 55. 1.100 / 55. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'vid1080.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.12.100
Duration: 00:31:45.44, start: 0.000000, bitrate: 4950 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080
[SAR 1:1 DAR 16:9], 4689 kb/s, 23.98 fps, 23.98 tbr, 16k tbn, 47.95 tbc (defaul
t)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: eac3 (ec-3 / 0x332D6365), 48000 Hz, 5.1(side), fltp
, 256 kb/s (default)
Metadata:
handler_name : SoundHandler
Side data:
audio service type: main
我该如何使用系统中已有的编解码器来实现这一点?
答案1
此批处理文件应将您拖放到批处理文件的文件夹中的每部电影都转换为 480p。但您必须将 ffmpeg 添加到 %path% 变量才能使其工作。它应该创建一个新文件,其名称与旧文件相同,但末尾带有 *_New480p.mp4。
@echo off
if not exist "%~1\" (exit) else (set "Folder=%~1")
pushd "%Folder%"
for %%a in (*.mp4 *.avi *.mkv) do ffmpeg -i "%%a" -vf "scale=-2:480" -c:v libx264 -c:a copy "%%~na_New480p.mp4"