📌  相关文章
📜  ffmpeg 使用令牌下载 hls 到 mp4 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:30:45.238000             🧑  作者: Mango

ffmpeg 使用令牌下载 hls 到 mp4 - Shell/Bash

如果你需要将一个包含许多小视频的 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

脚本的工作流程如下:

  1. 使用 curl 下载带有令牌的 HLS 流的播放列表( playlist.m3u8)。
  2. 从播放列表中提取视频和音频流的 URL。
  3. 使用 ffmpeg 组合视频和音频流成一个单独的 MP4 文件( output.mp4)。
  4. 删除播放列表文件。

ffmpeg 命令的 -i 参数用于指定输入文件。 -c:v copy-c:a copy 用于指定使用原始的视频和音频编解码器,而不进行重新编码。 -strict -2 参数用于警告 ffmpeg 不要通过编解码重编码音频流。

希望这个脚本能对那些需要使用令牌下载 HLS 流并将其转换为 MP4 文件的人有所帮助。