Lars Altenhain wrote: > Hi, > > C.Y.M schrieb: > >> Since Mplayer 0.9.8, there was a new option to select the audio pid >> during play back. There were a few patches floating around and the >> one attached to this email is what I am currently using against the >> current version of mplayer.sh. But, I am having a problem with this >> patch as it sometimes selects the secondary audio track (which is >> usually in a different language) and I am unable to get mplayer to use >> the primary apid. I have attached this patch as reference, but there >> is something still wrong with the audio selection. Does anyone have a >> working solution? >> >> Best Regards, >> > This effect is due to the different numbering scheme for audio tracks in > mpeg and avi files (avi: 1-99, mpeg: 0-31, see man mplayer). Some time > ago I had posted a patch for the mplayer.sh in the forum on vdrportal.de > (http://www.vdrportal.de/board/thread.php?postid=177058#post177058). > This patch increases the AID variable by 1 if an avi file is detected. > And it also checks if the selected audio track is available in the file. > If the selected audio track number is not present in the file, the -aid > parameter is not used in the mplayer command line. This patch is for an > older version of the mplayer.sh file, so I think it doesn't apply > without some small changes. > Thank you. I have created a new patch for mplayer.sh-0.8.6 using the information kindly provided. Best Regards, -------------- next part -------------- --- mplayer.sh.orig 2005-03-01 16:18:07.000000000 -0800 +++ mplayer.sh 2005-03-01 16:16:23.000000000 -0800 @@ -265,7 +259,7 @@ # output: variable ORIG_X and ORIG_Y (global) # variable definitions - local TEMP1 MPLAYER_RETURN + local TEMP1 VALID_AID AVI_FORMAT MPLAYER_RETURN ORIG_X=0; ORIG_Y=0 TEMP1=`$MPLAYER -identify -vo null -ao null -frames 0 "$FILE" 2>/dev/null | grep -i -e "^ID_"` @@ -297,6 +291,19 @@ AUDIO_CODEC=`echo "$TEMP1"|grep ID_AUDIO_CODEC|cut -d"=" -f2` debugmsg "parsed output for AUDIO_CODEC:" $AUDIO_CODEC + AVI_FORMAT=`file "$FILE" 2>/dev/null | grep -i -e "AVI"` + if test "$AVI_FORMAT" != ""; then + echolog "AVI format detected, increasing audiostreamid by 1" + AID=$(($AID+1)) + fi + + VALID_AID=`$MPLAYER -aid $AID -identify -vo null -ao null -frames 0 "$FILE" 2>/dev/null | grep -i -e "^ID_AUDIO"` + + if test "$VALID_AID" == ""; then + echolog "selected audiostream not in file, using default" + AID=-1; + fi + return; } @@ -481,7 +488,8 @@ declare ORIG_FPS NEW_FPS ORIG_ASPECT VIDEO_FORMAT AUDIO_CODEC declare CMDLINE AOUT REMOTE USERDEF SUFFIX declare FILE="$1" -declare SLAVE="$2" +declare AID="$2" +declare SLAVE="$3" declare -a XResPAL[0] declare -a XResNTSC[0] declare FDSTR="" @@ -552,6 +562,9 @@ fi fi +# small patch: +if test $AID -gt 0; then CMDLINE="$CMDLINE -aid $AID"; fi + debugvar CMDLINE "$CMDLINE" exec $CMDLINE "$FILE" exit