最近需要从某个网站下载一个视频,但是下载出来的文件后缀是m3u8,

FFmpeg的使用场景_3d

这是什么文件?

m3u8文件是m3u(MP3 URL,MP3地址)文件的Unicode(统一编码)版本。m3u8中的"8"代表UTF-8编码,这是目前网络通信中最常见的全球通用编码标准。

m3u8的文件怎么转成常用的mp4格式?

FFmpeg是其中的一种解决方案。FFmpeg是一个免费的开源程序库,一个命令行工具软件,专门用来编辑处理各种音视频或图像。

它的使用,还是有些技巧的。

1. 下载安装文件

进入官网:https://ffmpeg.org/,点击Download,

FFmpeg的使用场景_bc_02

如果是Windows的平台,可以选择任意一个下载源,

FFmpeg的使用场景_3d_03

选择左侧的"release builds",release-full和xxx-full_build这两个都行,xxx-full_build是release-full之前的版本,如果选择尽量找个最近的稳定版本,否则直接用release-full就行,

FFmpeg的使用场景_命令行_04

同一个版本带shared的和不带shared的,功能是完全一样的,选谁都可以。区别是,带shared的里面,多了include、lib目录,FFmpeg依赖的模块包单独的放在的lib目录中,ffmpeg.exe,ffplay.exe,ffprobe.exe作为可执行文件的入口,文件体积很小,他们在运行的时候,如果需要,会到lib中调用相应的功能,

FFmpeg的使用场景_bc_05

不带shared的里面,bin目录中有ffmpeg.exe,ffplay.exe,ffprobe.exe三个可执行文件,每个exe的体积都稍大一点,因为它已经将相关的需要用的模块包编译到exe,

FFmpeg的使用场景_bc_06

2. 部署安装文件

复制bin路径,

FFmpeg的使用场景_bc_07

在系统的环境变量中,向Path增加bin路径,

FFmpeg的使用场景_命令行_08

打开命令行,输入指令ffmpeg -version,如果有输出信息,则证明安装配置成功了,

C:\Users\admin>ffmpeg -versionffmpeg version 7.1.1-full_build-www.gyan.dev Copyright (c) 2000-2025 the FFmpeg developersbuilt with gcc 14.2.0 (Rev1, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-lcms2 --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-libdvdnav --enable-libdvdread --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libopenjpeg --enable-libquirc --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-libqrencode --enable-librav1e --enable-libsvtav1 --enable-libvvenc --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-liblc3 --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprintlibavutil      59. 39.100 / 59. 39.100libavcodec     61. 19.101 / 61. 19.101libavformat    61.  7.100 / 61.  7.100libavdevice    61.  3.100 / 61.  3.100libavfilter    10.  4.100 / 10.  4.100libswscale      8.  3.100 /  8.  3.100libswresample   5.  3.100 /  5.  3.100libpostproc    58.  3.100 / 58.  3.100

3. 使用

ffmpeg只能通过命令行的操作,如下是最基础的一个指令,

C:\Users\admin>ffmpeg -i "https://newcntv.qcloudcdn.com/asp/hls/main/0303000a/3/default/d7253778b710491398e368e64f3b6150/main.m3u8?maxbr=1000" -c copy output.mp4

其中,

  • -i:指定输入源(m3u8文件路径或URL)
  • -c copy:直接复制原始流(不重新编码),速度最快且无损质量
  • output.mp4:输出文件名

output.mp4就是转换后的,可以直接打开。

但是我这生成的文件分辨率很低,和网页原版的质量相差甚远,虽然尝试增加一些指定分辨率的参数,但是作用有限,

-crf 18:画质核心参数(0=无损,18~22=高清,23~28=普通,默认23)-preset slow:编码速度越慢质量越高(可选:medium > slow > slower > veryslow)-vf "scale=1920:-2":升级到1080p(保持原始比例,-2确保高度为偶数)-movflags +faststart:优化网络播放

查了一些资料,有可能是源文件质量低(从网页上看,质量很高,应该不是这原因)、参数设置不当以及分片缺失等(这个倒是有可能),因此,还需要进一步研究下。如果有朋友对这方面有经验,欢迎指点指教。

参考资料:

https://www.gyan.dev/ffmpeg/builds/#release-builds

如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"