FFmpeg 最小化内存使用或向 youtube-dl 添加超时
FFmpeg Minimize memory usage or add timeout to youtube-dl
所以我正在使用 FFmpeg 下载 m3u8 流。为了优化,我直接尝试 运行 FFmpeg,而不是使用 youtube-dl。但出于某种原因,ffmpeg.exe 使用 140 MB 内存,而通过 youtube-dl ffmpeg.exe 仅使用 14 MB 内存。
所以我有两个问题:
- 有没有办法尽量减少方向FFmpeg的内存占用
- 通过 youtube-dl 向 FFmpeg 添加一个计时器(自定义命令)。 FFmpeg 有一个内置命令 -t(秒)。有没有办法通过 youtube-dl 使用它?
直接FFmpeg(内存140MB):
import os
os.system('cmd /k "ffmpeg -i https://36-d4.divas.cloud/CHAN-3792/CHAN-3792_1.stream/playlist.m3u8 -t 100 output.mp4"')
FFmpeg 使用 youtube-dl(内存 14MB):
import youtube_dl
ydl_opts = {
'nopart': True,
'outtmpl': 'output.mp4',
'nocheckcertificate': True
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://36-d4.divas.cloud/CHAN-3792/CHAN-3792_1.stream/playlist.m3u8'])
编辑:
我仔细检查了一下,direct 和 youtube-dl
的 exe FFmpeg 都是相同的版本。
linux 上的 youtube-dl 与您提供的 link 似乎启动了带有以下参数的 ffmpeg:
ffmpeg -y -loglevel verbose -headers 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.67 Safari/537.36\
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\
Accept-Encoding: gzip, deflate\
Accept-Language: en-us,en;q=0.5' \
-i https://36-d4.divas.cloud/CHAN-3792/CHAN-3792_1.stream/chunklist_w70914220.m3u8 -c copy -f mp4 file:playlist-playlist.mp4.part
我想如果你只是重新使用它们并添加你的 (-t 100
) 你应该能够获得相同类型的内存使用。
您也可以尝试只使用 -c copy
和 -f mp4
,我想这与 ffmpeg 的内存使用最相关。
所以我正在使用 FFmpeg 下载 m3u8 流。为了优化,我直接尝试 运行 FFmpeg,而不是使用 youtube-dl。但出于某种原因,ffmpeg.exe 使用 140 MB 内存,而通过 youtube-dl ffmpeg.exe 仅使用 14 MB 内存。
所以我有两个问题:
- 有没有办法尽量减少方向FFmpeg的内存占用
- 通过 youtube-dl 向 FFmpeg 添加一个计时器(自定义命令)。 FFmpeg 有一个内置命令 -t(秒)。有没有办法通过 youtube-dl 使用它?
直接FFmpeg(内存140MB):
import os
os.system('cmd /k "ffmpeg -i https://36-d4.divas.cloud/CHAN-3792/CHAN-3792_1.stream/playlist.m3u8 -t 100 output.mp4"')
FFmpeg 使用 youtube-dl(内存 14MB):
import youtube_dl
ydl_opts = {
'nopart': True,
'outtmpl': 'output.mp4',
'nocheckcertificate': True
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['https://36-d4.divas.cloud/CHAN-3792/CHAN-3792_1.stream/playlist.m3u8'])
编辑:
我仔细检查了一下,direct 和 youtube-dl
的 exe FFmpeg 都是相同的版本。
linux 上的 youtube-dl 与您提供的 link 似乎启动了带有以下参数的 ffmpeg:
ffmpeg -y -loglevel verbose -headers 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.67 Safari/537.36\
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\
Accept-Encoding: gzip, deflate\
Accept-Language: en-us,en;q=0.5' \
-i https://36-d4.divas.cloud/CHAN-3792/CHAN-3792_1.stream/chunklist_w70914220.m3u8 -c copy -f mp4 file:playlist-playlist.mp4.part
我想如果你只是重新使用它们并添加你的 (-t 100
) 你应该能够获得相同类型的内存使用。
您也可以尝试只使用 -c copy
和 -f mp4
,我想这与 ffmpeg 的内存使用最相关。