LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Software (https://www.linuxquestions.org/questions/linux-software-2/)
-   -   MLB.TV in Linux (https://www.linuxquestions.org/questions/linux-software-2/mlb-tv-in-linux-432479/)

SkyMeadow 05-28-2016 01:58 PM

Disregard prior post
 
Please disregard my prior post. (I can't see how to delete it.) Problem solved.

BostonPeng 05-29-2016 10:35 AM

Quote:

Originally Posted by daftcat (Post 5551398)
Looks like you're not using the experimental branch.

Check the README or INSTALL file in a recent SVN revision for the latest mlbhls github.

Code:

grep "git clone" *


(Not in front of an svn repo myself or I'd post that output.)

The output is
Code:

$  grep "git clone" *
INSTALL:git clone https://github.com/tonycpsu/mlbtv-hls-nexdef.git -b experimental
grep: mlbtv-hls-nexdef: Is a directory
grep: MLBviewer: Is a directory
grep: test: Is a directory

Quote:

Originally Posted by daftcat (Post 5551398)
Clone it to a different directory (or remove the old directory first.)

make

and since there's no make install,

Code:

sudo cp mlbhls $(which mlbhls)

(assuming you have already installed it or copy it to /usr/bin if this is first time installing.)

It took me some time to get to this but I finally have HD. Thanks!

comat0se 06-01-2016 04:19 PM

Is it possible to get support for the MLB Plus video feed that's happening on some games? Thanks!

daftcat 06-02-2016 05:32 AM

Quote:

Originally Posted by comat0se (Post 5554218)
Is it possible to get support for the MLB Plus video feed that's happening on some games? Thanks!

What is the MLB plus feed? I don't have time to look for "some games." Please tell me a specific game to look at to see this feature.

comat0se 06-02-2016 12:26 PM

Quote:

Originally Posted by daftcat (Post 5554458)
What is the MLB plus feed? I don't have time to look for "some games." Please tell me a specific game to look at to see this feature.

Specifically the Yankees games on Apr 29th and 30th are two examples that have this MLB Plus feed. You can see it listed here as an additional video feed: http://mlb.com/mediacenter/#date=4/29/2016

Here's the press release about it: http://m.mlb.com/news/article/175133...l-way-to-watch

Also here are upcoming games in June with MLB Plus:
Fri, Jun 3 8:00 PM San Francisco Giants @ St. Louis Cardinals
Wed, Jun 8 7:00 PM Los Angeles Angels of Anaheim @ New York Yankees
Tue, Jun 14 7:00 PM Chicago Cubs @ Washington Nationals
Tue, Jun 21 8:00 PM St. Louis Cardinals @ Chicago Cubs
Thu, Jun 30 7:00 PM Chicago Cubs @ New York Mets

daftcat 06-03-2016 11:22 PM

Not sure if I will get to this anytime soon because it's a number of non-trivial changes and I have higher work priorities.

For someone who wants to submit a patch, you'll need to look in MLBviewer/mlbSchedule.py and add 'mlbtv_enhanced' as one of the valid media types. Search for 'mlbtv_home' to see all the places it may need to be added. As to how to select it, that may be easier to add a new switch in mlbplay than to add a new keybinding in mlbviewer. In that switch, add a value to the MLBConfig object, mycfg.set('enhanced',True), and then add a check somewhere in MLBviewer/mlbSchedule.py to use the mlbtv_enhanced streams instead of the mlbtv_home or mlbtv_away.


Quote:

Originally Posted by comat0se (Post 5554678)
Specifically the Yankees games on Apr 29th and 30th are two examples that have this MLB Plus feed. You can see it listed here as an additional video feed: http://mlb.com/mediacenter/#date=4/29/2016

Here's the press release about it: http://m.mlb.com/news/article/175133...l-way-to-watch

Also here are upcoming games in June with MLB Plus:
Fri, Jun 3 8:00 PM San Francisco Giants @ St. Louis Cardinals
Wed, Jun 8 7:00 PM Los Angeles Angels of Anaheim @ New York Yankees
Tue, Jun 14 7:00 PM Chicago Cubs @ Washington Nationals
Tue, Jun 21 8:00 PM St. Louis Cardinals @ Chicago Cubs
Thu, Jun 30 7:00 PM Chicago Cubs @ New York Mets


SkyMeadow 06-11-2016 07:21 PM

MLBviewer is working here, but without HD.

Apparently I have the wrong branch of the mlbhls code.

$ grep "git clone" *

returns

INSTALL:git clone https://github.com/thegryghost/mlbtv-hls-nexdef.git
grep: mlbtv-hls-nexdef: Is a directory
grep: MLBviewer: Is a directory
grep: test: Is a directory

So I deleted the existing mlbtv-hls-nexdef directory.

Then I ran

$ git clone https://github.com/tonycpsu/mlbtv-hls-nexdef.git -b experimental

This seemed to work:

Cloning into 'mlbtv-hls-nexdef'...
remote: Counting objects: 202, done.
remote: Total 202 (delta 0), reused 0 (delta 0), pack-reused 202
Receiving objects: 100% (202/202), 71.59 KiB | 0 bytes/s, done.
Resolving deltas: 100% (110/110), done.
Checking connectivity... done.

I changed to the mlbtv-hls-nexdef directory and ran

make

Is this the expected result? There were some warnings:

gcc -O2 mlb.c utils.c output.c -lm -lcrypto -lpthread -lconfig -lcurl -o mlbhls
mlb.c: In function ‘mlb_refresh_playlists’:
mlb.c:309:4: warning: embedded ‘\0’ in format [-Wformat-contains-nul]
sprintf(tmp_url, "%s%s\0", master->base_url, master->streams[i].base_url);
^
mlb.c: In function ‘mlb_hls_get_and_decrypt’:
mlb.c:1162:4: warning: embedded ‘\0’ in format [-Wformat-contains-nul]
sprintf(content_url, "%s\0", url);
^
mlb.c:1164:4: warning: embedded ‘\0’ in format [-Wformat-contains-nul]
sprintf(content_url, "%s%s%s\0", master->base_url, stream->base_url_media, url);
^
mlb.c: In function ‘main’:
mlb.c:1724:14: warning: embedded ‘\0’ in format [-Wformat-contains-nul]
sprintf(master->cmd_params, "%s -cache %d %s\0", master->args->launch_cmd, 4*(master->decrypted_size/(p.stream->seg_time * master->decrypted_count)) / 1000, master->args->output.name);
^

Shall I assume that the warnings do not indicate fatal make errors?

Following daftcat's instructions, my next command was:

sudo cp mlbhls $(which mlbhls)
cp: missing destination file operand after ‘mlbhls’

I am not sure about the directory structure that is expected. My install is in /mlbviewer/mlbviewer2015 and mlbtv-hls-nexdef is a subdirectory in mlbviewer2015.

$ which mlbhls yields a null result. I'm not sure where 'which' gets its info; isn't it supposed to return where an executable is located?

There is a (module?) called mlbhls in the mlbtv-hls-nexdef directory so I copied it into /mlbviewer/mlbviewer2015. (I'm just guessing here, not sure what I ought to do...)

Then I tested mlbviewer with an archived game, toggled the menu into nexdef mode using the 'n' menu command. This produced an error:

Failed to recognize file format.

I presume that means my HD installation is not correct yet.

Help?

P.S. Now I have retested with a live feed, and the symptom is the same.

comat0se 06-14-2016 01:27 PM

Quote:

Originally Posted by SkyMeadow (Post 5559519)
sudo cp mlbhls $(which mlbhls)
cp: missing destination file operand after ‘mlbhls’
There is a (module?) called mlbhls in the mlbtv-hls-nexdef directory so I copied it into /mlbviewer/mlbviewer2015. (I'm just guessing here, not sure what I ought to do...)

Then I tested mlbviewer with an archived game, toggled the menu into nexdef mode using the 'n' menu command. This produced an error:


Copy that mlbhls file to /usr/bin/ as he also stated. In my case I put it in /usr/local/bin/. In either case, it has to be somewhere in your $PATH. The command 'which mlbhls' should then show something and you should be in business.

comat0se 06-14-2016 03:17 PM

Quote:

Originally Posted by daftcat (Post 5555689)
Not sure if I will get to this anytime soon because it's a number of non-trivial changes and I have higher work priorities.

For someone who wants to submit a patch

Using your clues, it was pretty trivial to get it working in mlbplay.py, the full viewer seems like it will be more difficult. To get the MLB Plus games use the pv=teamcode instead of the v=teamcode.

For example: ./mlbplay.py j=06/08/16 pv=nyy

Code:

$ svn diff
Index: MLBviewer/mlbSchedule.py
===================================================================
--- MLBviewer/mlbSchedule.py    (revision 666)
+++ MLBviewer/mlbSchedule.py    (working copy)
@@ -249,7 +249,7 @@
                        coverage = home
                    out = (tmp['display'], coverage, tmp['id'], event_id)
                    content['alt_audio'].append(out)
-          elif tmp['type'] in ('mlbtv_national', 'mlbtv_home', 'mlbtv_away'):
+          elif tmp['type'] in ('mlbtv_national', 'mlbtv_home', 'mlbtv_away','mlbtv_enhanced'):
                if tmp['playback_scenario'] in \
                      ( 'HTTP_CLOUD_WIRED', 'HTTP_CLOUD_WIRED_WEB', 'FMS_CLOUD'):
                    # candidate for new procedure: determine whether game is
Index: mlbplay.py
===================================================================
--- mlbplay.py  (revision 666)
+++ mlbplay.py  (working copy)
@@ -117,6 +117,12 @@
            streamtype = 'video'
            teamcode = split[1]
            player = mycfg.get('video_player')
+        # PlusVideo: pv=<teamcode>
+        elif split[0] in ( 'video', 'pv' ):
+            streamtype = 'video'
+          mycfg.set('enhanced', True)
+            teamcode = split[1]
+            player = mycfg.get('video_player')
        # Speed: p=<speed> (Default: 1200)
        elif split[0] in ( 'speed', 'p' ):
            mycfg.set('speed', split[1])
@@ -226,6 +232,7 @@
 
 # Added to support requesting specific games of a double-header
 cli_event_id = mycfg.get('event_id')
+mlbplus = mycfg.get('enhanced')
 
 if len(media) > 0:
    stream = None
@@ -235,6 +242,10 @@
              code,
              content_id,
              event_id ) = m[n]
+          if mlbplus:
+              code = 'plus'
+                if (call_letters == 'MLB'):
+                  stream = m[n]
            if cli_event_id is not None:
                if cli_event_id != event_id:
                    continue
@@ -244,6 +255,8 @@
                else:
                    stream = m[n]
                break
+    if stream == None and mlbplus:
+      print "MLB Plus media requested but no MLB Plus media found!"
 else:
    print 'Could not find media for teamcode: ' + teamcode
    sys.exit()


SkyMeadow 06-14-2016 05:00 PM

Progress
 
Quote:

Originally Posted by comat0se (Post 5560857)
Copy that mlbhls file to /usr/bin/ as he also stated. In my case I put it in /usr/local/bin/. In either case, it has to be somewhere in your $PATH. The command 'which mlbhls' should then show something and you should be in business.

That was easy and seems to work. Also I learned how to query my Linux path:

echo $PATH

As I do not have a full MLB.TV subscription, again I tested on an archived game and there were no errors in Nexdef HD mode; the video played. I'll test once more on a live game tonight.

Edit added line: After testing on a live game I believe the HD is now working.

Thank you for coming to my rescue!!!

daftcat 06-15-2016 07:43 PM

Yes, thanks for helping out. I saw the thread email but I was on a computer hiatus (checking from phone) at the time and forgot to come back to this.

Glad you got the help you requested and that it is working for you now.

Quote:

Originally Posted by SkyMeadow (Post 5560967)
That was easy and seems to work. Also I learned how to query my Linux path:

echo $PATH

As I do not have a full MLB.TV subscription, again I tested on an archived game and there were no errors in Nexdef HD mode; the video played. I'll test once more on a live game tonight.

Edit added line: After testing on a live game I believe the HD is now working.

Thank you for coming to my rescue!!!


daftcat 06-15-2016 10:34 PM

SVN revison 670: Support for MLB Plus streams
 
Wow! I only realize now that I spent a couple hours working and reworking this that the Plus streams are few and far between.

mlbplay works just as you describe it. If a plus stream is available and you request it with pv=, you will get the plus stream. If it is not available, you'll get an error message.

In mlbviewer, if a plus stream is available, a [PLUS] indicator is displayed in the listings view. To select this stream, use the '+' key. Otherwise, <Enter> will get you the preferred coverage: home or away based on coverage selector--the 's' key--and video_follow= settings. If you '+' a game without a plus stream, you'll get an error message.

Currently, the only way to jump to specific inning of a Plus stream is to use mlbplay with the i= flag.

This may blow up if the plus stream is also the national broadcast.

Doesn't look like that will be an issue for awhile, though. There was a Plus stream yesterday, 6/14, and the next two will be 6/21 and 6/30.


Quote:

Originally Posted by comat0se (Post 5560917)
Using your clues, it was pretty trivial to get it working in mlbplay.py, the full viewer seems like it will be more difficult. To get the MLB Plus games use the pv=teamcode instead of the v=teamcode.

For example: ./mlbplay.py j=06/08/16 pv=nyy

Code:

$ svn diff
Index: MLBviewer/mlbSchedule.py
===================================================================
--- MLBviewer/mlbSchedule.py    (revision 666)
+++ MLBviewer/mlbSchedule.py    (working copy)
@@ -249,7 +249,7 @@
                        coverage = home
                    out = (tmp['display'], coverage, tmp['id'], event_id)
                    content['alt_audio'].append(out)
-          elif tmp['type'] in ('mlbtv_national', 'mlbtv_home', 'mlbtv_away'):
+          elif tmp['type'] in ('mlbtv_national', 'mlbtv_home', 'mlbtv_away','mlbtv_enhanced'):
                if tmp['playback_scenario'] in \
                      ( 'HTTP_CLOUD_WIRED', 'HTTP_CLOUD_WIRED_WEB', 'FMS_CLOUD'):
                    # candidate for new procedure: determine whether game is
Index: mlbplay.py
===================================================================
--- mlbplay.py  (revision 666)
+++ mlbplay.py  (working copy)
@@ -117,6 +117,12 @@
            streamtype = 'video'
            teamcode = split[1]
            player = mycfg.get('video_player')
+        # PlusVideo: pv=<teamcode>
+        elif split[0] in ( 'video', 'pv' ):
+            streamtype = 'video'
+          mycfg.set('enhanced', True)
+            teamcode = split[1]
+            player = mycfg.get('video_player')
        # Speed: p=<speed> (Default: 1200)
        elif split[0] in ( 'speed', 'p' ):
            mycfg.set('speed', split[1])
@@ -226,6 +232,7 @@
 
 # Added to support requesting specific games of a double-header
 cli_event_id = mycfg.get('event_id')
+mlbplus = mycfg.get('enhanced')
 
 if len(media) > 0:
    stream = None
@@ -235,6 +242,10 @@
              code,
              content_id,
              event_id ) = m[n]
+          if mlbplus:
+              code = 'plus'
+                if (call_letters == 'MLB'):
+                  stream = m[n]
            if cli_event_id is not None:
                if cli_event_id != event_id:
                    continue
@@ -244,6 +255,8 @@
                else:
                    stream = m[n]
                break
+    if stream == None and mlbplus:
+      print "MLB Plus media requested but no MLB Plus media found!"
 else:
    print 'Could not find media for teamcode: ' + teamcode
    sys.exit()



daftcat 07-06-2016 08:08 PM

mlblive updated with new mlbhls branch and plus support
 
I may be the only one who uses it, but I updated the mlblive-debian.iso image with recent fixes for this year:

- updated mlbhls after issues found earlier this season
- updated mlbviewer code with MLB PLUS support
- whatever else that had changed since the last time I updated that iso

(Note: The mlbviewer directory in the VM is still named mlbviewer2014 but it has been updated.)

I use mlblive as a VM on my work machine so I don't have to bother with Cygwin installs anymore. It would likely also work well as a thumbdrive Linux.

BostonPeng 08-06-2016 02:28 PM

My local team's broadcast partner (NESN) is blacking out streaming of the SportsNet LA stream of the Dodgers vs. Red Sox game so I'm ending up watching the local broadcast while listening to the KLAC feed for the Dodgers. But if I try to get the radio stream in mlbviewer I get
Quote:

ERROR: 'NoneType' object has no attribute 'groups'


See /home/peng/.mlb/log for more details.
Here's what the log says:
Quote:

08/06 15:22 | DEBUG>> URL received: rtmp://cp153281.live.edgefcs.net/live/mlb_audio_s14@s54819?aifp=v0006&auth=da.aObIdBbid0btbAcvb7aec0cybJbVbEdP-bxPJJZ-O-BopGHoDxmpDkHs-kfj6l8lekikckamaj7kfm9kkm8kckdl9kij7lglik8kdkbmb&ct5=06-Aug-16&ct6=71.234.99.165&ct7=980719983:AUDIO_FMS_32K&ct8=1&ct1=mlb&ct3=15805426&ct4=mlb&ct9=2d59f437ba5a 43c7925d893023a7fb84
I'm already listening to the live stream from KLAC in my browser but when I listened to last night's game on KLAC the stream died during every commercial break so I wanted to see if I could get a more reliable stream with mlbviewer.

daftcat 08-08-2016 09:20 PM

Quote:

Originally Posted by BostonPeng (Post 5587082)
My local team's broadcast partner (NESN) is blacking out streaming of the SportsNet LA stream of the Dodgers vs. Red Sox game so I'm ending up watching the local broadcast while listening to the KLAC feed for the Dodgers. But if I try to get the radio stream in mlbviewer I get


Here's what the log says:

I'm already listening to the live stream from KLAC in my browser but when I listened to last night's game on KLAC the stream died during every commercial break so I wanted to see if I could get a more reliable stream with mlbviewer.

One of my least favorite Python error messages.

Two things:

1. Can you try again with nexdef disabled? The gameday audio shouldn't go down the nexdef code path but I get a working stream with it disabled and a non-working one with it enabled.

2. Can you check for ~/.mlb/unsuccessful-1.xml or unsuccessful-2.xml and post either or both of those? Do an ls -lrt and make certain the date actually matches the day you were having errors. Those files are overwritten so it's possible that one or both were from a previous failure.


All times are GMT -5. The time now is 08:18 PM.