1
0
MoeClub 5 жил өмнө
parent
commit
9d868e8092
1 өөрчлөгдсөн 18 нэмэгдсэн , 4 устгасан
  1. 18 4
      ffmpeg/media.sh

+ 18 - 4
ffmpeg/media.sh

@@ -14,7 +14,6 @@ MaxCheck=10
 MaxTime=10
 AutoClear=0
 QuickMode=1
-IsQuick=0
 
 
 # Main
@@ -38,15 +37,15 @@ OutPutLog="${CurrentDir}/${MediaName}.log"
 MediaFolder="${CurrentDir}/${MediaName}.output"
 
 # cache
-[ "$QuickMode" == 1 ] && [ -f "${OutPutM3u8Bak}" ] && [ -d "${MediaFolder}" ] && IsQuick=1
-if [ "$IsQuick" != 1 ]; then
+[ "$QuickMode" == 1 ] && [ -f "${OutPutM3u8Bak}" ] && [ -d "${MediaFolder}" ] || QuickMode=0
+if [ "$QuickMode" != 1 ]; then
   rm -rf "${OutPutLog}"
   rm -rf "${MediaFolder}"
   mkdir -p "${MediaFolder}"
 fi
 
 ## m3u8
-if [ "$IsQuick" != 1 ]; then
+if [ "$QuickMode" != 1 ]; then
   BitRate=`ffprobe -v error -show_entries format=bit_rate -of default=noprint_wrappers=1:nokey=1 "${Media}"`
   echo "media bitrate: ${BitRate}"
   if [ "$ForceH264" -eq 0 ]; then
@@ -133,6 +132,20 @@ fi
 
 # check
 echo "check upload..."
+
+function ForceVBR(){
+  fsName="$1"
+  [ -f "${fsName}" ] || return
+  [ `du -s -k "${fsName}" |cut -f1` -le `awk 'BEGIN{print '${MaxSize}' * 1024}' |cut -d'.' -f1` ] && return
+  NewFsName="New_${fsName}"
+  cp -rf "${fsName}" "${NewFsName}"
+  ForceMaxRate=`awk 'BEGIN{print '${ForceRate}' * '${ForceMaxRadio}'}' |cut -d'.' -f1`
+  ForceBuf=`awk 'BEGIN{print '${ForceRate}' / '${ForceMaxRadio}'}' |cut -d'.' -f1`
+  VideoAddon="-b:v ${ForceRate} -maxrate ${ForceMaxRate} -bufsize ${ForceBuf}"
+  ffmpeg -y -v info -i "${NewFsName}" -vcodec h264 -acodec copy -strict experimental -bsf:v h264_mp4toannexb ${VideoAddon} -f mpegts "${fsName}"
+  [ -f "${NewFsName}" ] && [ -f "${fsName}" ] && rm "${NewFsName}"
+}
+
 for((i=0; i<$MaxCheck; i++)); do
   BadCheck=`grep -v "^#\|^https\?://" "${OutPutM3u8}"`
   [ -n "$BadCheck" ] || break
@@ -145,6 +158,7 @@ for((i=0; i<$MaxCheck; i++)); do
       echo "Error: not found '${Item}'."
       exit 1
     fi
+    ForceVBR "${BadItem}"
     bash "${ScriptDir}/${Uploader}" "${BadItem}" |tee -a "${OutPutLog}"
   done
   sed -i '/;\ NULL_/d' "${OutPutLog}"