Working with HDHomeRun

Starting in version 0.65, CCExtractor can process a stream being delivered via UDP, so there's no need to capture video to a file in order to get the subtitles.

What devices are supported?

While it should work with any device that is able to send the stream via UDP, at this time it's only been tested with HDHomeRun (both European and American models).

Will other devices be supported?

HDHomeRun works so well that it's unlikely I'll bother with any other device unless it finds its way to me for free and development is sponsored.

How do I use it?

Make sure you have HDHomeRun's software installed. You will need the command line tool "hdhomerun_config" (it's available for Linux and Windows, possibly OSX too). GUI frontends are available, too, but the following instructions use just the command line tool.

Because you can have more than one HDHomeRun in the network, the first thing is to look for the IDs of each of them:


          1
          ./hdhomerun\_config discover
        
          2
          hdhomerun device 12206E95 found at 192.168.20.117
        
not set

I only have one, and its ID is 12206E95. When I want to do anything with that tuner, I need to pass the ID to hdhomerun_config (note: since I only have one I could just pass FFFFFFFF which is accepted in this scenario).

Then, have HDHomeRun scan for channels:

./hdhomerun_config 12206E95 scan /tuner0

The first parameter is of course the ID of my HDHomeRun. I also need to pass /tuner0 because the device is dual-tuner, so I specify which one I want to use. The output is rather large - only a part of it is shown:


          1
          SCANNING: 778000000 (eu-bcast:59)
        
          2
          LOCK: t8qam64 (ss=90 snq=66 seq=100)
        
          3
          TSID: 0x000F
        
          4
          PROGRAM 184: 0 Boing
        
          5
          PROGRAM 185: 0 Telecinco HD
        
          6
          PROGRAM 304: 0 MTV
        
          7
          PROGRAM 305: 0 Paramount Chann
        
          8
          SCANNING: 770000000 (eu-bcast:58)
        
          9
          LOCK: t8qam64 (ss=97 snq=28 seq=100)
        
          10
          TSID: 0x03F4
        
          11
          PROGRAM 530: 0 La 1
        
          12
          PROGRAM 531: 0 La 2
        
          13
          PROGRAM 532: 0 24h
        
          14
          PROGRAM 533: 0 Clan
        
          15
          PROGRAM 535: 0 Radio Nacional
        
          16
          PROGRAM 536: 0 Radio 5 Todo No
        
...
not set

In this output, the number after eu-bcast is the channel. A channel is a bundle of several programs (a program being a station) that are broadcast together. For example you can see that channel 58 contains 6 programs.

Suppose we want the subtitles from "La 1". First, tune to the channel that carries it:

./hdhomerun\_config 12206E95 set /tuner0/channel 58


          1
          ccextractor -srt -udp 1235 -stdout
        
          2
          CCExtractor 0.65, Carlos Fernandez Sanz, Volker Quetschke.
        
          3
          Teletext portions taken from Petr Kutalek's telxcc
        
          5
          Input: Network, UDP/1235
        
          6
          [Raw Mode: Broadcast] [Extract: 1] [Stream mode: Autodetect]
        
          7
          [Program : Auto ] [Hauppage mode: No] [Use MythTV code: Auto]
        
          8
          [Timing mode: Auto] [Debug: No] [Buffer input: Yes]
        
          9
          [Use pic_order_cnt_lsb for H.264: No] [Print CC decoder traces: No]
        
          10
          [Target format: .srt] [Encoding: Latin-1] [Delay: 0] [Trim lines: No]
        
          11
          [Add font color data: Yes] [Add font typesetting: Yes]
        
          12
          [Convert case: No] [Video-edit join: No]
        
          13
          [Extraction start time: not set (from start)]
        
          14
          [Extraction end time: not set (to end)]
        
          15
          [Live stream: No] [Clock frequency: 90000]
        
          16
          Teletext page: Autodetect]
        
          17
          Start credits text: [None]
        
          18
          Sending captions to stdout.
        
          20
          Reading from UDP socket 1235
        
          21
          File seems to be a transport stream, enabling TS mode
        
          22
          Analyzing data in general mode
        
          23
          [...] Program Master Table for program 530, PMT PID: 100
        
          24
          101 | MPEG-2 video
        
          25
          922 | MPEG-2 video
        
          26
          102 | MPEG-2 private data
        
          27
          2675 | Unknown
        
          28
          115 | Unknown
        
          29
          2051 | MPEG-4 video
        
          30
          1546 | Unknown
        
          31
          256 | Unknown
        
          32
          4102 | Unknown
        
          33
          353 | Unknown
        
          34
          2544 | Unknown
        
          35
          4976 | MPEG-2 audio
        
          36
          111 | MPEG-2 private data
        
          37
          2163 | Unknown
        
          38
          1 | MPEG-4 video
        
          39
          3301 | Unknown
        
          40
          768 | Unknown
        
          41
          VBI/teletext stream ID 102 (0x66) for SID 530 (0x212)
        
          43
          Skip forward to the next TS header mark.
        
          45
          Programme Identification Data = La 1
        
          46
          Universal Time Co-ordinated = Mon Mar 11 21:36:23 2013
        
          48
          1
        
          49
          00:00:00,240 --> 00:00:02,560
        
          50
          Su voz suena en los altavoces.
        
          52
          [...]
        
...
not set
...

As expected, in this example CCExtractor would run forever. You can control this with the time related parameters, in case you want CCExtractor to exit after a given number of seconds.