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 update;
apt upgrade -y; 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/* 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 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 # Create system user if it doesn't exist
sudo useradd -m -s /bin/bash shreebhattji sudo useradd -m -s /bin/bash shreebhattji
sudo smbpasswd -a 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 sudo chmod 755 /var/www/html
# Add shreebhattji to www-data group to avoid read/write conflicts # Add shreebhattji to www-data group to avoid read/write conflicts
@ -54,4 +56,10 @@ StandardError=journal
WantedBy=multi-user.target WantedBy=multi-user.target
EOF 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 pip install yt-dlp --break-system-packages

View File

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