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,
--- 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