背景
本文将的是如何在苹果MAC电脑下,将网络地址的M3U8文件(URL地址)转化为方便播放的MP4文件。
- 什么是M3U8文件?先去搜索下
- 怎么下载ffmpeg,怎么使用? 也可以参考下:如何使用youtube-dl下载Youtube上面的音视频,油管视频
- Support SOCKS5 proxies #3373
步骤(方案一)
使用浏览器查看获取M3U8文件的地址
(插件如:Firefox的 Bulk Media Downloader, Video DownloadHelper
Chrome的Media Download Helper)
打开Terminal
-
1 2 3
| ffmpeg -i "http://host/视频地址/file.m3u8" -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 file.mp4
#请更换参数中的 URL地址 和 末尾要保存的mp4文件名(已测试可用)。
|
如果该网络的URL地址需要Proxy才能访问,需要用到-http_proxy 参数。
- 实例演示,假设已存在本机http proxy信息如下(很实用,因为即便已下载.m3u8文件,而其中所指向的具体视频分段地址还是需要proxy才能访问)
1
| ffmpeg -http_proxy "http://127.0.0.1:7890" -i "http://host/folder/file.m3u8" -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 file1.mp4
|
下载循环录播资源
下载循环录播专为单mp4文件,
长期实践的发现ffmpeg用来下载直播流也是666
比如, 实际的命令就像这样:
ffmpeg -http_proxy “http://127.0.0.1:7890“ -i “https://hls.vdtuzv.com/videos2/77e1a56ec7cb38182c7df417d22f0b9a/77e1a56ec7cb38182c7df417d22f0b9a.m3u8?auth_key=1699418332-654b10dc8a7a2-0-498db8173470eb197016a656ac0ec821&v=2“ -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 file1108.mp4
很多m3u8, 地址的加密方案是在url参数中增加auth_key;而且这个auth_key是会变更的。
这样维护源文件就简单了,放到特定地网盘(比如说)以后,由专门的软件负责循环直播这些mp4资源,其实就是录播,走实时的IPTV流量一样的原理。这样不暴露源文件的原始url链接,访问速度快(因为是分段式在内存下载),又能统计和分析视频的访问量等信息。
ffmpeg可以拼接这些分段式的.ts文件,最终转化成单个mp4文件。
步骤(方案二)
这个方案假设m3u8内容可以本机直接访问的情况下,We can use VLC to convert easily, File > Convert / Stream:
- Drop media here
- Choose Profile
- Choose Destination
20231006实测吐槽:尽量别用这第二个方案(的MAC版下VLC来保存短视频),因为会无限循环提示是否重写或者保留原有的文件。
相关内容
ffmpeg 提取视频截图
视频自动截图工具, 按特定的时间间隔, 自动截取监控画面
自动 制作成小视频, 或者自动生成 一堆截图照片
ffmpeg快速获取视频截图
1 2
| # 均匀抽帧: -r 指定每秒抽取图片的数量, 1 frame/sec 表示: 每秒1帧截图 ffmpeg -i 1浙大城市学院大瓜.mp4 -r 0.125 -q:v 2 -f image2 ./%08d.jpg
|
均匀抽帧
如果想要指定时间点抽帧
1
| ffmpeg -i aaa.mp4 -ss 00:00:01 -vframes 1 ./%08d.jpg
|
视频流抽帧
- rtsp流抽帧。参数说明:
- -y :如果提示文件已经存在,自动执行y,对已存在文件进行覆盖;
- -f image2:以图片格式保存;
- -r 1:帧数,每秒截取一帧,-r 1/5 表示每5秒抽取一帧;
- img%03d.jpg 格式化命名,会生成img001.jpg, img002.jpg
1
| ffmpeg -i "rtsp://dxcs:cs123456@200.36.43.131:554/Streaming/Channels/1001" -y -f image2 -r 1/1 img%03d.jpg
|
- rtsp流抽帧,tcp协议推流需要加上: -rtsp_transport tcp
1
| ffmpeg -rtsp_transport tcp -i "rtsp://dxcs:cs123456@200.36.43.131:554/Streaming/Channels/1001" -y -f image2 -r 1/5 img%03d.jpg
|
最终的抽帧
1 2
| ffmpeg -i "rtsp://admin:d***@192.168.6.211:554" -y -f image2 -r 1/180 /volume2/homes/13261977480/P hotos/202410051%03d.jpg
|
ffmpeg图片转视频
规则图片名称转视频
参数说明:
-r 25 表示每秒播放25帧;
-b 200k 指定码率为200k;将img00001.jpg’,
img00002.jpg’这种顺序排列的图片文件转制作为视频
1 2
| ffmpeg -f image2 -i ./images/img%05d.jpg ./result.mp4 ffmpeg -f image2 -i './images/img%05d.jpg' -vcodec libx264 -r 25 -b 200k result.mp4
|
不规则图片名称转视频
参数说明:
-framerate 10:视频帧率;
-pattern_type glob:Glob pattern 模糊匹配;
-f image2pipe:图像管道,模糊匹配得到图片名称
1 2
| ffmpeg -framerate 10 -pattern_type glob -i './images/*.jpg' out.mp4 cat ./images/*.jpg | ffmpeg -f image2pipe -i - output.mp4
|
其他思路:
摄像头 自动截图
SRS 自动截图
iina/iina The modern video player for macOS.
本章节感谢列表
ffmpeg快速获取视频截图
FFmpeg视频处理
tangramor/slidev
就可以在 dist 目录下将你的幻灯片生成静态HTML 文件
媒体资源地址嗅探及下载
功能包含:1、自动嗅探页面上的视频、音频资源,列出链接,并提供播放、复制和下载功能(提供 mp3、mp4 和 m3u8 资源下载);2、录屏;3、解除页面复制限制。
dplayer 地址嗅探
防嗅探防下载防合成的情况下, 如何获取dplayer视频的地址以及转化为原始MP4文件?
首先需要一个翻墙的环境, 确保m3u8的文件地址, 以及文件中的视频片段地址都可以被正常访问
探测M3U8地址
- M3U8的地址都已升级成为加密的需要带特定参数及参数值的m3u8地址, 比如: https://hls.vdtuzv.com/videos4/028060ef1e01c0c1d09d63b5e4b5ba47/028060ef1e01c0c1d09d63b5e4b5ba47.m3u8?auth_key=1727055066-66f0c4da21a64-0-9df27c832d72253d33e8b2418e03ecfd&v=3&time=0
获取了M3U地址以后, 利用ffmpeg的下载合成mp4命令, 即可将视频中播放的流媒体转化为普通的MP3/MP4等音频视频文件格式
- ffmpeg -i “https://视频地址/file.m3u8” -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 file.mp4
- 替换上方的”https://视频地址/file.m3u8”为具体详细的M3U8地址
- 替换上方的 file.mp4 为将要新建并保存的本地mp4文件名
可参考的浏览器插件列表
👇这些工具都有机会获取到m3u8的地址, 下载的话, 建议使用上方的ffmpeg命令
- Video DownloadHelper
- Greasy Fork 脚本: 媒体资源嗅探及下载(支持下载m3u8和mp4视频和音频)
运行ffmpeg日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| ffmpeg -i "https://hls.vdtuzv.com/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed.m3u8?auth_key=1727055064-66f0c4d854525-0-19bdf45efcfdccc49006b1ae87a8af53&v=3&time=0" -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 1浙大城市学院大瓜.mp4 ffmpeg version 6.1 Copyright (c) 2000-2023 the FFmpeg developers built with Apple clang version 14.0.0 (clang-1400.0.29.202) configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/6.1_1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon 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 libpostproc 57. 3.100 / 57. 3.100 [hls @ 0x15b104ec0] Skip ('#EXT-X-VERSION:3') [hls @ 0x15b104ec0] Opening 'https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/crypt.key?auth_key=1727058303-58-0-e6da5d374c453e01f483ac9a35049ea0' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed0.ts?auth_key=1727058303-58-0-124758d9ee5524c3d795383a8a90f7d7' for reading Input #0, hls, from 'https://hls.vdtuzv.com/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed.m3u8?auth_key=1727055064-66f0c4d854525-0-19bdf45efcfdccc49006b1ae87a8af53&v=3&time=0': Duration: 00:02:03.63, start: 1.433333, bitrate: 0 kb/s Program 0 Metadata: variant_bitrate : 0 Stream #0:0: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 720x1280, 30 fps, 30 tbr, 90k tbn Metadata: variant_bitrate : 0 Stream #0:1(eng): Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp Metadata: variant_bitrate : 0 Multiple -c, -codec, -acodec, -vcodec, -scodec or -dcodec options specified for stream 0, only the last option '-c copy' will be used. File '1浙大城市学院大瓜.mp4' already exists. Overwrite? [y/N] y Output #0, mp4, to '1浙大城市学院大瓜.mp4': Metadata: encoder : Lavf60.16.100 Stream #0:0: Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 720x1280, q=2-31, 30 fps, 30 tbr, 90k tbn Metadata: variant_bitrate : 0 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp Metadata: variant_bitrate : 0 Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed1.ts?auth_key=1727058303-58-0-41b79bc888aa313b972101c99b0a679b' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed2.ts?auth_key=1727058303-58-0-964412ae06b2dce0bd1788d9d713322c' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed3.ts?auth_key=1727058303-58-0-449aa5a69f5c8fffdbc0b79855c32b1b' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed4.ts?auth_key=1727058303-58-0-130dd9772990e9debf830091184e138a' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed5.ts?auth_key=1727058303-58-0-07dc1c847332d3773fc8e7710dbbd33b' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed6.ts?auth_key=1727058303-58-0-b36359b4be63f2354af6767fe7fe35b7' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed7.ts?auth_key=1727058303-58-0-4356fac097b74f060f9423a75d4c277d' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed8.ts?auth_key=1727058303-58-0-a6a971e9b57f2a85818687bf31bc1858' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed9.ts?auth_key=1727058303-58-0-993c9227b63827cfe00f9e51f99d0379' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed10.ts?auth_key=1727058303-58-0-140d889e154c8c8c7c22880b5b60262a' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed11.ts?auth_key=1727058303-58-0-a769f7d58a27da6faa286ff574646ddf' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed12.ts?auth_key=1727058303-58-0-3e804d7600431519cdb22901ed6f178d' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed13.ts?auth_key=1727058303-58-0-ef8e99353240bf4a19bd3506b4a1a010' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed14.ts?auth_key=1727058303-58-0-2f1e444aec4ecd6b5b40937d29637f9a' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed15.ts?auth_key=1727058303-58-0-033aae2c7bedd974e89ebee3476853a1' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed16.ts?auth_key=1727058303-58-0-3b5747780bbac572279f1b93fe856338' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed17.ts?auth_key=1727058303-58-0-75cbc8f22e9fef85792c34eba842397b' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed18.ts?auth_key=1727058303-58-0-0b9aed99d397ac8d940d203e36849942' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed19.ts?auth_key=1727058303-58-0-31de7202a91110f6b1748c3f44d0452e' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed20.ts?auth_key=1727058303-58-0-ee0a4051cd313354b1b1e0d56939034d' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed21.ts?auth_key=1727058303-58-0-5e1dfa5e3bb4ba3f04ef7b1fe8493d8e' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed22.ts?auth_key=1727058303-58-0-bcbeb6ed18b6b6800f732c1b1d632d2a' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed23.ts?auth_key=1727058303-58-0-16b158dbcb96c79269de03db847650f5' for reading [hls @ 0x15b104ec0] Opening 'crypto+https://tp6.chims.co/videos4/ec014ce7b0df4dc89e8c8e4e064700ed/ec014ce7b0df4dc89e8c8e4e064700ed24.ts?auth_key=1727058303-58-0-f7971cf39fbe8f6d4c06577d08f70ee7' for reading [out#0/mp4 @ 0x15b206a00] video:30172kB audio:4790kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.348045% size= 35085kB time=00:02:03.62 bitrate=2324.8kbits/s speed=29.5x
|
个性化需求沟通 扫客服加V加群: