instance1 / video.py
ChandimaPrabath's picture
fix
feb5ce7
raw
history blame
1.88 kB
import os
import logging
import ffmpeg
# 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_id=None):
# Generate a unique directory for the stream
stream_dir = os.path.join(output_dir, stream_id)
if not os.path.exists(stream_dir):
os.makedirs(stream_dir)
# Set the output paths
output_path = os.path.join(stream_dir, 'output.m3u8')
segment_filename = os.path.join(stream_dir, 'segment_%03d.ts')
# Log the URL and output paths
logging.debug(f"URL: {file_url}")
logging.debug(f"Output Path: {output_path}")
logging.debug(f"Segment Filename: {segment_filename}")
try:
# Log the command being executed
logging.debug(f"Starting FFmpeg process with URL: {file_url}")
# Run the FFmpeg command using ffmpeg-python
process = (
ffmpeg
.input(file_url, headers=f"Authorization: Bearer {token}")
.output(output_path,
vcodec='libx264', crf=23, preset='medium',
acodec='aac', audio_bitrate='192k', format='hls',
hls_time=10, hls_list_size=0,
hls_segment_filename=segment_filename)
)
process.run(capture_stdout=True, capture_stderr=True)
# Check if the output file was created
if os.path.exists(output_path):
logging.info(f"HLS playlist created at {output_path}")
return output_path
else:
logging.error(f"HLS playlist not created at {output_path}")
return None
except ffmpeg.Error as e:
error_message = e.stderr.decode('utf8') if e.stderr else str(e)
logging.error(f"Error using FFmpeg to stream file: {error_message}")
return None