currunt code

This commit is contained in:
shreebhattji 2026-06-28 11:12:07 +00:00
parent 972dfdf561
commit 7f90e50ecc
2 changed files with 207 additions and 31 deletions

View File

@ -1,16 +1,18 @@
apt update;
apt upgrade -y;
apt install php ffmpeg apache2 php-gd samba python3-pip -y
apt install php ffmpeg apache2 php-gd jq samba python3-pip -y
rm -rf /var/www/html/*
mkdir -p /var/www/html/download /var/www/html/downloader /var/www/html/download/queue /var/www/html/download/ready
mkdir -p /var/www/html/download /var/www/html/downloader /var/www/html/download/queue /var/www/html/download/ready /var/www/html/settings
cp -r downloader/* /var/www/html/downloader
cp -r settings/* /var/www/html/settings
cp index.php /var/www/html/
# Create system user if it doesn't exist
sudo useradd -m -s /bin/bash shreebhattji
sudo smbpasswd -a shreebhattji
echo "foreverstreamingpartner" | sudo smbpasswd -s -a shreebhattji
printf "foreverstreamingpartner\nforeverstreamingpartner\n" | sudo smbpasswd -s -a shreebhattji
sudo chmod 755 /var/www/html
# Add shreebhattji to www-data group to avoid read/write conflicts
@ -54,4 +56,10 @@ StandardError=journal
WantedBy=multi-user.target
EOF
systemctl enable transcode
systemctl restart transcode
chown -R www-data:www-data /var/www/
chmod 777 -R /var/www/html/download
pip install yt-dlp --break-system-packages

View File

@ -1,11 +1,12 @@
#!/bin/bash
echo "Transcoding service started..."
# Configuration
QUEUE_DIR="/var/www/download/queue"
READY_DIR="/var/www/download/ready"
SETTINGS_FILE="/path/to/settings/settings.json"
QUEUE_DIR="/var/www/html/download/queue"
READY_DIR="/var/www/html/download/ready"
SETTINGS_FILE="/var/www/html/settings/settings.json"
LOG_FILE="/var/log/convert.log"
LOGO_FILE="/var/www/settings/logo.png"
LOGO_FILE="/var/www/html/settings/logo.png"
# Create directories if they don't exist
mkdir -p "$QUEUE_DIR"
@ -99,18 +100,109 @@ while true; do
# Calculate logo size
logo_size=$(calculate_logo_size "$video_width" "$video_height")
# Convert file with ffmpeg using settings from JSON and logo overlay
if ffmpeg -i "$file" \
-c:v "$VIDEO_FORMAT" \
-b:v "$VIDEO_BITRATE" \
-c:a "$AUDIO_FORMAT" \
-b:a "$AUDIO_BITRATE" \
-s "$RESOLUTION" \
-r "$FRAME_RATE" \
-g "$GOP" \
-vf "scale=iw:ih,overlay=W-w-10:10" \
"$output_file" 2>>"$LOG_FILE"; then
# If conversion successful, remove original file
# STB compatible encoding based on video format
if [ "$VIDEO_FORMAT" = "mpeg2video" ]; then
# MPEG2 settings for STB compatibility
ffmpeg \
-i "$file" \
-i "$LOGO_FILE" \
-filter_complex "\
[0:v]scale=${RESOLUTION}[v];\
[1:v]scale=${logo_size}[logo];\
[v][logo]overlay=W-w-20:20" \
-c:v mpeg2video \
-b:v "$VIDEO_BITRATE" \
-bt "$VIDEO_BITRATE" \
-maxrate "$VIDEO_BITRATE" \
-bufsize "$VIDEO_BITRATE" \
-flags +global_header \
-profile:v 2 \
-level:v 4 \
-c:a "$AUDIO_FORMAT" \
-b:a "$AUDIO_BITRATE" \
-ab "$AUDIO_BITRATE" \
-r "$FRAME_RATE" \
-g "$GOP" \
-f mpegts "$output_file" \
2>>"$LOG_FILE"
elif [ "$VIDEO_FORMAT" = "libx264" ]; then
# H.264 settings for STB compatibility
ffmpeg \
-i "$file" \
-i "$LOGO_FILE" \
-filter_complex "\
[0:v]scale=${RESOLUTION}[v];\
[1:v]scale=${logo_size}[logo];\
[v][logo]overlay=W-w-20:20" \
-c:v libx264 \
-b:v "$VIDEO_BITRATE" \
-bt "$VIDEO_BITRATE" \
-maxrate "$VIDEO_BITRATE" \
-bufsize "$VIDEO_BITRATE" \
-preset fast \
-profile:v baseline \
-level 3.0 \
-flags +global_header \
-c:a "$AUDIO_FORMAT" \
-b:a "$AUDIO_BITRATE" \
-ab "$AUDIO_BITRATE" \
-r "$FRAME_RATE" \
-g "$GOP" \
-f mpegts "$output_file" \
2>>"$LOG_FILE"
elif [ "$VIDEO_FORMAT" = "libx265" ]; then
# H.265 settings for STB compatibility
ffmpeg \
-i "$file" \
-i "$LOGO_FILE" \
-filter_complex "\
[0:v]scale=${RESOLUTION}[v];\
[1:v]scale=${logo_size}[logo];\
[v][logo]overlay=W-w-20:20" \
-c:v libx265 \
-b:v "$VIDEO_BITRATE" \
-bt "$VIDEO_BITRATE" \
-maxrate "$VIDEO_BITRATE" \
-bufsize "$VIDEO_BITRATE" \
-preset fast \
-profile:v main \
-level 3.0 \
-flags +global_header \
-c:a "$AUDIO_FORMAT" \
-b:a "$AUDIO_BITRATE" \
-ab "$AUDIO_BITRATE" \
-r "$FRAME_RATE" \
-g "$GOP" \
-f mpegts "$output_file" \
2>>"$LOG_FILE"
else
# Default fallback to MPEG2
ffmpeg \
-i "$file" \
-i "$LOGO_FILE" \
-filter_complex "\
[0:v]scale=${RESOLUTION}[v];\
[1:v]scale=${logo_size}[logo];\
[v][logo]overlay=W-w-20:20" \
-c:v mpeg2video \
-b:v "$VIDEO_BITRATE" \
-bt "$VIDEO_BITRATE" \
-maxrate "$VIDEO_BITRATE" \
-bufsize "$VIDEO_BITRATE" \
-flags +global_header \
-profile:v 2 \
-level:v 4 \
-c:a "$AUDIO_FORMAT" \
-b:a "$AUDIO_BITRATE" \
-ab "$AUDIO_BITRATE" \
-r "$FRAME_RATE" \
-g "$GOP" \
-f mpegts "$output_file" \
2>>"$LOG_FILE"
fi
# Check if conversion was successful
if [ $? -eq 0 ]; then
rm "$file"
echo "$(date): Successfully converted $original_name to $sanitized_name" >> "$LOG_FILE"
else
@ -118,17 +210,93 @@ while true; do
echo "$(date): Failed to convert $original_name" >> "$LOG_FILE"
fi
else
# Convert file without logo if logo file doesn't exist
if ffmpeg -i "$file" \
-c:v "$VIDEO_FORMAT" \
-b:v "$VIDEO_BITRATE" \
-c:a "$AUDIO_FORMAT" \
-b:a "$AUDIO_BITRATE" \
-s "$RESOLUTION" \
-r "$FRAME_RATE" \
-g "$GOP" \
"$output_file" 2>>"$LOG_FILE"; then
# If conversion successful, remove original file
# STB compatible encoding without logo
if [ "$VIDEO_FORMAT" = "mpeg2video" ]; then
# MPEG2 settings for STB compatibility
ffmpeg \
-i "$file" \
-c:v mpeg2video \
-b:v "$VIDEO_BITRATE" \
-bt "$VIDEO_BITRATE" \
-maxrate "$VIDEO_BITRATE" \
-bufsize "$VIDEO_BITRATE" \
-flags +global_header \
-profile:v 2 \
-level:v 4 \
-c:a "$AUDIO_FORMAT" \
-b:a "$AUDIO_BITRATE" \
-ab "$AUDIO_BITRATE" \
-s "$RESOLUTION" \
-r "$FRAME_RATE" \
-g "$GOP" \
-f mpegts "$output_file" \
2>>"$LOG_FILE"
elif [ "$VIDEO_FORMAT" = "libx264" ]; then
# H.264 settings for STB compatibility
ffmpeg \
-i "$file" \
-c:v libx264 \
-b:v "$VIDEO_BITRATE" \
-bt "$VIDEO_BITRATE" \
-maxrate "$VIDEO_BITRATE" \
-bufsize "$VIDEO_BITRATE" \
-preset fast \
-profile:v baseline \
-level 3.0 \
-flags +global_header \
-c:a "$AUDIO_FORMAT" \
-b:a "$AUDIO_BITRATE" \
-ab "$AUDIO_BITRATE" \
-s "$RESOLUTION" \
-r "$FRAME_RATE" \
-g "$GOP" \
-f mpegts "$output_file" \
2>>"$LOG_FILE"
elif [ "$VIDEO_FORMAT" = "libx265" ]; then
# H.265 settings for STB compatibility
ffmpeg \
-i "$file" \
-c:v libx265 \
-b:v "$VIDEO_BITRATE" \
-bt "$VIDEO_BITRATE" \
-maxrate "$VIDEO_BITRATE" \
-bufsize "$VIDEO_BITRATE" \
-preset fast \
-profile:v main \
-level 3.0 \
-flags +global_header \
-c:a "$AUDIO_FORMAT" \
-b:a "$AUDIO_BITRATE" \
-ab "$AUDIO_BITRATE" \
-s "$RESOLUTION" \
-r "$FRAME_RATE" \
-g "$GOP" \
-f mpegts "$output_file" \
2>>"$LOG_FILE"
else
# Default fallback to MPEG2
ffmpeg \
-i "$file" \
-c:v mpeg2video \
-b:v "$VIDEO_BITRATE" \
-bt "$VIDEO_BITRATE" \
-maxrate "$VIDEO_BITRATE" \
-bufsize "$VIDEO_BITRATE" \
-flags +global_header \
-profile:v 2 \
-level:v 4 \
-c:a "$AUDIO_FORMAT" \
-b:a "$AUDIO_BITRATE" \
-ab "$AUDIO_BITRATE" \
-s "$RESOLUTION" \
-r "$FRAME_RATE" \
-g "$GOP" \
-f mpegts "$output_file" \
2>>"$LOG_FILE"
fi
# Check if conversion was successful
if [ $? -eq 0 ]; then
rm "$file"
echo "$(date): Successfully converted $original_name to $sanitized_name" >> "$LOG_FILE"
else
@ -139,5 +307,5 @@ while true; do
done
# Wait before checking for new files
sleep 5
sleep 60
done