Spaces:
Paused
Paused
File size: 1,869 Bytes
0bbba4e f505705 0201f08 f505705 0bbba4e f505705 0201f08 5c6ae28 f505705 0201f08 f505705 0201f08 f505705 5c6ae28 f505705 0201f08 |
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 |
from ffmpy import FFmpeg
import os
import logging
import subprocess
# Set up logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
def ffmpeg_stream(file_url, token, output_dir="tmp/cache/stream"):
stream_dir = output_dir
if not os.path.exists(stream_dir):
os.makedirs(stream_dir)
# Set up the FFmpeg command for HLS
output_path = os.path.join(stream_dir, 'output.m3u8')
segment_filename = os.path.join(stream_dir, 'segment_%03d.ts')
ffmpeg = FFmpeg(
inputs={file_url: None},
outputs={
output_path: (
'-c:v libx264 '
'-crf 23 '
'-preset medium '
'-c:a aac '
'-b:a 192k '
'-f hls '
'-hls_time 10 '
'-hls_list_size 0 '
'-hls_segment_filename ' + segment_filename
)
},
global_options='-headers "Authorization: Bearer ' + token + '"'
)
try:
# Log the command being executed
command_str = ' '.join(ffmpeg.cmd)
logging.debug(f"Running FFmpeg command: {command_str}")
# Run the FFmpeg command
ffmpeg.run(stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# Check if the output file was created
if os.path.exists(output_path):
logging.info(f"HLS playlist created at {output_path}")
else:
logging.error(f"HLS playlist not created at {output_path}")
except Exception as e:
logging.error(f"Error using FFmpeg to stream file: {e}")
# if __name__ == "__main__":
# url = "https://huggingface.co/Unicone-Studio/jellyfin_media/resolve/main/films/Funky%20Monkey%202004/Funky%20Monkey%20(2004)%20Web-dl%201080p.mp4"
# token = os.getenv("TOKEN")
# ffmpeg_stream(url, token)
|