📅  最后修改于: 2023-12-03 15:30:45.238000             🧑  作者: Mango
如果你需要将一个包含许多小视频的 HLS 流转换为单个 MP4 文件,你可以使用 ffmpeg 命令行工具。但是,如果你要下载的 HLS 流需要访问令牌,那么就需要特殊的参数来指定令牌。
下面是一个使用 ffmpeg 下载带有令牌的 HLS 流并将其转换为 MP4 文件的示例脚本。
#!/bin/bash
input_url="https://example.com/hls.m3u8"
output_file="output.mp4"
token="your-token-here"
# Download the HLS playlist with the token
curl -H "Authorization: Bearer $token" "$input_url" -o playlist.m3u8
# Extract the video and audio stream URLs from the playlist
video_url=$(grep -v "#" playlist.m3u8 | grep -o ".*\.ts")
audio_url=$(grep -v "#" playlist.m3u8 | grep -o ".*\.aac")
# Combine the video and audio streams into a single file
ffmpeg -i "$video_url" -i "$audio_url" -c:v copy -c:a copy -strict -2 "$output_file"
# Clean up the playlist file
rm playlist.m3u8
脚本的工作流程如下:
playlist.m3u8
)。output.mp4
)。ffmpeg
命令的 -i
参数用于指定输入文件。 -c:v copy
和 -c:a copy
用于指定使用原始的视频和音频编解码器,而不进行重新编码。 -strict -2
参数用于警告 ffmpeg 不要通过编解码重编码音频流。
希望这个脚本能对那些需要使用令牌下载 HLS 流并将其转换为 MP4 文件的人有所帮助。