我想要下载M3U8文件的分块(HLS),并在解密后存储该视频以便以后观看。我已经制作了一个演示来播放M3U8文件,但我想要下载视频数据以便稍后查看。
我想要下载M3U8文件的分块(HLS),并在解密后存储该视频以便以后观看。我已经制作了一个演示来播放M3U8文件,但我想要下载视频数据以便稍后查看。
ffmpeg -i http://example.org/playlist.m3u8 -c copy -bsf:a aac_adtstoasc output.mp4
有一个可用的iOS版本的ffmpeg。
-protocol_whitelist“ file,http,https,tcp,tls”
,因为我看到了 Protocol 'https' not on whitelist
的错误提示。总的来说,这就是我需要的命令。谢谢! - TastyWheatwget https://raw.githubusercontent.com/osklil/hls-fetch/master/hls-fetch
chmod +x hls_fetch
./hls_fetch --playlist "THE_URL"
将THE_URL
替换为您的M3U8播放列表的完整URL(或尝试使用--help
进行其他选项)。
奖励:如果您缺少Perl的JSON模块(就像我一样),只需运行sudo cpan JSON
即可。
我刚刚按照 https://www.oneminuteinfo.com/2016/10/download-ts-files-and-convert-to-mp4.html 的教程尝试从一些https .m3u8文件中下载视频,并且成功了。对我来说,Chrome插件和ffmpeg都无法使用。
网址: https://mnmedias.api.telequebec.tv/m3u8/29880.m3u8
步骤1:ffmpeg -i 'https://mnmedias.api.telequebec.tv/m3u8/29880.m3u8' -vf scale=w=1280:h=720:force_original_aspect_ratio=decrease -c:a aac -ar 48000 -b:a 128k -c:v h264 -profile:v main -crf 20 -g 48 -keyint_min 48 -sc_threshold 0 -b:v 2500k -maxrate 2675k -bufsize 3750k -hls_time 10 -hls_playlist_type vod -hls_segment_filename my_hls_video/720p_%03d.ts my_hls_video/720p.m3u8
步骤2:
-i 'https://mnmedias.api.telequebec.tv/m3u8/29880.m3u8' :=> 将https://mnmedias.api.telequebec.tv/m3u8/29880.m3u8设置为视频源。
-vf "scale=w=1280:h=720:force_original_aspect_ratio=decrease" :=> 将视频缩放至最大可能的1280x720,同时保持纵横比。
-c:a aac -ar 48000 -b:a 128k :=> 将音频编解码器设置为AAC,采样率为48kHz,比特率为128k。
-c:v h264 :=> 将视频编解码器设置为H264,这是HLS段的标准编解码器。
-profile:v main :=> 将H264配置文件设置为主要配置文件,这意味着现代设备可以支持。
-crf 20 :=> 恒定速率因子,用于整体质量的高级因素。
-g 48 -keyint_min 48 :=> 每48帧(约2秒)创建一个关键帧(I帧)非常重要 - 这将影响片段的正确切片和渲染版本的对齐。
-sc_threshold 0 :=> 不根据场景变化创建关键帧,只根据-g参数。
-b:v 2500k -maxrate 2675k -bufsize 3750k :=> 限制视频比特率,这些是版本特定的,取决于您的内容类型 - 阅读更多信息。
-hls_time 4 : :=> 片段目标持续时间(以秒为单位)- 实际长度受关键帧约束。
-hls_playlist_type vod :=> 添加#EXT-X-PLAYLIST-TYPE:VOD标签,并将所有片段保留在播放列表中。
-hls_segment_filename beach/720p_%03d.ts :=> 明确定义片段文件名 my_hls_video/720p.m3u8 - 播放列表文件路径 - 同时告诉FFmpeg输出HLS(.m3u8)。
<video>
标签吗? - Brad