[vdr] Is there a current Mplayer.sh for apid selection?

C.Y.M syphir at syphir.sytes.net
Wed Mar 2 01:35:45 CET 2005


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


More information about the vdr mailing list