From 7f90e50ecc8f144beca10ec6310b8f5085a68317 Mon Sep 17 00:00:00 2001 From: shreebhattji Date: Sun, 28 Jun 2026 11:12:07 +0000 Subject: [PATCH] currunt code --- setup.sh => install.sh | 14 ++- transcode.sh | 224 +++++++++++++++++++++++++++++++++++------ 2 files changed, 207 insertions(+), 31 deletions(-) rename setup.sh => install.sh (73%) diff --git a/setup.sh b/install.sh similarity index 73% rename from setup.sh rename to install.sh index 91e7cf2..fc65e37 100755 --- a/setup.sh +++ b/install.sh @@ -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 diff --git a/transcode.sh b/transcode.sh index 4a23550..7f1747c 100755 --- a/transcode.sh +++ b/transcode.sh @@ -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 \ No newline at end of file