Commit 44688419cd4ae29c38488553465f1c35fd2fd784

Authored by Imanol-Mikel Barba Sabariego
1 parent 94f5fffe

--no commit message

hls_script.sh 0 → 100755
  1 +#!/bin/bash
  2 +
  3 +# WIFLY VARIABLES
  4 +
  5 +SSID=PBE
  6 +#SSID=SERVER_WLAN
  7 +ROUTE=$1
  8 +DEST_IP=10.0.2.100
  9 +#DEST_IP=192.168.1.1
  10 +PORT=80
  11 +WIFLY=/dev/ttyUSB0
  12 +SERIAL_OPTS="ispeed $SPEED ospeed $SPEED"
  13 +SPEED=9600
  14 +STARTWORD="Content-Type: application/vnd.apple.mpegurl"
  15 +ENDWORD="*CLOS*"
  16 +WRITE=0
  17 +
  18 +# PARSING VARIABLES
  19 +
  20 +M3U8_VALIDATED=0
  21 +SEQUENCE_FIRST=0
  22 +MAX_DURATION=-1
  23 +CURRENT_SEGMENT=0
  24 +CURRENT_LINE=1
  25 +EXTINF=0
  26 +CODECS=""
  27 +RESOLUTION=""
  28 +BANDWIDTH=""
  29 +PROGRAMID=""
  30 +EXTXSTREAM=0
  31 +
  32 +# FUNCTIONS
  33 +
  34 +parse()
  35 +{
  36 + if [[ $line == "" ]];then
  37 + ((CURRENT_LINE++))
  38 + return
  39 + else
  40 + if [[ $M3U8_VALIDATED -eq 0 ]]; then
  41 + if [[ $line == "#EXTM3U" ]]; then
  42 + M3U8_VALIDATED=1
  43 + else
  44 + echo "ERROR: This is not an m3u8 file!!"
  45 + exit 1
  46 + fi
  47 + else
  48 + if [[ `echo $line | head -c1` == "#" ]]; then
  49 + if [[ `echo $line | head -c4` == "#EXT" ]]; then
  50 + case `echo $line | cut -d':' -f 1` in
  51 + "#EXT-X-MEDIA-SEQUENCE")
  52 + SEQUENCE_FIRST=`echo $line | cut -d':' -f 2`;
  53 + echo "INFO: First element to be played is: $SEQUENCE_FIRST";;
  54 + "#EXT-X-TARGETDURATION")
  55 + MAX_DURATION=`echo $line | cut -d':' -f 2`;
  56 + echo "INFO: Maximum segment duration is: $MAX_DURATION";;
  57 + "#EXTINF")
  58 + DURATION=`echo $line | cut -d':' -f 2 | cut -d',' -f 1`
  59 + if [[ $DURATION > $MAX_DURATION ]]; then
  60 + echo "ERROR: Segment $CURRENT_SEGMENT on line $CURRENT_LINE is larger than EXT-X-TARGETDURATION"
  61 + exit 1
  62 + else
  63 + NAME=`echo $line | cut -d':' -f 2 | cut -d',' -f 2`
  64 + EXTINF=1
  65 + fi;;
  66 + "#EXT-X-STREAM-INF")
  67 + EXTXSTREAM=1
  68 + PROGRAMID=""
  69 + CODECS=""
  70 + RESOLUTION=""
  71 + ARGUMENTS=`echo $line | cut -d':' -f 2`
  72 + i=1
  73 + while [[ `echo $ARGUMENTS | cut -d',' -f $i` != "" ]]; do
  74 + PARAMETER=`echo $ARGUMENTS | cut -d',' -f $i | cut -d'=' -f 2`
  75 + case `echo $ARGUMENTS | cut -d',' -f $i | cut -d'=' -f 1` in
  76 + "PROGRAM-ID")
  77 + PROGRAMID=$PARAMETER;;
  78 + "BANDWIDTH")
  79 + BANDWIDTH=$PARAMETER;;
  80 + "RESOLUTION")
  81 + RESOLUTION=$PARAMETER;;
  82 + "CODECS")
  83 + CODECS=$PARAMETER;;
  84 + esac
  85 + ((i++))
  86 + done;;
  87 + "#EXT-X-ENDLIST")
  88 + echo "INFO: Playlist end reached";;
  89 + esac
  90 + else
  91 + echo "INFO: Comment found on line $CURRENT_LINE: \"`echo $line | cut -d'#' -f 2`\""
  92 + fi;
  93 + else
  94 + if [[ $EXTINF -eq 1 ]]; then
  95 + echo -n "SEGMENT $CURRENT_SEGMENT: \"$NAME\" - $DURATION seconds ($line)"
  96 + EXTINF=0
  97 + if [[ $CURRENT_SEGMENT -eq $SEQUENCE_FIRST ]]; then
  98 + echo " (first element)"
  99 + else
  100 + echo ""
  101 + fi;
  102 + ((CURRENT_SEGMENT++))
  103 + elif [[ $EXTXSTREAM -eq 1 ]]; then
  104 + echo "PLAYLIST: $line [PROGRAM-ID=$PROGRAMID,BANDWIDTH=$BANDWIDTH,RESOLUTION=$RESOLUTION,CODECS=$CODECS]"
  105 + EXTXSTREAM=0
  106 + else
  107 + echo "ERROR: Unexpected string \"$line\""
  108 + exit 1
  109 + fi
  110 + fi
  111 + fi
  112 + fi
  113 + ((CURRENT_LINE++))
  114 +}
  115 +
  116 +fetch()
  117 +{
  118 + echo -ne "set com remote GET\$$1\r" >> $WIFLY
  119 + echo -ne "open $DEST_IP $PORT\r" >> $WIFLY
  120 +
  121 + # PARSE
  122 +
  123 + cat $WIFLY | while read line; do
  124 + line=`echo $line | tr -d '\r' | sed 's/\*CLOS\*CMD/\*CLOS\*/g'` # STRIP EXTRA CR AND DETECT EOF
  125 + if [[ "$line" == "$STARTWORD" && $WRITE == 0 ]]; then
  126 + echo "INFO: Playlist $1 START:"
  127 + WRITE=1;
  128 + continue;
  129 + fi
  130 + if [[ "$line" == "$ENDWORD" ]]; then
  131 + echo "INFO: EOF"
  132 + break;
  133 + fi
  134 + if [[ $WRITE -eq 0 ]]; then
  135 + continue;
  136 + else
  137 + parse $line
  138 + fi
  139 + done
  140 +}
  141 +
  142 +initialize()
  143 +{
  144 + echo -n "\$\$\$" >> $WIFLY
  145 + # IF ANY CHARACTER GETS INTO THE BUFFER 250 ms AFTER THE $$$ SEQUENCE IT WILL NOT ENTER COMMAND MODE
  146 + sleep 0.300 # TO BE SAFE
  147 +}
  148 +
  149 +if [[ -z $1 ]]; then
  150 + echo "ERROR: Missing path"
  151 + echo -e "\nUSAGE: $0 <RELATIVE_PATH> (i.e /playlist.m3u8)"
  152 + exit 1
  153 +fi
  154 +
  155 +# SERIAL PORT CONFIGURATION
  156 +
  157 +stty -F $WIFLY $SERIAL_OPTS
  158 +
  159 +# INPUT COMMANDS
  160 +
  161 +initialize
  162 +echo -ne "set wlan join 1\r" >> $WIFLY
  163 +echo -ne "set wlan auth 0\r" >> $WIFLY
  164 +echo -ne "set wlan ssid $SSID\r" >> $WIFLY
  165 +echo -ne "join $SSID\r" >> $WIFLY
  166 +sleep 5 # GIVE TIME TO THE DHCP CLIENT
  167 +echo -ne "set ip proto 18\r" >> $WIFLY
  168 +fetch $ROUTE
  169 +
  170 +#cat $1 | while read line; do
  171 +# parse $line
  172 +#done
  173 +
  174 +exit 0
... ...
src/com/upc/pbe/upcnews/Parser.java
... ... @@ -86,7 +86,27 @@ public class Parser
86 86  
87 87 else if(extTag[0].equals("#EXT-X-STREAM-INF"))
88 88 {
89   -
  89 + /*"#EXT-X-STREAM-INF")
  90 + EXTXSTREAM=1
  91 + PROGRAMID=""
  92 + CODECS=""
  93 + RESOLUTION=""
  94 + ARGUMENTS=`echo $line | cut -d':' -f 2`
  95 + i=1
  96 + while [[ `echo $ARGUMENTS | cut -d',' -f $i` != "" ]]; do
  97 + PARAMETER=`echo $ARGUMENTS | cut -d',' -f $i | cut -d'=' -f 2`
  98 + case `echo $ARGUMENTS | cut -d',' -f $i | cut -d'=' -f 1` in
  99 + "PROGRAM-ID")
  100 + PROGRAMID=$PARAMETER;;
  101 + "BANDWIDTH")
  102 + BANDWIDTH=$PARAMETER;;
  103 + "RESOLUTION")
  104 + RESOLUTION=$PARAMETER;;
  105 + "CODECS")
  106 + CODECS=$PARAMETER;;
  107 + esac
  108 + ((i++))
  109 + done;;*/
90 110 }
91 111  
92 112 else if(extTag[0].equals("#EXT-X-ENDLIST"))
... ... @@ -100,42 +120,16 @@ public class Parser
100 120 }
101 121 }
102 122  
103   - }
104   -
105   - }
106   - }
107   -
108   -
109   - /*
110   - "#EXT-X-STREAM-INF")
111   - EXTXSTREAM=1
112   - PROGRAMID=""
113   - CODECS=""
114   - RESOLUTION=""
115   - ARGUMENTS=`echo $line | cut -d':' -f 2`
116   - i=1
117   - while [[ `echo $ARGUMENTS | cut -d',' -f $i` != "" ]]; do
118   - PARAMETER=`echo $ARGUMENTS | cut -d',' -f $i | cut -d'=' -f 2`
119   - case `echo $ARGUMENTS | cut -d',' -f $i | cut -d'=' -f 1` in
120   - "PROGRAM-ID")
121   - PROGRAMID=$PARAMETER;;
122   - "BANDWIDTH")
123   - BANDWIDTH=$PARAMETER;;
124   - "RESOLUTION")
125   - RESOLUTION=$PARAMETER;;
126   - "CODECS")
127   - CODECS=$PARAMETER;;
128   - esac
129   - ((i++))
130   - done;;
131   - "#EXT-X-ENDLIST")
132   - echo "INFO: Playlist end reached";;
133   - esac
134   - else
  123 + /*else
135 124 echo "INFO: Comment found on line $CURRENT_LINE: \"`echo $line | cut -d'#' -f 2`\""
136   - fi;
137   - else
138   - if [[ $EXTINF -eq 1 ]]; then
  125 + fi;*/
  126 +
  127 +
  128 + } //es tag
  129 + else
  130 + {
  131 +
  132 + /*if [[ $EXTINF -eq 1 ]]; then
139 133 echo -n "SEGMENT $CURRENT_SEGMENT: \"$NAME\" - $DURATION seconds ($line)"
140 134 EXTINF=0
141 135 if [[ $CURRENT_SEGMENT -eq $SEQUENCE_FIRST ]]; then
... ... @@ -150,15 +144,11 @@ public class Parser
150 144 else
151 145 echo "ERROR: Unexpected string \"$line\""
152 146 exit 1
153   - fi
154   - fi
155   - fi
156   - fi
157   - ((CURRENT_LINE++))
158   -}
159   -
160   - */
161   -
  147 + */
  148 + } //no es tag
  149 + } //ya validado
  150 + }
  151 + currentLine++;
162 152 }
163 153  
164 154 }
... ...