Ticket #26454: patch-ffmpeg-flag-fix.diff
File patch-ffmpeg-flag-fix.diff, 5.8 KB (added by danielb@…, 14 years ago) |
---|
-
src/makempg
old new 202 202 ID_VIDEO_HEIGHT="0" 203 203 ID_VIDEO_FPS="0.000" 204 204 V_DURATION="0" 205 ID_AUDIO_BITRATE="0" 205 206 # mplayer executable to use 206 207 MPLAYER="mplayer" 207 208 # No custom mplayer opts … … 287 288 # ****************************************************************************** 288 289 # Execute the given command-line string, with appropriate stream redirection 289 290 # Args: $@ == text string containing complete command-line 290 # To filter/prettify the subprocess output before writing it to the log file,291 # set the LOG_FILTER variable before calling this function, to e.g.292 # LOG_FILTER="gsed {s/\r/\n/g}" # Replace LF with CR/LF293 291 # ****************************************************************************** 294 CRLF="gsed {s/\r/\n/g}" # Turn carriage-returns into newlines295 FOLD="fold -bs"296 292 function cmd_exec() 297 293 { 298 294 if $FAKE; then … … 301 297 yecho 302 298 return 303 299 else 304 LOG_FILTER="$CRLF" 305 eval "$@" 2>&1 | $LOG_FILTER >> "$LOG_FILE" & 300 eval "$@" 2>&1 | strings >> "$LOG_FILE" & 306 301 PIDS="$PIDS $!" 307 302 fi 308 303 } … … 652 647 yecho 653 648 yecho "Do you want to keep the temporary files that were created ?" 654 649 yecho "Please type \"yes\", or else they will be deleted" 655 yecho "(add '-noask' to your ~/.tovid/makempg.configto avoid"650 yecho "(add '-noask' to the [mpg] section of ~/.tovid/tovid.ini to avoid" 656 651 yecho "being asked this question in the future)" 657 652 read input 658 653 echo … … 1230 1225 LENGTH=$V_DURATION 1231 1226 MPEG_OVERHEAD=$(bc_math "$FIT_SIZE / 100") 1232 1227 AUD_VID_SIZE=$(bc_math "$FIT_SIZE - $MPEG_OVERHEAD") 1228 # When the audio is already compliant and the bitrate is known we 1229 # can calculate a more accurate size. 1230 if $AUDIO_OK && test "$ID_AUDIO_BITRATE" != "0"; then 1231 AUD_BITRATE=$(echo "scale = 0; $ID_AUDIO_BITRATE / 1000" | bc) 1232 fi 1233 1233 AUDIO_SIZE=$(bc_math "$AUD_BITRATE * $LENGTH / (8 *1024)") 1234 1234 VIDEO_SIZE=$(bc_math "$AUD_VID_SIZE - $AUDIO_SIZE") 1235 1235 VID_BITRATE=$(bc_math "$VIDEO_SIZE*8*1024 / $LENGTH") … … 1849 1849 [[ $TARGET = "DVD-VCD" ]] && FF_ADD_ARGS="$FF_ADD_ARGS -g 12" # experiment FIXME 1850 1850 1851 1851 # Padding, for any letterboxing to be done 1852 FF_VPAD="" 1853 FF_HPAD="" 1854 FF_VPIX=$(expr \( $TGT_HEIGHT \- $INNER_HEIGHT \) \/ 2) 1855 FF_HPIX=$(expr \( $TGT_WIDTH \- $INNER_WIDTH \) \/ 2) 1856 test "$FF_VPIX" -ne 0 && FF_VPAD="-padtop $FF_VPIX -padbottom $FF_VPIX" 1857 test "$FF_HPIX" -ne 0 && FF_HPAD="-padleft $FF_HPIX -padright $FF_HPIX" 1852 FF_PAD='' 1853 FF_VPIX=0 1854 FF_HPIX=0 1855 FF_VPIX=$(( (TGT_HEIGHT - INNER_HEIGHT) / 2 )) 1856 FF_HPIX=$(( (TGT_WIDTH - INNER_WIDTH) / 2 )) 1857 PAD=0 1858 (( FF_VPIX )) || (( FF_HPIX )) && PAD=1 1859 # changed options: -pad{side} to -vfilters pad= , to -vf pad=. Check this. 1860 ff_opts=$(ffmpeg --help 2>&1) 1861 if grep -q -w -- -vf <<< "$ff_opts" && ((PAD)); then 1862 FF_PAD="-vf pad=${TGT_WIDTH}:${TGT_HEIGHT}:${FF_HPIX}:${FF_VPIX}" 1863 elif grep -q -w -- -vfilters <<< "$ff_opts" && ((PAD)); then 1864 FF_PAD="-vfilters pad=${TGT_WIDTH}:${TGT_HEIGHT}:${FF_HPIX}:${FF_VPIX}" 1865 else 1866 FF_HPAD='' 1867 FF_VPAD='' 1868 ((FF_HPIX)) && FF_HPAD="-padleft $FF_HPIX -padright $FF_HPIX" 1869 ((FF_VPIX)) && FF_VPAD="-padtop $FF_VPIX -padbottom $FF_VPIX" 1870 ((PAD)) && FF_PAD="$FF_HPAD $FF_VPAD" 1871 fi 1858 1872 1859 1873 # Target TV system 1860 1874 test "$TVSYS" = "PAL" && FF_TARGET="-target pal" … … 1882 1896 FF_BITRATE="-b ${VID_BITRATE}k -ab ${AUD_BITRATE}k ${AUDIO_CHAN[chan1-1]} " 1883 1897 FF_ENC_CMD="$PRIORITY ffmpeg -i \"$IN_FILE\" $FF_THREAD $CLIP_SEEK $FF_LENGTH $ASYNC $ASYNC1 \ 1884 1898 $FF_TARGET $FF_QUANT $FF_BITRATE $FF_ADD_ARGS $FF_FPS $FF_ILACE \ 1885 $FF_SIZE $FF_ VPAD $FF_HPAD $FF_ASPECT $FF_CHANNEL_MAP"1899 $FF_SIZE $FF_PAD $FF_ASPECT $FF_CHANNEL_MAP" 1886 1900 $OVERWRITE && FF_ENC_CMD="$FF_ENC_CMD -y " 1887 1901 FF_ENC_CMD="$FF_ENC_CMD \"$OUT_FILENAME\" ${NEW_AUDIO[@]}" 1888 1902 yecho "Encoding video and audio with the following command:" 1889 1903 yecho "$FF_ENC_CMD" 1890 1904 1891 LOG_FILTER="$CRLF"1892 1905 cmd_exec "$FF_ENC_CMD" 1893 1906 1894 1907 if $FAKE; then … … 1930 1943 #AUDIO_CMD="$PRIORITY mplayer $MPLAYER_OPTS \"$IN_FILE\" -dumpaudio -dumpfile \"$AUDIO_STREAM\"" 1931 1944 run_audio_cmd() 1932 1945 { 1933 LOG_FILTER="$CRLF"1934 1946 "${AUDIO_CMD[@]}" >> "$LOG_FILE" 2>&1 & 1935 1947 #$PRIORITY ffmpeg $CLIP_SEEK $FF_LENGTH -i "$IN_FILE" -vn -acodec copy \ 1936 1948 #$AUDIO_MAP "${AUDIO_STREAM[@]}" >> "$LOG_FILE" 2>&1 … … 2043 2055 2044 2056 2045 2057 # Copy the video stream 2046 LOG_FILTER="$CRLF"2047 2058 cmd_exec "$VID_COPY_CMD" 2048 2059 2049 2060 … … 2060 2071 fi 2061 2072 VID_PLAY_CMD="$PRIORITY $MPLAYER $NOCONSOLE_CONTROLS -benchmark -nosound -noframedrop $SUBTITLES -vo yuv4mpeg:file=\"$YUV_STREAM\"${YUV4MPEG_ILACE} $VID_FILTER $MPLAYER_OPTS \"$IN_FILE\" $CLIP_SEEK $MP_FRAMES" 2062 2073 if $USE_FFMPEG ; then 2063 VID_ENC_CMD="ffmpeg -i \"$IN_FILE\" $FF_THREAD $CLIP_SEEK $FF_LENGTH -an $FF_TARGET $FF_CODEC $FF_QUANT $FF_BITRATE $FF_ADD_ARGS $FF_ILACE $FF_SIZE $FF_ VPAD $FF_HPAD $FF_ASPECT -y \"$VIDEO_STREAM\""2074 VID_ENC_CMD="ffmpeg -i \"$IN_FILE\" $FF_THREAD $CLIP_SEEK $FF_LENGTH -an $FF_TARGET $FF_CODEC $FF_QUANT $FF_BITRATE $FF_ADD_ARGS $FF_ILACE $FF_SIZE $FF_PAD $FF_ASPECT -y \"$VIDEO_STREAM\"" 2064 2075 else 2065 2076 VID_ENC_CMD="cat \"$YUV_STREAM\" | $YUVDENOISE $ADJUST_FPS $PRIORITY mpeg2enc --sequence-length $DISC_SIZE --nonvideo-bitrate $NONVIDEO_BITRATE $MTHREAD $ASPECT_FMT $MPEG2_FMT $VID_FPS $VERBOSE $VID_NORM $MPEG2_QUALITY -o \"$VIDEO_STREAM\"" 2066 2077 fi … … 2078 2089 file_output_progress "$YUV_STREAM" "Ripping raw uncompressed video stream" 2079 2090 fi 2080 2091 2081 LOG_FILTER="$CRLF"2082 2092 cmd_exec "$VID_ENC_CMD" 2083 2093 2084 2094 # For parallel encoding, nothing further yet