Index: idvid =================================================================== --- idvid (revision 2161) +++ idvid (working copy) @@ -215,7 +215,10 @@ TOTAL_AV_BITRATE=$(awk -F: '{gsub("kb/s", "")}; /bitrate:/ {print $6*1000}' "$SCRATCH_FILE") ## take the lower of the two if test $ID_VIDEO_BITRATE -eq 0 || test $TOTAL_AV_BITRATE -lt $ID_VIDEO_BITRATE; then - ID_VIDEO_BITRATE=$TOTAL_AV_BITRATE + # make sure we have a value from ffmpeg + if test -n $TOTAL_AV_BITRATE; then + ID_VIDEO_BITRATE=$TOTAL_AV_BITRATE + fi else ID_VIDEO_BITRATE=$ID_VIDEO_BITRATE fi @@ -241,6 +244,8 @@ sed -r 's/.* ([0-9]+) Hz.*/\1/')") A_BITRATES=("${A_BITRATES[@]}" "$(echo $CUR_CHAN | \ sed -r 's/.* ([0-9]+) kb\/s.*/\1/')") + # make sure the above is a number, else set A_BITRATE to 0 + ! test_is_number ${A_BITRATES[i]} && A_BITRATES[i]=0 A_CODECS=("${A_CODECS[@]}" "$(echo $CUR_CHAN | \ sed -r 's/.*Audio: ([^,]+),.*/\1/')") if $USE_HEX_TRACKS; then @@ -248,6 +253,12 @@ else MP_TRACKNUM=$i fi + # last ditch effort to get audio bitrate if we still don't have it + if test ${A_BITRATES[i]} -eq 0; then + MENC_ABITRATE=$(mencoder "$INFILE" -aid $MP_TRACKNUM -oac pcm -ovc copy \ + -frames 90 -o /dev/null 2>&1 | awk '/AUDIO/ {print $7}') + test_is_number $MENC_ABITRATE && A_BITRATES[i]=${MENC_ABITRATE%.*} + fi A_HEX_TRACKS=("${A_HEX_TRACKS[@]}" "$MP_TRACKNUM") done @@ -340,6 +351,14 @@ V_DURATION=${V_DURATION%%.*} # integer in seconds # overwrite ID_VIDEO_FRAMES since we have a more accurate count now ID_VIDEO_FRAMES=$(awk 'END{print $(NF-1)}' <<< "$MENCODER_STATS") + # if we failed to get a video bitrate earlier, use mencoder stats + if test $ID_VIDEO_BITRATE -eq 0; then + MENCODER_STATS_BR=$(awk -F: 'END{print $2}' <<< "$MENCODER_STATS" | awk '{print $1}') + # make sure it is a number + if test_is_number $MENCODER_STATS_BR; then + ID_VIDEO_BITRATE=${MENCODER_STATS_BR%.*}000 + fi + fi $VERBOSE && echo "$MENCODER_STATS" elif $USE_NAVLOG; then ID_VIDEO_FRAMES=$(awk '{ field = $2 }; END{ print field }' < "${INFILE}".nav_log)