[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