Can I pull recorded video files off Tablo?


#1

If there is no way currently then I would like to add this feature, FTP would be fine



Powershell API/Script to download files from Tablo
#2

The Tablo video is stored in segments, so there isn’t “1 file” per se to pull off.  There is also not an official way to get the video segments off that I have seen as of yet.


#3

Is there a way to see the file structure on the hard drive?  Yesterday I hooked up my hard drive to my PC to take a look, and it didn’t show anything (which makes sense since it isn’t formatted in FAT or NTFS),.  But there must be a program out there to see that structure.


#4

There is no “official” way I am aware of for 3rd parties to see information on the tablo device.


#5

This is something we’re working on guys - stay tuned!


#6

That would be great. One concern I have is that there is no way to do a backup and if the Tablo dies, and I may not be able to access the recordings with a replacement Tablo.


#7

I mounted the disk last week with Linux. It reported Ext4 I believe, maybe it was Ext3, can’t remember 100%. Thinking it might have been Ext3 thus hampering the Tablo from drives larger than 2 TB.

Tablo uses HLS for steaming thus it records hundreds and thousands of 10 second files. These can be merged using ffmpeg quite easily.  I also had the option to save the file on Android by long pressing the video while streaming to the device, this should work to get a single file but you will need enough space on your Android device.

#8

With the quad tuner on the horizon I would love to not have to pull off all media parts and then rebuild into a single file for playback… :-). Plz… Or better yet a way to transfer to new device… Even if it involves a none traditional way!


#9

I was incorrect about being able to hold click and save on Android. It will only save a .m3u8 playlist file.  Will attempt to use the file to stream to file and post findings.


#10

A couple of guys over at Simple.tv forum built a tool to download the HLS MP4 streams. Wish I was a coder; I bet something similar is possible for Tablo as well.


#11

Verified, Tablo uses Ext3 and probably expalins the 2 TB limit if it implements 1 Kb block size.


Verified you can “concat” (stitch together) the 10 second segments together with ffmpeg in just a few seconds
Below is the command line for a 1 hour program segment count may differ depending on length.

ffmpeg -i “concat:00001.ts|00002.ts|00003.ts|00004.ts|00005.ts|00006.ts|00007.ts|00008.ts|00009.ts|00010.ts|00011.ts|00012.ts|00013.ts|00014.ts|00015.ts|00016.ts|00017.ts|00018.ts|00019.ts|00020.ts|00021.ts|00022.ts|00023.ts|00024.ts|00026.ts|00027.ts|00028.ts|00029.ts|00030.ts|00031.ts|00032.ts|00033.ts|00034.ts|00035.ts|00036.ts|00037.ts|00038.ts|00039.ts|00040.ts|00041.ts|00042.ts|00043.ts|00044.ts|00045.ts|00046.ts|00047.ts|00048.ts|00049.ts|00050.ts|00051.ts|00052.ts|00053.ts|00054.ts|00055.ts|00056.ts|00057.ts|00058.ts|00059.ts|00060.ts|00061.ts|00062.ts|00063.ts|00064.ts|00065.ts|00066.ts|00067.ts|00068.ts|00069.ts|00070.ts|00071.ts|00072.ts|00073.ts|00074.ts|00075.ts|00076.ts|00077.ts|00078.ts|00079.ts|00080.ts|00081.ts|00082.ts|00083.ts|00084.ts|00085.ts|00086.ts|00087.ts|00088.ts|00089.ts|00090.ts|00091.ts|00092.ts|00093.ts|00094.ts|00095.ts|00096.ts|00097.ts|00098.ts|00099.ts|00100.ts|00101.ts|00102.ts|00103.ts|00104.ts|00105.ts|00106.ts|00107.ts|00108.ts|00109.ts|00110.ts|00111.ts|00112.ts|00113.ts|00114.ts|00115.ts|00116.ts|00117.ts|00118.ts|00119.ts|00120.ts|00121.ts|00122.ts|00123.ts|00124.ts|00126.ts|00127.ts|00128.ts|00129.ts|00130.ts|00131.ts|00132.ts|00133.ts|00134.ts|00135.ts|00136.ts|00137.ts|00138.ts|00139.ts|00140.ts|00141.ts|00142.ts|00143.ts|00144.ts|00145.ts|00146.ts|00147.ts|00148.ts|00149.ts|00150.ts|00151.ts|00152.ts|00153.ts|00154.ts|00155.ts|00156.ts|00157.ts|00158.ts|00159.ts|00160.ts|00161.ts|00162.ts|00163.ts|00164.ts|00165.ts|00166.ts|00167.ts|00168.ts|00169.ts|00170.ts|00171.ts|00172.ts|00173.ts|00174.ts|00175.ts|00176.ts|00177.ts|00178.ts|00179.ts|00180.ts|00181.ts|00182.ts|00183.ts|00184.ts|00185.ts|00186.ts|00187.ts|00188.ts|00189.ts|00190.ts|00191.ts|00192.ts|00193.ts|00194.ts|00195.ts|00196.ts|00197.ts|00198.ts|00199.ts|00200.ts|00201.ts|00202.ts|00203.ts|00204.ts|00205.ts|00206.ts|00207.ts|00208.ts|00209.ts|00210.ts|00211.ts|00212.ts|00213.ts|00214.ts|00215.ts|00216.ts|00217.ts|00218.ts|00219.ts|00220.ts|00221.ts|00222.ts|00223.ts|00224.ts|00226.ts|00227.ts|00228.ts|00229.ts|00230.ts|00231.ts|00232.ts|00233.ts|00234.ts|00235.ts|00236.ts|00237.ts|00238.ts|00239.ts|00240.ts|00241.ts|00242.ts|00243.ts|00244.ts|00245.ts|00246.ts|00247.ts|00248.ts|00249.ts|00250.ts|00251.ts|00252.ts|00253.ts|00254.ts|00255.ts|00256.ts|00257.ts|00258.ts|00259.ts|00260.ts|00261.ts|00262.ts|00263.ts|00264.ts|00265.ts|00266.ts|00267.ts|00268.ts|00269.ts|00270.ts|00271.ts|00272.ts|00273.ts|00274.ts|00275.ts|00276.ts|00277.ts|00278.ts|00279.ts|00280.ts|00281.ts|00282.ts|00283.ts|00284.ts|00285.ts|00286.ts|00287.ts|00288.ts|00289.ts|00290.ts|00291.ts|00292.ts|00293.ts|00294.ts|00295.ts|00296.ts|00297.ts|00298.ts|00299.ts|00300.ts|00301.ts|00302.ts|00303.ts|00304.ts|00305.ts|00306.ts|00307.ts|00308.ts|00309.ts|00310.ts|00311.ts|00312.ts|00313.ts|00314.ts|00315.ts|00316.ts|00317.ts|00318.ts|00319.ts|00320.ts|00321.ts|00322.ts|00323.ts|00324.ts|00326.ts|00327.ts|00328.ts|00329.ts|00330.ts|00331.ts|00332.ts|00333.ts|00334.ts|00335.ts|00336.ts|00337.ts|00338.ts|00339.ts|00340.ts|00341.ts|00342.ts|00343.ts|00344.ts|00345.ts|00346.ts|00347.ts|00348.ts|00349.ts|00350.ts|00351.ts|00352.ts|00353.ts|00354.ts|00355.ts|00356.ts|00357.ts|00358.ts|00359.ts|00360.ts” -c copy output.ts

Will report back how to get the output into mp4 format

#12

Verified .mp4 concat can be done by adding -bsf:a aac_adtstoasc -c copy output.mp4


Example:
ffmpeg -i “concat:00001.ts|00002.ts|00003.ts|00004.ts|00005.ts|00006.ts|00007.ts|00008.ts|00009.ts|00010.ts|00011.ts|00012.ts|00013.ts|00014.ts|00015.ts|00016.ts|00017.ts|00018.ts|00019.ts|00020.ts|00021.ts|00022.ts|00023.ts|00024.ts|00026.ts|00027.ts|00028.ts|00029.ts|00030.ts|00031.ts|00032.ts|00033.ts|00034.ts|00035.ts|00036.ts|00037.ts|00038.ts|00039.ts|00040.ts|00041.ts|00042.ts|00043.ts|00044.ts|00045.ts|00046.ts|00047.ts|00048.ts|00049.ts|00050.ts|00051.ts|00052.ts|00053.ts|00054.ts|00055.ts|00056.ts|00057.ts|00058.ts|00059.ts|00060.ts|00061.ts|00062.ts|00063.ts|00064.ts|00065.ts|00066.ts|00067.ts|00068.ts|00069.ts|00070.ts|00071.ts|00072.ts|00073.ts|00074.ts|00075.ts|00076.ts|00077.ts|00078.ts|00079.ts|00080.ts|00081.ts|00082.ts|00083.ts|00084.ts|00085.ts|00086.ts|00087.ts|00088.ts|00089.ts|00090.ts|00091.ts|00092.ts|00093.ts|00094.ts|00095.ts|00096.ts|00097.ts|00098.ts|00099.ts|00100.ts|00101.ts|00102.ts|00103.ts|00104.ts|00105.ts|00106.ts|00107.ts|00108.ts|00109.ts|00110.ts|00111.ts|00112.ts|00113.ts|00114.ts|00115.ts|00116.ts|00117.ts|00118.ts|00119.ts|00120.ts|00121.ts|00122.ts|00123.ts|00124.ts|00126.ts|00127.ts|00128.ts|00129.ts|00130.ts|00131.ts|00132.ts|00133.ts|00134.ts|00135.ts|00136.ts|00137.ts|00138.ts|00139.ts|00140.ts|00141.ts|00142.ts|00143.ts|00144.ts|00145.ts|00146.ts|00147.ts|00148.ts|00149.ts|00150.ts|00151.ts|00152.ts|00153.ts|00154.ts|00155.ts|00156.ts|00157.ts|00158.ts|00159.ts|00160.ts|00161.ts|00162.ts|00163.ts|00164.ts|00165.ts|00166.ts|00167.ts|00168.ts|00169.ts|00170.ts|00171.ts|00172.ts|00173.ts|00174.ts|00175.ts|00176.ts|00177.ts|00178.ts|00179.ts|00180.ts|00181.ts|00182.ts|00183.ts|00184.ts|00185.ts|00186.ts|00187.ts|00188.ts|00189.ts|00190.ts|00191.ts|00192.ts|00193.ts|00194.ts|00195.ts|00196.ts|00197.ts|00198.ts|00199.ts|00200.ts|00201.ts|00202.ts|00203.ts|00204.ts|00205.ts|00206.ts|00207.ts|00208.ts|00209.ts|00210.ts|00211.ts|00212.ts|00213.ts|00214.ts|00215.ts|00216.ts|00217.ts|00218.ts|00219.ts|00220.ts|00221.ts|00222.ts|00223.ts|00224.ts|00226.ts|00227.ts|00228.ts|00229.ts|00230.ts|00231.ts|00232.ts|00233.ts|00234.ts|00235.ts|00236.ts|00237.ts|00238.ts|00239.ts|00240.ts|00241.ts|00242.ts|00243.ts|00244.ts|00245.ts|00246.ts|00247.ts|00248.ts|00249.ts|00250.ts|00251.ts|00252.ts|00253.ts|00254.ts|00255.ts|00256.ts|00257.ts|00258.ts|00259.ts|00260.ts|00261.ts|00262.ts|00263.ts|00264.ts|00265.ts|00266.ts|00267.ts|00268.ts|00269.ts|00270.ts|00271.ts|00272.ts|00273.ts|00274.ts|00275.ts|00276.ts|00277.ts|00278.ts|00279.ts|00280.ts|00281.ts|00282.ts|00283.ts|00284.ts|00285.ts|00286.ts|00287.ts|00288.ts|00289.ts|00290.ts|00291.ts|00292.ts|00293.ts|00294.ts|00295.ts|00296.ts|00297.ts|00298.ts|00299.ts|00300.ts|00301.ts|00302.ts|00303.ts|00304.ts|00305.ts|00306.ts|00307.ts|00308.ts|00309.ts|00310.ts|00311.ts|00312.ts|00313.ts|00314.ts|00315.ts|00316.ts|00317.ts|00318.ts|00319.ts|00320.ts|00321.ts|00322.ts|00323.ts|00324.ts|00326.ts|00327.ts|00328.ts|00329.ts|00330.ts|00331.ts|00332.ts|00333.ts|00334.ts|00335.ts|00336.ts|00337.ts|00338.ts|00339.ts|00340.ts|00341.ts|00342.ts|00343.ts|00344.ts|00345.ts|00346.ts|00347.ts|00348.ts|00349.ts|00350.ts|00351.ts|00352.ts|00353.ts|00354.ts|00355.ts|00356.ts|00357.ts|00358.ts|00359.ts|00360.ts” -bsf:a aac_adtstoasc -c copy output.mp4


#13

Pretty cool Chris. Does you MP4 work in media players? If you don’t have a WD TV, XBMC box, etc., I can test a small concated MP4 if you can upload it somewhere. What I found at least with Simple.tv is that TS worked, but MP4 didn’t. Container seemed to make a difference at least for playback on media player/streamer boxes.


#14

I have a Raspberry Pi XBMC, will report back.

It played fine with VLC on a Linux PC (with proper codecs installed)

Chrome will even play the .mp4 on my linux desktop

#15

Here is a link to a one minute clip, currious what it does and doesn’t work on, let me know, thanks.

https://drive.google.com/file/d/0B6PJubY58vnyeTRtMWZTR0hKMkE/edit?usp=sharing

#16

Thanks Chris. I tested your sample on WD TV streaming media player, Mede8er 600X3D and two of my XBMC boxes, and perfect playback on all. BTW, the file is 720p and good quality. When you grab files off your hard drive, aren’t there multiple streams of the same shows? I thought that’s how HLS worked.

On a related note, Simple.tv just released their download tool for their dual-tuner DVR (soon they promise for the single-tuner), so hopefully Tablo will do the same sooner than later.


#17

@hdmkv It only has the single set of files, think the Tablo streams only the one bitrate localy. Multiple bitrate HLS is an option not mandatory. Also think it re-encodes on the fly to remote (outside your router/firewall) if needed depending on the “Remote Steaming Quality” setting.


#18

If you look at: http://your-tablo-ip:18080/plex/rec_ids  you will get the ids of the recorded shows on your TabloTV.

Let’s say you have a recording 18425

If you then go to:
http://your-tablo-ip:18080/pvr/18425/

You can browse the data including the pvr dir where the ts files are stored (there’s a meta.txt file too where you can pull the episode data, etc…)

Tablo does use a robots.txt… so if you use something like wget, you’ll need to do a pull to get the robot.txt, empty it out and do a noclobber pull.

I may write a script do to all of this and the ffmpeg mentioned earlier so that I can automatically add the Tablo recorded shows to my Plex server (their plex client is “ok”, but buggy and not exactly what I was looking for.


#19

Thanks for the great information @cjcox


#20

I actually just did this the other day, and it does work :wink:


Just an example

./ffmpeg -re -i http://:18080/pvr/34996/pl/playlist.m3u8 -c copy -bsf:a aac_adtstoasc output.mp4