currunt code
This commit is contained in:
parent
972dfdf561
commit
7f90e50ecc
|
|
@ -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
|
||||||
224
transcode.sh
224
transcode.sh
|
|
@ -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
|
||||||
Loading…
Reference in New Issue