SageTV Community  

Go Back   SageTV Community > Hardware Support > Hardware Support
Forum Rules FAQs Community Downloads Today's Posts Search

Notices

Hardware Support Discussions related to using various hardware setups with SageTV products. Anything relating to capture cards, remotes, infrared receivers/transmitters, system compatibility or other hardware related problems or suggestions should be posted here.

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 12-30-2016, 03:29 PM
EnterNoEscape's Avatar
EnterNoEscape EnterNoEscape is offline
SageTVaholic
 
Join Date: Jun 2010
Location: Harrisburg, PA
Posts: 2,657
Using the OpenDCT Generic HTTP Capture Device

You must have OpenDCT 0.5.3 or greater installed for this feature to be available.
You must have OpenDCT 0.5.17 or greater installed for %c% to be allowed in the URL and the ability to provide a username and password.
You must have OpenDCT 0.5.20 or greater installed for URL's to be allowed in place of an executable for tuning.

Configuration:
  1. Stop OpenDCT service.
  2. Open opendct.properties. (Windows: C:\ProgramData\OpenDCT\config\opendct.properties, Linux: /etc/opendct/conf/opendct.properties)
  3. Create names for each encoder under the property generic.http.device_names_csv in opendct.properties separated by commas.
    The names can really be anything, just don't use commas in the names for what should be obvious reasons or use names of other existing capture devices.
    e.g. generic.http.device_names_csv=Encoder 1,Encoder 2
  4. Save.
  5. Start the OpenDCT service.
  6. Wait about 30 seconds, then stop the OpenDCT service.
  7. Open opendct.properties. (Windows: C:\ProgramData\OpenDCT\config\opendct.properties, Linux: /etc/opendct/conf/opendct.properties)
  8. There should be new entries with the value of sagetv.device.<unique_id>.device_name matching the name(s) you created earlier.
  9. Set the URL to stream from:
    Code:
    sagetv.device.<unique_id>.streaming_url=http://<encoder_ip_address>/hdmi
    or
    Code:
    sagetv.device.<unique_id>.streaming_url=http://<encoder_ip_address>/0.ts
    or
    Code:
    sagetv.device.<unique_id>.streaming_url=http://<ip_address>/channels/%c%.ts
  10. Set the executable to be used to tune in the channel (this is optional, you can also tune using any of the available tuning plugins in SageTV v9):
    Code:
    sagetv.device.<unique_id>.tuning_executable=http://<wmc_ip_address>:40510/tune%20%c%
    or
    Code:
    sagetv.device.<unique_id>.tuning_executable=/path/to/tuning/script --device=0 --tune=%c%
  11. Set the executable to be used to stop playback (this is optional):
    Code:
    sagetv.device.<unique_id>.stopping_executable=http://<wmc_ip_address>:40510/stop
    or
    Code:
    sagetv.device.<unique_id>.tuning_executable=/path/to/tuning/script --device=0 --stop
  12. Repeat the last three steps for each device.
  13. Save.
  14. Start OpenDCT service.

HDMI Encoders (BM1000, BM3000, etc.):
You can find the URL needed for streaming on the web interface of the device. These devices are typically assigned the IP address 192.168.1.168 by default. I recommend changing the IP address. It is also possible to configure a substream (or secondary stream) on these devices which can be configured with a different resolution and frame rate if desired.

It is recommend to also use the raw consumer with these devices since they already produce a very clean stream and generally do not benefit from being cleaned up by FFmpeg. To do this, you will need to change sagetv.device.<unique_id>.consumer=<default_consumer> to sagetv.device.<unique_id>.consumer=opendct.consumer.RawSageTVConsumerImpl.

Streaming Issues:
If the streaming URL provided is not an MPEG-TS container, you will need to change sagetv.device.<unique_id>.consumer=<default_consumer> to sagetv.device.<unique_id>.consumer=opendct.consumer.RawSageTVConsumerImpl. Without making this change it is very likely that best case nothing is streamed and worst case OpenDCT crashes. You may also need to change sagetv.device.<unique_id>.fast_network_encoder_switch=true to false and the corresponding value in Sage.properties, mmc/encoders/<unique_id>/fast_network_encoder_switch=true to false because seamless switching might not be reliable with unknown formats.

Tuning Executables:
Setting tuning a executable is optional. In SageTV v9 you can also configure tuning using any tuning plugins that are available to SageTV.

There are two different opportunities to tune in the channel if you are providing an executable for tuning. You can tune in the channel before OpenDCT connects to the URL or you can tune in the channel while OpenDCT connects to the URL. The former is done by setting the property sagetv.device.<unique_id>.pretuning_executable and the latter is done by setting the property sagetv.device.<unique_id>.tuning_executable. Both properties will replace any occurrence of %c% with the desired channel number as provided by SageTV.

If the executable set for tuning_executable returns the exit code 12000, OpenDCT will drop any data it has buffered from connecting to the URL. This can be useful for example if your executable is able to detect resolution changes so that you can drop the data at the beginning that would otherwise be a different resolution from the rest of the recording. Note that OpenDCT will not start streaming to SageTV until this executable returns. You can also define both if desired. e.g.
Code:
sagetv.device.<unique_id>.pretuning_executable=/path/to/tuning/script --device=0 --pretune=%c%
sagetv.device.<unique_id>.tuning_executable=/path/to/tuning/script --device=0 --tune=%c%
Stopping Executable:
Setting a stopping executable is optional. The property is sagetv.device.<unique_id>.stopping_executable. This executable will run when SageTV sends the command to stop streaming. As of 0.5.6, this also has a configurable delay that defaults to 15000 milliseconds. The delay is defined by the property sagetv.device.<unique_id>.stopping_executable_delay_ms. If another channel tuning starts before this delay is reached, the stop command is never executed. This delay can be helpful since sometimes there's a measurable amount of time involved in starting things back up from whatever state the stop executable might put the device into. Note that streaming stops immediately regardless of this value, this only affects the timing of the executable. e.g.
Code:
sagetv.device.<unique_id>.stopping_executable=/path/to/tuning/script --device=0 --stop
sagetv.device.<unique_id>.stopping_executable_delay_ms=15000
Delay After Tuning:
If you set the property sagetv.device.<unique_id>.tuning_delay_ms=0 to a value greater than 0, it will wait the specified number of milliseconds before returning to SageTV after running tuning_executable and clearing the buffer if exit code 12000 was returned. If tuning_executable was not set, this delay will still happen.

Channel Padding:
If you would like to ensure that a minimum number of digits are always passed to your tuning script through the %c% variable, you need to change the property sagetv.device.<unique_id>.channel_padding=0 to a value greater than 0. Values shorter than this length will have zeros (0) appended to the left of the channel to make up the difference. (e.g. 8 becomes 008 and 503 remains 503 if this is set to 3.)

Substream Support:
If you would like to be able to select a different stream based on the channel being using tuned, you can do this using the sagetv.device.<unique_id>.streaming_url2 property in conjunction with sagetv.device.<unique_id>.streaming_url2_channels. You just need to set streaming_url2 to an alternate valid URL and then provide a comma separated list of channels that are to always use this alternative URL for the streaming_url2_channels property. e.g.
Code:
sagetv.device.<unique_id>.streaming_url2=http://<encoder_ip_address>/1.ts
sagetv.device.<unique_id>.streaming_url2_channels=20,22,23
One reason you might want to do this is so that you can have different resolutions and frame rates for different channels. e.g. 1080i30 encoded as 1080p60, 720p60 and below encoded as 720p60.

Channel Detection:
If you already have some specific channels in mind that you would like this capture device to return to SageTV as tunable, you can populate them in the sagetv.device.<unique_id>.custom_channels= property. The list is semicolon delimited. This can also be useful to create custom channels within SageTV. e.g. To return the channels 2000, 2002 and 2003 when doing a channel scan within SageTV, set the property as follows:
Code:
sagetv.device.<unique_id>.custom_channels=2000;2002;2003
Username and Password:
You can have OpenDCT perform basic HTTP authentication by providing a username and password. The associated properties are sagetv.device.<unique_id>.http_username and sagetv.device.<unique_id>.http_password. If both of these properties are set, the provided username and password will be encoded and sent to the provided URL for authentication. e.g.
Code:
sagetv.device.<unique_id>.http_username=User
sagetv.device.<unique_id>.http_password=MyPassword0
__________________
SageTV v9 Server: ASRock Z97 Extreme4, Intel i7-4790K @ 4.4Ghz, 32GB RAM, 6x 3TB 7200rpm HD, 2x 5TB 7200rpm HD, 2x 6TB 7200rpm HD, 4x 256GB SSD, 4x 500GB SSD, unRAID Pro 6.7.2 (Dual Parity + SSD Cache).
Capture: 1x Ceton InfiniTV 4 (ClearQAM), 2x Ceton InfiniTV 6, 1x BM1000-HDMI, 1x BM3500-HDMI.

Clients: 1x HD300 (Living Room), 1x HD200 (Master Bedroom).
Software: OpenDCT :: WMC Live TV Tuner :: Schedules Direct EPG

Last edited by EnterNoEscape; 01-04-2017 at 03:14 PM.
Reply With Quote
  #2  
Old 09-01-2017, 09:35 AM
hvymetal hvymetal is offline
Sage Advanced User
 
Join Date: Nov 2007
Posts: 162
I'm using stuckless-sagetv-server-java8 and crazifuzzy-opendct docker from UNRAID. I'm trying to get an HTTP stream from OctoPrint working. OctoPrint uses M-JPEG streamer.

For some reason the stream will never start. I am able to get HDHR stream working so I know crazifuzzy-opendct docker is working.

The Stream address as follows:
http://192.168.10.105/webcam/?action=stream
Below is what I have in my opendct.properties file:
sagetv.device.1076630941.channel_padding=0
sagetv.device.1076630941.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.1076630941.custom_channels=
sagetv.device.1076630941.delay_to_wait_after_tuning=0
sagetv.device.1076630941.device_name=OCTO_PRINT
sagetv.device.1076630941.encoder_listen_port=9000
sagetv.device.1076630941.encoder_merit=0
sagetv.device.1076630941.encoder_pool=generic_http
sagetv.device.1076630941.exclusive_server_address=
sagetv.device.1076630941.fast_network_encoder_switch=true
sagetv.device.1076630941.http_password=
sagetv.device.1076630941.http_username=
sagetv.device.1076630941.last_channel=-1
sagetv.device.1076630941.pretuning_executable=
sagetv.device.1076630941.stopping_executable=
sagetv.device.1076630941.stopping_executable_delay_ms=15000
sagetv.device.1076630941.streaming_url=http\://192.168.10.105/webcam/?action\=stream
sagetv.device.1076630941.streaming_url2=
sagetv.device.1076630941.streaming_url2_channels=
sagetv.device.1076630941.transcode_profile=
sagetv.device.1076630941.tuning_delay_ms=0
sagetv.device.1076630941.tuning_executable=
Here is the result from the log when trying to tune:
10:20:58.760 [SageTVRequestHandler-107:Unknown] DEBUG SageTVManager - The requested capture device ' OCTO_PRINT HDMI' did not exist. Triggering re-discovery.
10:20:58.760 [SageTVRequestHandler-59:OCTO_PRINT HDMI] DEBUG SageTVManager - The requested capture device ' OCTO_PRINT HDMI' did not exist. Triggering re-discovery.
10:20:58.760 [SageTVRequestHandler-107:Unknown] ERROR SageTVRequestHandler - SageTV sent: 'BUFFER OCTO_PRINT HDMI|1035039015|1|16777216|/var/media/tv/OCTOPRINTon192168101759000HDMI-0.mpgbuf|Great-H.264', Replied: 'ERROR Invalid Input'
10:20:58.760 [SageTVRequestHandler-59:OCTO_PRINT HDMI] ERROR SageTVRequestHandler - SageTV sent: 'BUFFER OCTO_PRINT HDMI|1035039015|1|16777216|/var/media/tv/OCTOPRINTon192168101759000HDMI-0.mpgbuf|Great-H.264', Replied: 'ERROR Invalid Input'
10:20:58.761 [SageTVRequestHandler-107:Unknown] ERROR SageTVRequestHandler - Encoder device does not exist.
10:20:58.761 [SageTVRequestHandler-59:OCTO_PRINT HDMI] ERROR SageTVRequestHandler - Encoder device does not exist.

Any ideas what I'm doing wrong? Also I noticed that crazifuzzy-opendct docker does not map any default ports. I mapped 9000 are there any other port mappings required?

Last edited by hvymetal; 09-01-2017 at 09:46 AM.
Reply With Quote
  #3  
Old 09-01-2017, 04:57 PM
EnterNoEscape's Avatar
EnterNoEscape EnterNoEscape is offline
SageTVaholic
 
Join Date: Jun 2010
Location: Harrisburg, PA
Posts: 2,657
Quote:
Originally Posted by hvymetal View Post
I'm using stuckless-sagetv-server-java8 and crazifuzzy-opendct docker from UNRAID. I'm trying to get an HTTP stream from OctoPrint working. OctoPrint uses M-JPEG streamer.

For some reason the stream will never start. I am able to get HDHR stream working so I know crazifuzzy-opendct docker is working.

The Stream address as follows:
http://192.168.10.105/webcam/?action=stream
Below is what I have in my opendct.properties file:
sagetv.device.1076630941.channel_padding=0
sagetv.device.1076630941.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.1076630941.custom_channels=
sagetv.device.1076630941.delay_to_wait_after_tuning=0
sagetv.device.1076630941.device_name=OCTO_PRINT
sagetv.device.1076630941.encoder_listen_port=9000
sagetv.device.1076630941.encoder_merit=0
sagetv.device.1076630941.encoder_pool=generic_http
sagetv.device.1076630941.exclusive_server_address=
sagetv.device.1076630941.fast_network_encoder_switch=true
sagetv.device.1076630941.http_password=
sagetv.device.1076630941.http_username=
sagetv.device.1076630941.last_channel=-1
sagetv.device.1076630941.pretuning_executable=
sagetv.device.1076630941.stopping_executable=
sagetv.device.1076630941.stopping_executable_delay_ms=15000
sagetv.device.1076630941.streaming_url=http\://192.168.10.105/webcam/?action\=stream
sagetv.device.1076630941.streaming_url2=
sagetv.device.1076630941.streaming_url2_channels=
sagetv.device.1076630941.transcode_profile=
sagetv.device.1076630941.tuning_delay_ms=0
sagetv.device.1076630941.tuning_executable=
Here is the result from the log when trying to tune:
10:20:58.760 [SageTVRequestHandler-107:Unknown] DEBUG SageTVManager - The requested capture device ' OCTO_PRINT HDMI' did not exist. Triggering re-discovery.
10:20:58.760 [SageTVRequestHandler-59:OCTO_PRINT HDMI] DEBUG SageTVManager - The requested capture device ' OCTO_PRINT HDMI' did not exist. Triggering re-discovery.
10:20:58.760 [SageTVRequestHandler-107:Unknown] ERROR SageTVRequestHandler - SageTV sent: 'BUFFER OCTO_PRINT HDMI|1035039015|1|16777216|/var/media/tv/OCTOPRINTon192168101759000HDMI-0.mpgbuf|Great-H.264', Replied: 'ERROR Invalid Input'
10:20:58.760 [SageTVRequestHandler-59:OCTO_PRINT HDMI] ERROR SageTVRequestHandler - SageTV sent: 'BUFFER OCTO_PRINT HDMI|1035039015|1|16777216|/var/media/tv/OCTOPRINTon192168101759000HDMI-0.mpgbuf|Great-H.264', Replied: 'ERROR Invalid Input'
10:20:58.761 [SageTVRequestHandler-107:Unknown] ERROR SageTVRequestHandler - Encoder device does not exist.
10:20:58.761 [SageTVRequestHandler-59:OCTO_PRINT HDMI] ERROR SageTVRequestHandler - Encoder device does not exist.

Any ideas what I'm doing wrong? Also I noticed that crazifuzzy-opendct docker does not map any default ports. I mapped 9000 are there any other port mappings required?
I don't know if this will actually work, but it's unlikely because OpenDCT doesn't work with MJPEG. You should take a look at the Generic Pipe.

Anyway, based on what I'm seeing, it looks like generic.http.device_names_csv= isn't set. You just need to provide a device name (e.g. generic.http.device_names_csv=OCTO_PRINT).

Posting the full OpenDCT log would be the most helpful however since it would tell me more precisely what happened or didn't happen. What you posted looks like it didn't create the capture device on the OpenDCT side of things but the why would be in the full log.
__________________
SageTV v9 Server: ASRock Z97 Extreme4, Intel i7-4790K @ 4.4Ghz, 32GB RAM, 6x 3TB 7200rpm HD, 2x 5TB 7200rpm HD, 2x 6TB 7200rpm HD, 4x 256GB SSD, 4x 500GB SSD, unRAID Pro 6.7.2 (Dual Parity + SSD Cache).
Capture: 1x Ceton InfiniTV 4 (ClearQAM), 2x Ceton InfiniTV 6, 1x BM1000-HDMI, 1x BM3500-HDMI.

Clients: 1x HD300 (Living Room), 1x HD200 (Master Bedroom).
Software: OpenDCT :: WMC Live TV Tuner :: Schedules Direct EPG
Reply With Quote
  #4  
Old 09-01-2017, 05:30 PM
hvymetal hvymetal is offline
Sage Advanced User
 
Join Date: Nov 2007
Posts: 162
Quote:
Anyway, based on what I'm seeing, it looks like generic.http.device_names_csv= isn't set. You just need to provide a device name (e.g. generic.http.device_names_csv=OCTO_PRINT).
I did have it set. Attached is the full log file and config file for the http stream.
Attached Files
File Type: txt opendct.log.txt (38.7 KB, 329 views)
File Type: txt wrapper - .txt (676.0 KB, 323 views)
File Type: txt opendct .properties.txt (8.1 KB, 324 views)

Last edited by hvymetal; 09-01-2017 at 09:23 PM.
Reply With Quote
  #5  
Old 09-01-2017, 09:12 PM
hvymetal hvymetal is offline
Sage Advanced User
 
Join Date: Nov 2007
Posts: 162
Ok I also tried Generic Pipe again but still unable to get the stream to play in SageTV.

Here are the steps I followed:
1.Installed and verified FFMPEG
A. Download static FFMPEG and copied to docker directory /opendct/opt/ffmpeg (https://johnvansickle.com/ffmpeg/)
B. Connected to docker using docker exec -it crazifuzzy-opendct /bin/bash -c "export TERM=xterm; exec bash"
C. executed the streaming_executable listed in step 6. This caused the stream to display scrolling and random characters in the terminal.
D. killed t FFMPEG process with another instance of a terminal (If this was not done the Docker would hang when stopping the container and would require a reboot)
2. Stopped OpenDCT docker
3. Add generic.pipe.device_names_csv=OCTO_PRINTER2 to config
4. Start OpenDCT docker
5. Stop OpenDCT docker
6. Add sagetv.device.-444781814.streaming_executable=/opt/opendct/ffmpeg/ffmpeg -f lavfi -i anullsrc -i http\://192.168.10.105/webcam/?action\=stream -shortest -c\:a mp3 -c\:v copy -f mpegts pipe\:1 to config
7. Start OpenDCT docker
The stream will not start in SageTV. I attached my logs and config file. What ports are required for OpenDCT? The docker does not have any mapped.
Attached Files
File Type: txt opendct -PIPE.log.txt (38.2 KB, 323 views)
File Type: txt opendct -PIPE.properties.txt (8.0 KB, 315 views)
File Type: txt wrapper - PIPE.log.txt (165.2 KB, 323 views)

Last edited by hvymetal; 09-01-2017 at 09:27 PM.
Reply With Quote
  #6  
Old 09-02-2017, 08:21 PM
EnterNoEscape's Avatar
EnterNoEscape EnterNoEscape is offline
SageTVaholic
 
Join Date: Jun 2010
Location: Harrisburg, PA
Posts: 2,657
I'm confused about why the hash seems to change for a device that doesn't change names. I know Java doesn't guarantee that the hashes between one OS will be same on another OS, but I got -903334296 on both Windows and Linux and in your properties I'm seeing -444781814 and -903334296. Remove all of the entries for -444781814 as I see you have the exact same device name there and set up -903334296 instead.
__________________
SageTV v9 Server: ASRock Z97 Extreme4, Intel i7-4790K @ 4.4Ghz, 32GB RAM, 6x 3TB 7200rpm HD, 2x 5TB 7200rpm HD, 2x 6TB 7200rpm HD, 4x 256GB SSD, 4x 500GB SSD, unRAID Pro 6.7.2 (Dual Parity + SSD Cache).
Capture: 1x Ceton InfiniTV 4 (ClearQAM), 2x Ceton InfiniTV 6, 1x BM1000-HDMI, 1x BM3500-HDMI.

Clients: 1x HD300 (Living Room), 1x HD200 (Master Bedroom).
Software: OpenDCT :: WMC Live TV Tuner :: Schedules Direct EPG
Reply With Quote
  #7  
Old 09-02-2017, 08:43 PM
hvymetal hvymetal is offline
Sage Advanced User
 
Join Date: Nov 2007
Posts: 162
The HTTP I was trying all kinds of thing to make things work so I'm not sure what I left in it.

The pipe logs I started with a new config by deleting it and starting OpenDCT docker so it created a new one.
Reply With Quote
  #8  
Old 09-02-2017, 09:41 PM
hvymetal hvymetal is offline
Sage Advanced User
 
Join Date: Nov 2007
Posts: 162
Okay I made some progress but the stream will still not play. What I discovered it OpenDCT does not like underscores in the name . Now I get log entries from FFMPEG. Any idea what else I'm missing?

Attached is the updated config and log. Turned off HDHR and UPNP scanning so easy to analyze log.
Attached Files
File Type: txt opendct.log.PIPE3.txt (37.7 KB, 382 views)
File Type: txt opendct.properties.PIPE3.txt (4.7 KB, 308 views)

Last edited by hvymetal; 09-02-2017 at 11:14 PM.
Reply With Quote
  #9  
Old 09-03-2017, 09:21 AM
EnterNoEscape's Avatar
EnterNoEscape EnterNoEscape is offline
SageTVaholic
 
Join Date: Jun 2010
Location: Harrisburg, PA
Posts: 2,657
Quote:
Originally Posted by hvymetal View Post
Okay I made some progress but the stream will still not play. What I discovered it OpenDCT does not like underscores in the name . Now I get log entries from FFMPEG. Any idea what else I'm missing?

Attached is the updated config and log. Turned off HDHR and UPNP scanning so easy to analyze log.
Change sagetv.device.-383702153.consumer=opendct.consumer.DynamicConsumerImpl to sagetv.device.-383702153.consumer=opendct.consumer.RawSageTVConsumerImpl
__________________
SageTV v9 Server: ASRock Z97 Extreme4, Intel i7-4790K @ 4.4Ghz, 32GB RAM, 6x 3TB 7200rpm HD, 2x 5TB 7200rpm HD, 2x 6TB 7200rpm HD, 4x 256GB SSD, 4x 500GB SSD, unRAID Pro 6.7.2 (Dual Parity + SSD Cache).
Capture: 1x Ceton InfiniTV 4 (ClearQAM), 2x Ceton InfiniTV 6, 1x BM1000-HDMI, 1x BM3500-HDMI.

Clients: 1x HD300 (Living Room), 1x HD200 (Master Bedroom).
Software: OpenDCT :: WMC Live TV Tuner :: Schedules Direct EPG
Reply With Quote
  #10  
Old 09-03-2017, 09:01 PM
hvymetal hvymetal is offline
Sage Advanced User
 
Join Date: Nov 2007
Posts: 162
Quote:
Originally Posted by EnterNoEscape View Post
Change sagetv.device.-383702153.consumer=opendct.consumer.DynamicConsumerImpl to sagetv.device.-383702153.consumer=opendct.consumer.RawSageTVConsumerImpl
Okay I got video to stream but for some reason it takes 40s before any video is displayed. Also the video is not smooth and jerky. I also tried setting fast_network_encoder_switch=false in both the OpenDCT and Sage properties files. Also note that I had the change the video codec in the FFMPEG to mpeg2video because COPY would not create a playable file conversion when played with VLC. This was tested by creating a file using docker console. In the the docker console and I ran TOP and when streaming in SageTV the FFMPEG process is using 20% CPU(Screen shot attached). Video file created directly via console plays correctly via VLC.

This what I used for streaming_executable
Code:
/opt/opendct/ffmpeg/ffmpeg -thread_queue_size 512 -i http\://192.168.10.105/webcam/?action\=stream  -f lavfi -i anullsrc -c\:v mpeg2video -c\:a aac -f mpegts -q\:v 0 -nostats pipe\:1
Any idea how to improve delay and make the video smooth?
Attached Images
File Type: jpg TOP.jpg (102.4 KB, 334 views)
Attached Files
File Type: txt opendct.log.PIPE4.txt (10.5 KB, 349 views)
File Type: txt opendct.properties.PIPE4.txt (4.8 KB, 294 views)

Last edited by hvymetal; 09-03-2017 at 09:03 PM.
Reply With Quote
  #11  
Old 09-04-2017, 01:29 AM
Fuzzy's Avatar
Fuzzy Fuzzy is offline
SageTVaholic
 
Join Date: Sep 2005
Location: Jurupa Valley, CA
Posts: 9,957
The long delays probably have to do with ffmpeg detecting the stream type before finally writing anything out, followed by sage essentially needing to do the same. I think ffmpeg can be 'told' the stream type on the input command, which would at least speed that bit up, but am not certain.
__________________
Buy Fuzzy a beer! (Fuzzy likes beer)

unRAID Server: i7-6700, 32GB RAM, Dual 128GB SSD cache and 13TB pool, with SageTVv9, openDCT, Logitech Media Server and Plex Media Server each in Dockers.
Sources: HRHR Prime with Charter CableCard. HDHR-US for OTA.
Primary Client: HD-300 through XBoxOne in Living Room, Samsung HLT-6189S
Other Clients: Mi Box in Master Bedroom, HD-200 in kids room
Reply With Quote
  #12  
Old 09-04-2017, 01:37 PM
hvymetal hvymetal is offline
Sage Advanced User
 
Join Date: Nov 2007
Posts: 162
I tried adding the input format but it still would take 40sec for it show in SageTV.

Code:
/opt/opendct/ffmpeg/ffmpeg -thread_queue_size 512 -i http\://192.168.10.105/webcam/?action\=stream  -f lavfi -i aevalsrc\=0 -c\:v mpeg2video -pix_fmt yuv422p  -c\:a ac3 -f mpegts -q\:v 0 -nostats pipe\:1
Also I noticed that SageTV is having trouble with the video because the elapse time keeps backing up 1 sec then forward for every sec change and frames are being skipped. If I play the video file directly in SageTV it will have no problem playing the file that is recorded from the live recording.

I also notice if I change the following setting (sagetv.device.-383702153.consumer=opendct.consumer.MediaServerConsumerImpl) video starts within few seconds but still have the same problem as above with the elapsed time and skipping frames. In the SageTV log I get the [MediaServerConnection@4411b9d9] Remuxer cannot find sync byte after checking 0 bytes.
Reply With Quote
  #13  
Old 09-04-2017, 04:34 PM
EnterNoEscape's Avatar
EnterNoEscape EnterNoEscape is offline
SageTVaholic
 
Join Date: Jun 2010
Location: Harrisburg, PA
Posts: 2,657
Quote:
Originally Posted by hvymetal View Post
I tried adding the input format but it still would take 40sec for it show in SageTV.

Code:
/opt/opendct/ffmpeg/ffmpeg -thread_queue_size 512 -i http\://192.168.10.105/webcam/?action\=stream  -f lavfi -i aevalsrc\=0 -c\:v mpeg2video -pix_fmt yuv422p  -c\:a ac3 -f mpegts -q\:v 0 -nostats pipe\:1
Also I noticed that SageTV is having trouble with the video because the elapse time keeps backing up 1 sec then forward for every sec change and frames are being skipped. If I play the video file directly in SageTV it will have no problem playing the file that is recorded from the live recording.

I also notice if I change the following setting (sagetv.device.-383702153.consumer=opendct.consumer.MediaServerConsumerImpl) video starts within few seconds but still have the same problem as above with the elapsed time and skipping frames. In the SageTV log I get the [MediaServerConnection@4411b9d9] Remuxer cannot find sync byte after checking 0 bytes.
If you want to use the media server remuxer, you will want to change consumer.media_server.prefer_ps=true to false or you might end up with an unplayable file on any video format other than MPEG2. The SageTV side implementation will try to fix things if the container is PS and it knows the video format you're remuxing into it isn't supported.

If you're seeing a lot of those sync byte errors, there's a chance that either the stream being sent to SageTV isn't actually MPEG-TS or data was missing when it reached SageTV.

I still recommend raw coming from OpenDCT because you're already running the stream through FFmpeg. If you want to try to speed up the time to playback, you can try to make the transfers more aggressive. To do this, reduce the value of consumer.raw.min_transfer_size=65536.
__________________
SageTV v9 Server: ASRock Z97 Extreme4, Intel i7-4790K @ 4.4Ghz, 32GB RAM, 6x 3TB 7200rpm HD, 2x 5TB 7200rpm HD, 2x 6TB 7200rpm HD, 4x 256GB SSD, 4x 500GB SSD, unRAID Pro 6.7.2 (Dual Parity + SSD Cache).
Capture: 1x Ceton InfiniTV 4 (ClearQAM), 2x Ceton InfiniTV 6, 1x BM1000-HDMI, 1x BM3500-HDMI.

Clients: 1x HD300 (Living Room), 1x HD200 (Master Bedroom).
Software: OpenDCT :: WMC Live TV Tuner :: Schedules Direct EPG
Reply With Quote
  #14  
Old 09-06-2017, 10:15 AM
hvymetal hvymetal is offline
Sage Advanced User
 
Join Date: Nov 2007
Posts: 162
So I got the video stream to play consistently. The problem is that since the input is mjpeg(not really video but a series of jpeg with a small frame rate change)causes the frame rate not to be consistence. By default ffmpeg uses the input framerate to calculate timestamps. If the timestamps are incorrect SageTv will have problems keeping sync causing the time to go negative then positive. This causes the video to stutter. The fix is force a different source for time stamping and force a constant frame rate. Now the starting time and live video delay is about 6s.

Here is the final streaming_executable with each setting explained:

stdbuf -i0 -o0 -e0 /opt/opendct/ffmpeg/ffmpeg -use_wallclock_as_timestamps 1 -r 10 -vcodec mjpeg -re -i http\://192.168.10.105/webcam/?action\=stream -f lavfi -i anullsrc -acodec ac3 -flush_packets 1 -vsync cfr -fflags +nobuffer+genpts+shortest -avoid_negative_ts make_non_negative -reset_timestamps 1 -r 29.97 -vcodec mpeg2video -pix_fmt yuv420p -me_method epzs -g 45 -bf 2 -trellis 2 -cmp 2 -subcmp 2 -s hd480 -b\:v 5M -minrate\:v 5M -maxrate\:v 5M -bufsize\:v 224k -f mpegts -nostats pipe\:1
Code:
stdbuf -i0 -o0 -e0                                      (Prevent ffmpeg PIPE from being buffered)
/opt/opendct/ffmpeg/ffmpeg                              (Location of ffmpeg exectable)
-use_wallclock_as_timestamps 1                          (Required not to timing off frame rate)
-r 10                                                   (Frame rate of input)
-vcodec mjpeg                                           (Video Codec of input)
-re                                                     (Force ffmpeg read input fix timebase)
-i http\://192.168.10.105/webcam/?action\=stream        (Input Stream)
-f lavfi -i anullsrc                                    (Create Null Audio source)
-acodec ac3                                             (Encode Audio as AC3)
-flush_packets 1                                        (Flash output packets.  Without this on smaller bitrates it will wait to flush every 248K)
-vsync cfr                                              (Required to maintan output frame rate)
-fflags +nobuffer+genpts+shortest                       (Attemppt to turn off buffers)
-avoid_negative_ts make_non_negative                    (if timestamps are off do not go negitive or this will cause studdering in SageTV)
-reset_timestamps 1                                     (Ensure timestamps are reset to zero at every frame)
-r 29.97                                                  (Use standard frame rate for mpegts)
-vcodec mpeg2video                                      (Use standard video codec for mpegts)
-pix_fmt yuv420p                                        (Use stanadard pixel format for mpegts  NOTE: Not required causes higher CPU)
-me_method epzs -g 45 -bf 2 -trellis 2 -cmp 2 -subcmp 2 (Encoding quality NOTE: Not required causes higher CPU)
-s hd480                                                (Use standard resolution for mpegts NOTE: Not required causes higher CPU)
-b\:v 5M -minrate\:v 5M -maxrate\:v 5M -bufsize\:v 224k (Force bitrate...The higher set the faster SagetV will start video but make file larger)
-f mpegts                                               (Force mpegts containter)
-nostats                                                (Do not show full stats or it will fill the log file)
pipe\:1                                                 (Output to Pipe)
OpenDCT settings:
sagetv.device.-383702153.consumer=opendct.consumer.RawSageTVConsumerImpl
sagetv.device.-383702153.fast_network_encoder_switch=true (Did not make a difference on video delay)
consumer.raw.min_transfer_size=0

Some followup questions:
  1. Are there any other suggestions to decrease the video delay?
  2. Is there any way to embedded the streaming_executable into a shell script that will pass the pipe to OpenDCT?. I like to add time stamping text but the way OpenDCT parses the command it will not allow things that work on console even when using proper escape sequence.
    I tried this again and it worked from a standard shell script. Attached is the script that adds local time overlay to the video. Here are the step required:
    1. make a new file called PIPE.sh
    2. Put command in script and save file
    3. Make executable chmod 777 PIPE.sh
    4. Changed streaming_executable=sh /opt/opendct/PIPE.sh
  3. If the bitrate is not set high it will start video with a longer delay. Higher bitrate means a larger file and higher CPU usage. Is there some setting that I missing to tell SageTV not wait to fill a input buffer?
  4. Is there a setting in SageTV to always start live video at current point?
Attached Files
File Type: txt PIPE.sh.txt (574 Bytes, 301 views)

Last edited by hvymetal; 09-06-2017 at 03:42 PM. Reason: Answered one of my questions
Reply With Quote
  #15  
Old 03-02-2018, 05:08 PM
rickgillyon's Avatar
rickgillyon rickgillyon is offline
Sage Icon
 
Join Date: Sep 2005
Location: Whitley Bay, England
Posts: 1,950
When I've had a failed tune (because an IPTV station isn't available), all subsequent requests for tuning the same device seem to fail (i.e. hang and produce no output) giving this error in wrapper.log:
Code:
GenericHttpCaptureDevice - Capture device was already locked
Is this due to a setting somewhere not releasing the device (which is just a URL to TVHeadEnd)? The channel tunes directly in TVHE no problem.

More logging:
Code:
22:46:36.999 [SageTVTuningMonitor-48] INFO  NIOSageTVMediaServer - Received message from SageTV server '1811838720 900000000047'
22:46:46.245 [SageTVRequestHandler-11205:Unknown] DEBUG SageTVRequestHandler - SageTV sent: 'START virgin4 HDMI|449030719|500|3040061612488|/var/media/99990_500_0302_2246-0.ts|Great-H.264'
22:46:46.245 [SageTVRequestHandler-11205:virgin4] INFO  GenericHttpCaptureDevice - Capture device was already locked.
22:46:46.245 [SageTVRequestHandler-11205:virgin4] DEBUG SageTVRequestHandler - Starting network encoder via upload ID '449030719' to file name '/var/media/99990_500_0302_2246-0.ts'.
22:46:53.001 [SageTVTuningMonitor-48] DEBUG NIOSageTVMediaServer - messageInBytes = 0
22:46:53.001 [SageTVTuningMonitor-48] DEBUG NIOSageTVMediaServer - Received 25 bytes from SageTV server.
22:46:53.001 [SageTVTuningMonitor-48] DEBUG NIOSageTVMediaServer - messageInBytes = 25
22:46:53.001 [SageTVTuningMonitor-48] INFO  NIOSageTVMediaServer - Received message from SageTV server '1819238400 900000000047'
22:47:09.003 [SageTVTuningMonitor-48] DEBUG NIOSageTVMediaServer - messageInBytes = 0
22:47:09.003 [SageTVTuningMonitor-48] DEBUG NIOSageTVMediaServer - Received 25 bytes from SageTV server.
22:47:09.003 [SageTVTuningMonitor-48] DEBUG NIOSageTVMediaServer - messageInBytes = 25
22:47:09.003 [SageTVTuningMonitor-48] INFO  NIOSageTVMediaServer - Received message from SageTV server '1828296240 900000000047'
22:47:25.005 [SageTVTuningMonitor-48] DEBUG NIOSageTVMediaServer - messageInBytes = 0
22:47:25.005 [SageTVTuningMonitor-48] DEBUG NIOSageTVMediaServer - Received 25 bytes from SageTV server.
22:47:25.005 [SageTVTuningMonitor-48] DEBUG NIOSageTVMediaServer - messageInBytes = 25
22:47:25.005 [SageTVTuningMonitor-48] INFO  NIOSageTVMediaServer - Received message from SageTV server '1831838160 900000000047'
22:47:41.006 [SageTVTuningMonitor-48] DEBUG NIOSageTVMediaServer - messageInBytes = 0
22:47:41.006 [SageTVTuningMonitor-48] DEBUG NIOSageTVMediaServer - Received 25 bytes from SageTV server.
22:47:41.006 [SageTVTuningMonitor-48] DEBUG NIOSageTVMediaServer - messageInBytes = 25
22:47:41.006 [SageTVTuningMonitor-48] INFO  NIOSageTVMediaServer - Received message from SageTV server '1844212320 900000000047'
Properties:
Code:
#OpenDCT Configuration File
#Fri Mar 02 23:05:04 GMT 2018
buffers.nio.direct2=true
channels.qam.automap_reference_lookup=true
channels.qam.automap_tuning_lookup=true
channels.update=true
consumer.dynamic.channels.ffmpeg=
consumer.dynamic.channels.media_server=
consumer.dynamic.channels.raw=
consumer.dynamic.default=opendct.consumer.MediaServerConsumerImpl
consumer.ffmpeg.enhanced_logging=true
consumer.ffmpeg.limit_logging=true
consumer.ffmpeg.linux_logging=true
consumer.ffmpeg.log_stream_details_for_all_programs=false
consumer.ffmpeg.thread_rename_logging=false
consumer.media_server.max_transfer_size=1048476
consumer.media_server.min_transfer_size=64672
consumer.media_server.prefer_ps=false
consumer.media_server.stream_buffer_size=2097152
consumer.media_server.thread_priority=8
consumer.media_server.tuning_polling=false
consumer.media_server.upload_id_port=7818
discovery.devices.exp_always_enable=true
discovery.devices_permitted=
discovery.enabled=true
error_videos_enabled=true
generic.http.device_names_csv=virgin1,virgin2,virgin3,virgin4,freeview1,freeview2,freeview3,freeview4,vmstb,freeview5,freeview6,freeview7,freeview8
generic.http.discoverer_enabled=true
generic.http.wait_for_streaming=15000
generic.pipe.device_names_csv=
generic.pipe.discoverer_enabled=true
generic.pipe.wait_for_streaming=15000
hdhr.allow_http_tuning=true
hdhr.allow_qam_http_tuning=false
hdhr.allow_qam_remapping=false
hdhr.always_remap_lookup=false
hdhr.always_tune_legacy=false
hdhr.broadcast_port=64998
hdhr.broadcast_s=58
hdhr.discoverer_enabled=false
hdhr.extend_transcode_profile=
hdhr.ignore_device_ids=
hdhr.ignore_models=
hdhr.locking=true
hdhr.offline_detection_min_bytes=10528
hdhr.retry_count=2
hdhr.smart_broadcast=true
hdhr.static_addresses_csv=
hdhr.wait_for_offline_detection_s=8
hdhr.wait_for_streaming=15000
http.new.default_producer=opendct.producer.NIOHTTPProducerImpl
log.min_free_space=1073741824
log.remove_after_days=30
pm.enabled=true
pm.network.infinitv_wait=2
pm.network.resume_timeout_ms=240000
pm.network.start_retry=120
pm.network.wait_for_network_on_resume=true
pool.enabled=false
producer.http.nio.thread_priority=9
retune_ceton_only=true
retune_enable=true
sagetv.device.-412539065.channel_padding=0
sagetv.device.-412539065.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.-412539065.custom_channels=
sagetv.device.-412539065.delay_to_wait_after_tuning=0
sagetv.device.-412539065.device_name=freeview8
sagetv.device.-412539065.encoder_listen_port=9000
sagetv.device.-412539065.encoder_merit=0
sagetv.device.-412539065.encoder_pool=generic_http
sagetv.device.-412539065.exclusive_server_address=
sagetv.device.-412539065.fast_network_encoder_switch=true
sagetv.device.-412539065.http_password=
sagetv.device.-412539065.http_username=
sagetv.device.-412539065.last_channel=3
sagetv.device.-412539065.pretuning_executable=
sagetv.device.-412539065.stopping_executable=
sagetv.device.-412539065.stopping_executable_delay_ms=15000
sagetv.device.-412539065.streaming_url=http\://192.168.1.5\:9981/stream/channelnumber/%c%
sagetv.device.-412539065.streaming_url2=
sagetv.device.-412539065.streaming_url2_channels=
sagetv.device.-412539065.transcode_profile=
sagetv.device.-412539065.tuning_delay_ms=0
sagetv.device.-412539065.tuning_executable=
sagetv.device.-412539066.channel_padding=0
sagetv.device.-412539066.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.-412539066.custom_channels=
sagetv.device.-412539066.delay_to_wait_after_tuning=0
sagetv.device.-412539066.device_name=freeview7
sagetv.device.-412539066.encoder_listen_port=9000
sagetv.device.-412539066.encoder_merit=0
sagetv.device.-412539066.encoder_pool=generic_http
sagetv.device.-412539066.exclusive_server_address=
sagetv.device.-412539066.fast_network_encoder_switch=true
sagetv.device.-412539066.http_password=
sagetv.device.-412539066.http_username=
sagetv.device.-412539066.last_channel=1
sagetv.device.-412539066.pretuning_executable=
sagetv.device.-412539066.stopping_executable=
sagetv.device.-412539066.stopping_executable_delay_ms=15000
sagetv.device.-412539066.streaming_url=http\://192.168.1.5\:9981/stream/channelnumber/%c%
sagetv.device.-412539066.streaming_url2=
sagetv.device.-412539066.streaming_url2_channels=
sagetv.device.-412539066.transcode_profile=
sagetv.device.-412539066.tuning_delay_ms=0
sagetv.device.-412539066.tuning_executable=
sagetv.device.-412539067.channel_padding=0
sagetv.device.-412539067.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.-412539067.custom_channels=
sagetv.device.-412539067.delay_to_wait_after_tuning=0
sagetv.device.-412539067.device_name=freeview6
sagetv.device.-412539067.encoder_listen_port=9000
sagetv.device.-412539067.encoder_merit=0
sagetv.device.-412539067.encoder_pool=generic_http
sagetv.device.-412539067.exclusive_server_address=
sagetv.device.-412539067.fast_network_encoder_switch=true
sagetv.device.-412539067.http_password=
sagetv.device.-412539067.http_username=
sagetv.device.-412539067.last_channel=2
sagetv.device.-412539067.pretuning_executable=
sagetv.device.-412539067.stopping_executable=
sagetv.device.-412539067.stopping_executable_delay_ms=15000
sagetv.device.-412539067.streaming_url=http\://192.168.1.5\:9981/stream/channelnumber/%c%
sagetv.device.-412539067.streaming_url2=
sagetv.device.-412539067.streaming_url2_channels=
sagetv.device.-412539067.transcode_profile=
sagetv.device.-412539067.tuning_delay_ms=0
sagetv.device.-412539067.tuning_executable=
sagetv.device.-412539068.channel_padding=0
sagetv.device.-412539068.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.-412539068.custom_channels=
sagetv.device.-412539068.delay_to_wait_after_tuning=0
sagetv.device.-412539068.device_name=freeview5
sagetv.device.-412539068.encoder_listen_port=9000
sagetv.device.-412539068.encoder_merit=0
sagetv.device.-412539068.encoder_pool=generic_http
sagetv.device.-412539068.exclusive_server_address=
sagetv.device.-412539068.fast_network_encoder_switch=true
sagetv.device.-412539068.http_password=
sagetv.device.-412539068.http_username=
sagetv.device.-412539068.last_channel=1
sagetv.device.-412539068.pretuning_executable=
sagetv.device.-412539068.stopping_executable=
sagetv.device.-412539068.stopping_executable_delay_ms=15000
sagetv.device.-412539068.streaming_url=http\://192.168.1.5\:9981/stream/channelnumber/%c%
sagetv.device.-412539068.streaming_url2=
sagetv.device.-412539068.streaming_url2_channels=
sagetv.device.-412539068.transcode_profile=
sagetv.device.-412539068.tuning_delay_ms=0
sagetv.device.-412539068.tuning_executable=
sagetv.device.-412539069.channel_padding=0
sagetv.device.-412539069.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.-412539069.custom_channels=
sagetv.device.-412539069.delay_to_wait_after_tuning=0
sagetv.device.-412539069.device_name=freeview4
sagetv.device.-412539069.encoder_listen_port=9000
sagetv.device.-412539069.encoder_merit=0
sagetv.device.-412539069.encoder_pool=generic_http
sagetv.device.-412539069.exclusive_server_address=
sagetv.device.-412539069.fast_network_encoder_switch=true
sagetv.device.-412539069.http_password=
sagetv.device.-412539069.http_username=
sagetv.device.-412539069.last_channel=103
sagetv.device.-412539069.pretuning_executable=
sagetv.device.-412539069.stopping_executable=
sagetv.device.-412539069.stopping_executable_delay_ms=15000
sagetv.device.-412539069.streaming_url=http\://192.168.1.5\:9981/stream/channelnumber/%c%
sagetv.device.-412539069.streaming_url2=
sagetv.device.-412539069.streaming_url2_channels=
sagetv.device.-412539069.transcode_profile=
sagetv.device.-412539069.tuning_delay_ms=0
sagetv.device.-412539069.tuning_executable=
sagetv.device.-412539070.channel_padding=0
sagetv.device.-412539070.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.-412539070.custom_channels=
sagetv.device.-412539070.delay_to_wait_after_tuning=0
sagetv.device.-412539070.device_name=freeview3
sagetv.device.-412539070.encoder_listen_port=9000
sagetv.device.-412539070.encoder_merit=0
sagetv.device.-412539070.encoder_pool=generic_http
sagetv.device.-412539070.exclusive_server_address=
sagetv.device.-412539070.fast_network_encoder_switch=true
sagetv.device.-412539070.http_password=
sagetv.device.-412539070.http_username=
sagetv.device.-412539070.last_channel=3
sagetv.device.-412539070.pretuning_executable=
sagetv.device.-412539070.stopping_executable=
sagetv.device.-412539070.stopping_executable_delay_ms=15000
sagetv.device.-412539070.streaming_url=http\://192.168.1.5\:9981/stream/channelnumber/%c%
sagetv.device.-412539070.streaming_url2=
sagetv.device.-412539070.streaming_url2_channels=
sagetv.device.-412539070.transcode_profile=
sagetv.device.-412539070.tuning_delay_ms=0
sagetv.device.-412539070.tuning_executable=
sagetv.device.-412539071.channel_padding=0
sagetv.device.-412539071.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.-412539071.custom_channels=
sagetv.device.-412539071.delay_to_wait_after_tuning=0
sagetv.device.-412539071.device_name=freeview2
sagetv.device.-412539071.encoder_listen_port=9000
sagetv.device.-412539071.encoder_merit=0
sagetv.device.-412539071.encoder_pool=generic_http
sagetv.device.-412539071.exclusive_server_address=
sagetv.device.-412539071.fast_network_encoder_switch=true
sagetv.device.-412539071.http_password=
sagetv.device.-412539071.http_username=
sagetv.device.-412539071.last_channel=104
sagetv.device.-412539071.pretuning_executable=
sagetv.device.-412539071.stopping_executable=
sagetv.device.-412539071.stopping_executable_delay_ms=15000
sagetv.device.-412539071.streaming_url=http\://192.168.1.5\:9981/stream/channelnumber/%c%
sagetv.device.-412539071.streaming_url2=
sagetv.device.-412539071.streaming_url2_channels=
sagetv.device.-412539071.transcode_profile=
sagetv.device.-412539071.tuning_delay_ms=0
sagetv.device.-412539071.tuning_executable=
sagetv.device.-412539072.channel_padding=0
sagetv.device.-412539072.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.-412539072.custom_channels=
sagetv.device.-412539072.delay_to_wait_after_tuning=0
sagetv.device.-412539072.device_name=freeview1
sagetv.device.-412539072.encoder_listen_port=9000
sagetv.device.-412539072.encoder_merit=0
sagetv.device.-412539072.encoder_pool=generic_http
sagetv.device.-412539072.exclusive_server_address=
sagetv.device.-412539072.fast_network_encoder_switch=true
sagetv.device.-412539072.http_password=
sagetv.device.-412539072.http_username=
sagetv.device.-412539072.last_channel=2
sagetv.device.-412539072.pretuning_executable=
sagetv.device.-412539072.stopping_executable=
sagetv.device.-412539072.stopping_executable_delay_ms=15000
sagetv.device.-412539072.streaming_url=http\://192.168.1.5\:9981/stream/channelnumber/%c%
sagetv.device.-412539072.streaming_url2=
sagetv.device.-412539072.streaming_url2_channels=
sagetv.device.-412539072.transcode_profile=
sagetv.device.-412539072.tuning_delay_ms=0
sagetv.device.-412539072.tuning_executable=
sagetv.device.112336906.channel_padding=0
sagetv.device.112336906.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.112336906.custom_channels=
sagetv.device.112336906.delay_to_wait_after_tuning=0
sagetv.device.112336906.device_name=vmstb
sagetv.device.112336906.encoder_listen_port=9000
sagetv.device.112336906.encoder_merit=0
sagetv.device.112336906.encoder_pool=generic_http
sagetv.device.112336906.exclusive_server_address=
sagetv.device.112336906.fast_network_encoder_switch=true
sagetv.device.112336906.http_password=
sagetv.device.112336906.http_username=
sagetv.device.112336906.last_channel=523
sagetv.device.112336906.pretuning_executable=
sagetv.device.112336906.stopping_executable=
sagetv.device.112336906.stopping_executable_delay_ms=15000
sagetv.device.112336906.streaming_url=http\://192.168.1.168\:8080/hdmi
sagetv.device.112336906.streaming_url2=
sagetv.device.112336906.streaming_url2_channels=
sagetv.device.112336906.transcode_profile=
sagetv.device.112336906.tuning_delay_ms=0
sagetv.device.112336906.tuning_executable=
sagetv.device.465767044.channel_padding=0
sagetv.device.465767044.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.465767044.custom_channels=
sagetv.device.465767044.delay_to_wait_after_tuning=0
sagetv.device.465767044.device_name=virgin1
sagetv.device.465767044.encoder_listen_port=9000
sagetv.device.465767044.encoder_merit=0
sagetv.device.465767044.encoder_pool=generic_http
sagetv.device.465767044.exclusive_server_address=
sagetv.device.465767044.fast_network_encoder_switch=true
sagetv.device.465767044.http_password=
sagetv.device.465767044.http_username=
sagetv.device.465767044.last_channel=503
sagetv.device.465767044.pretuning_executable=
sagetv.device.465767044.stopping_executable=
sagetv.device.465767044.stopping_executable_delay_ms=15000
sagetv.device.465767044.streaming_url=http\://192.168.1.5\:9981/stream/channelnumber/%c%
sagetv.device.465767044.streaming_url2=
sagetv.device.465767044.streaming_url2_channels=
sagetv.device.465767044.transcode_profile=
sagetv.device.465767044.tuning_delay_ms=0
sagetv.device.465767044.tuning_executable=
sagetv.device.465767045.channel_padding=0
sagetv.device.465767045.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.465767045.custom_channels=
sagetv.device.465767045.delay_to_wait_after_tuning=0
sagetv.device.465767045.device_name=virgin2
sagetv.device.465767045.encoder_listen_port=9000
sagetv.device.465767045.encoder_merit=0
sagetv.device.465767045.encoder_pool=generic_http
sagetv.device.465767045.exclusive_server_address=
sagetv.device.465767045.fast_network_encoder_switch=true
sagetv.device.465767045.http_password=
sagetv.device.465767045.http_username=
sagetv.device.465767045.last_channel=502
sagetv.device.465767045.pretuning_executable=
sagetv.device.465767045.stopping_executable=
sagetv.device.465767045.stopping_executable_delay_ms=15000
sagetv.device.465767045.streaming_url=http\://192.168.1.5\:9981/stream/channelnumber/%c%
sagetv.device.465767045.streaming_url2=
sagetv.device.465767045.streaming_url2_channels=
sagetv.device.465767045.transcode_profile=
sagetv.device.465767045.tuning_delay_ms=0
sagetv.device.465767045.tuning_executable=
sagetv.device.465767046.channel_padding=0
sagetv.device.465767046.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.465767046.custom_channels=
sagetv.device.465767046.delay_to_wait_after_tuning=0
sagetv.device.465767046.device_name=virgin3
sagetv.device.465767046.encoder_listen_port=9000
sagetv.device.465767046.encoder_merit=0
sagetv.device.465767046.encoder_pool=generic_http
sagetv.device.465767046.exclusive_server_address=
sagetv.device.465767046.fast_network_encoder_switch=true
sagetv.device.465767046.http_password=
sagetv.device.465767046.http_username=
sagetv.device.465767046.last_channel=527
sagetv.device.465767046.pretuning_executable=
sagetv.device.465767046.stopping_executable=
sagetv.device.465767046.stopping_executable_delay_ms=15000
sagetv.device.465767046.streaming_url=http\://192.168.1.5\:9981/stream/channelnumber/%c%
sagetv.device.465767046.streaming_url2=
sagetv.device.465767046.streaming_url2_channels=
sagetv.device.465767046.transcode_profile=
sagetv.device.465767046.tuning_delay_ms=0
sagetv.device.465767046.tuning_executable=
sagetv.device.465767047.channel_padding=0
sagetv.device.465767047.consumer=opendct.consumer.DynamicConsumerImpl
sagetv.device.465767047.custom_channels=
sagetv.device.465767047.delay_to_wait_after_tuning=0
sagetv.device.465767047.device_name=virgin4
sagetv.device.465767047.encoder_listen_port=9000
sagetv.device.465767047.encoder_merit=0
sagetv.device.465767047.encoder_pool=generic_http
sagetv.device.465767047.exclusive_server_address=
sagetv.device.465767047.fast_network_encoder_switch=true
sagetv.device.465767047.http_password=
sagetv.device.465767047.http_username=
sagetv.device.465767047.last_channel=501
sagetv.device.465767047.pretuning_executable=
sagetv.device.465767047.stopping_executable=
sagetv.device.465767047.stopping_executable_delay_ms=15000
sagetv.device.465767047.streaming_url=http\://192.168.1.5\:9981/stream/channelnumber/%c%
sagetv.device.465767047.streaming_url2=
sagetv.device.465767047.streaming_url2_channels=
sagetv.device.465767047.transcode_profile=
sagetv.device.465767047.tuning_delay_ms=0
sagetv.device.465767047.tuning_executable=
sagetv.device.global.ignore_devices_csv=
sagetv.device.global.only_devices_csv=
sagetv.device.global.required_devices_loaded_count=0
sagetv.device.global.required_devices_loaded_timeout_ms=60000
sagetv.device.parent.-412539065.device_name=freeview8
sagetv.device.parent.-412539065.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.-412539065.lineup=generic_http
sagetv.device.parent.-412539065.local_ip_override=
sagetv.device.parent.-412539065.offline_scan=false
sagetv.device.parent.-412539066.device_name=freeview7
sagetv.device.parent.-412539066.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.-412539066.lineup=generic_http
sagetv.device.parent.-412539066.local_ip_override=
sagetv.device.parent.-412539066.offline_scan=false
sagetv.device.parent.-412539067.device_name=freeview6
sagetv.device.parent.-412539067.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.-412539067.lineup=generic_http
sagetv.device.parent.-412539067.local_ip_override=
sagetv.device.parent.-412539067.offline_scan=false
sagetv.device.parent.-412539068.device_name=freeview5
sagetv.device.parent.-412539068.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.-412539068.lineup=generic_http
sagetv.device.parent.-412539068.local_ip_override=
sagetv.device.parent.-412539068.offline_scan=false
sagetv.device.parent.-412539069.device_name=freeview4
sagetv.device.parent.-412539069.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.-412539069.lineup=generic_http
sagetv.device.parent.-412539069.local_ip_override=
sagetv.device.parent.-412539069.offline_scan=false
sagetv.device.parent.-412539070.device_name=freeview3
sagetv.device.parent.-412539070.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.-412539070.lineup=generic_http
sagetv.device.parent.-412539070.local_ip_override=
sagetv.device.parent.-412539070.offline_scan=false
sagetv.device.parent.-412539071.device_name=freeview2
sagetv.device.parent.-412539071.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.-412539071.lineup=generic_http
sagetv.device.parent.-412539071.local_ip_override=
sagetv.device.parent.-412539071.offline_scan=false
sagetv.device.parent.-412539072.device_name=freeview1
sagetv.device.parent.-412539072.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.-412539072.lineup=generic_http
sagetv.device.parent.-412539072.local_ip_override=
sagetv.device.parent.-412539072.offline_scan=false
sagetv.device.parent.112336906.device_name=vmstb
sagetv.device.parent.112336906.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.112336906.lineup=generic_http
sagetv.device.parent.112336906.local_ip_override=
sagetv.device.parent.112336906.offline_scan=false
sagetv.device.parent.465767044.device_name=virgin1
sagetv.device.parent.465767044.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.465767044.lineup=generic_http
sagetv.device.parent.465767044.local_ip_override=
sagetv.device.parent.465767044.offline_scan=false
sagetv.device.parent.465767045.device_name=virgin2
sagetv.device.parent.465767045.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.465767045.lineup=generic_http
sagetv.device.parent.465767045.local_ip_override=
sagetv.device.parent.465767045.offline_scan=false
sagetv.device.parent.465767046.device_name=virgin3
sagetv.device.parent.465767046.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.465767046.lineup=generic_http
sagetv.device.parent.465767046.local_ip_override=
sagetv.device.parent.465767046.offline_scan=false
sagetv.device.parent.465767047.device_name=virgin4
sagetv.device.parent.465767047.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.465767047.lineup=generic_http
sagetv.device.parent.465767047.local_ip_override=
sagetv.device.parent.465767047.offline_scan=false
sagetv.early_port_assignment=false
sagetv.encoder_discovery_port=8271
sagetv.log_noop_and_size=false
sagetv.new.default_consumer_impl=opendct.consumer.DynamicConsumerImpl
sagetv.new.default_transcode_profile=
sagetv.new.device.default_encoder_merit=0
sagetv.new.device.default_tuning_delay=0
sagetv.new.device.increment_port=false
sagetv.new.device.socket_server_port_high=9100
sagetv.new.device.socket_server_port_low=9001
sagetv.new.device.socket_server_shared_port=9000
sagetv.use_automatic_loopback=true
upnp.always_remap_lookup=false
upnp.device.offline_detection_min_bytes=18800
upnp.device.ping_detection=false
upnp.device.ping_timeout_ms=15000
upnp.device.wait_for_offline_detection_s=18
upnp.device.wait_for_streaming=15000
upnp.discoverer_enabled=true
upnp.new.device.search_interval_s=4
upnp.new.device.search_strings_csv=schemas-cetoncorp-com
upnp.service.configuration.http_listen_port=8501
upnp.service.configuration.ignore_interfaces_csv=
upnp.service.configuration.ignore_local_ip_csv=
upnp.smart_broadcast=true
version.config=4
version.program=0.5.28
web.enabled=true
web.port=9091
__________________
unRAID Server: Intel Core i5 7600K, 48GB DDR4, 2x512GB PCIe M.2 Cache Pool, 2x10TB SATA3 Parity Drive, 3x8TB SATA Array, 1x hdHomeRun DVB-T2 Quattro, IPTV via xTeVe, unRAID 6.8.3, tvHeadEnd for recording back end, Emby
Clients: 3 Nvidia Shields, 3 FireTV, 3 Win10 Pro PC Clients

Last edited by rickgillyon; 03-02-2018 at 05:10 PM.
Reply With Quote
  #16  
Old 03-05-2018, 05:49 PM
EnterNoEscape's Avatar
EnterNoEscape EnterNoEscape is offline
SageTVaholic
 
Join Date: Jun 2010
Location: Harrisburg, PA
Posts: 2,657
It's not that you posted in the wrong place. I've just turned off all notifications because I don't have a lot of free time. I strangely find it stressful when I know someone is asking me a question and I do not have the time to respond.

I don't have a good answer about why it wouldn't release. My guess would be it could be my NIO HTTP implementation might not be working correctly in your case. If you change http.new.default_producer=opendct.producer.NIOHTTPProducerImpl to opendct.producer.HTTPProducer, you would then be using the Java IO implementation that might be more stable at the expense of more JVM garbage collection.
__________________
SageTV v9 Server: ASRock Z97 Extreme4, Intel i7-4790K @ 4.4Ghz, 32GB RAM, 6x 3TB 7200rpm HD, 2x 5TB 7200rpm HD, 2x 6TB 7200rpm HD, 4x 256GB SSD, 4x 500GB SSD, unRAID Pro 6.7.2 (Dual Parity + SSD Cache).
Capture: 1x Ceton InfiniTV 4 (ClearQAM), 2x Ceton InfiniTV 6, 1x BM1000-HDMI, 1x BM3500-HDMI.

Clients: 1x HD300 (Living Room), 1x HD200 (Master Bedroom).
Software: OpenDCT :: WMC Live TV Tuner :: Schedules Direct EPG
Reply With Quote
  #17  
Old 03-05-2018, 05:58 PM
rickgillyon's Avatar
rickgillyon rickgillyon is offline
Sage Icon
 
Join Date: Sep 2005
Location: Whitley Bay, England
Posts: 1,950
Many thanks, I'll give it a shot.
__________________
unRAID Server: Intel Core i5 7600K, 48GB DDR4, 2x512GB PCIe M.2 Cache Pool, 2x10TB SATA3 Parity Drive, 3x8TB SATA Array, 1x hdHomeRun DVB-T2 Quattro, IPTV via xTeVe, unRAID 6.8.3, tvHeadEnd for recording back end, Emby
Clients: 3 Nvidia Shields, 3 FireTV, 3 Win10 Pro PC Clients
Reply With Quote
  #18  
Old 03-26-2018, 03:52 PM
rickgillyon's Avatar
rickgillyon rickgillyon is offline
Sage Icon
 
Join Date: Sep 2005
Location: Whitley Bay, England
Posts: 1,950
I still have the NIO stuff at the end of the file, e.g.
Code:
sagetv.device.parent.-412539065.device_name=freeview8
sagetv.device.parent.-412539065.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.-412539065.lineup=generic_http
sagetv.device.parent.-412539065.local_ip_override=
sagetv.device.parent.-412539065.offline_scan=false
Do these need to change too? Still getting the problem intermittently.
__________________
unRAID Server: Intel Core i5 7600K, 48GB DDR4, 2x512GB PCIe M.2 Cache Pool, 2x10TB SATA3 Parity Drive, 3x8TB SATA Array, 1x hdHomeRun DVB-T2 Quattro, IPTV via xTeVe, unRAID 6.8.3, tvHeadEnd for recording back end, Emby
Clients: 3 Nvidia Shields, 3 FireTV, 3 Win10 Pro PC Clients
Reply With Quote
  #19  
Old 03-30-2018, 06:48 PM
EnterNoEscape's Avatar
EnterNoEscape EnterNoEscape is offline
SageTVaholic
 
Join Date: Jun 2010
Location: Harrisburg, PA
Posts: 2,657
Quote:
Originally Posted by rickgillyon View Post
I still have the NIO stuff at the end of the file, e.g.
Code:
sagetv.device.parent.-412539065.device_name=freeview8
sagetv.device.parent.-412539065.http.producer=opendct.producer.NIOHTTPProducerImpl
sagetv.device.parent.-412539065.lineup=generic_http
sagetv.device.parent.-412539065.local_ip_override=
sagetv.device.parent.-412539065.offline_scan=false
Do these need to change too? Still getting the problem intermittently.
Oh, sorry, you need to change it there too.
__________________
SageTV v9 Server: ASRock Z97 Extreme4, Intel i7-4790K @ 4.4Ghz, 32GB RAM, 6x 3TB 7200rpm HD, 2x 5TB 7200rpm HD, 2x 6TB 7200rpm HD, 4x 256GB SSD, 4x 500GB SSD, unRAID Pro 6.7.2 (Dual Parity + SSD Cache).
Capture: 1x Ceton InfiniTV 4 (ClearQAM), 2x Ceton InfiniTV 6, 1x BM1000-HDMI, 1x BM3500-HDMI.

Clients: 1x HD300 (Living Room), 1x HD200 (Master Bedroom).
Software: OpenDCT :: WMC Live TV Tuner :: Schedules Direct EPG
Reply With Quote
  #20  
Old 04-10-2018, 01:49 PM
rickgillyon's Avatar
rickgillyon rickgillyon is offline
Sage Icon
 
Join Date: Sep 2005
Location: Whitley Bay, England
Posts: 1,950
Just to clarify on this, I should change all instances of:
NIOHTTPProducerImpl
to
HTTPProducer

No Impl on the end?

(I regressed all these changes to try and work out why OpenDCT wasn't detecting streamed video, so need to put them back in. Still didn't track the stream problem though)

Edit: after running, it's changed a few to HTTPProducerImpl and it's changed one of my FFmpegTransSageTVConsumerImpl to HTTPProducerImpl too.
__________________
unRAID Server: Intel Core i5 7600K, 48GB DDR4, 2x512GB PCIe M.2 Cache Pool, 2x10TB SATA3 Parity Drive, 3x8TB SATA Array, 1x hdHomeRun DVB-T2 Quattro, IPTV via xTeVe, unRAID 6.8.3, tvHeadEnd for recording back end, Emby
Clients: 3 Nvidia Shields, 3 FireTV, 3 Win10 Pro PC Clients

Last edited by rickgillyon; 04-10-2018 at 04:27 PM.
Reply With Quote
Reply

Tags
hdmi, iptv, script


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Using the OpenDCT Generic Pipe Capture Device EnterNoEscape Hardware Support 101 01-20-2022 12:14 PM
capture device recommendation smithzoos Hardware Support 2 02-29-2016 09:02 PM
USB Capture Device? Skybolt Hardware Support 5 05-07-2013 07:00 PM
Using Motorola Tuner device for capture device cyberfreak Hardware Support 4 02-22-2007 02:47 PM
No AV Capture Device jaelanicu SageTV Recorder Software 5 08-03-2006 02:02 AM


All times are GMT -6. The time now is 11:30 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.
Copyright 2003-2005 SageTV, LLC. All rights reserved.