---
title: File, FIFO, external application and DVB
url: https://doc2.pstreamer.tv/en/manual/webui/io/local.html
lang: en
product: Perfect Streamer
version: 2.0.1.264
---

# File, FIFO, external application and DVB

The transports in this group do not work with the network: the stream is read from a disk or a device, from a named pipe, from the standard output of a third-party application or from a tuner. The purpose of each is described in [Other inputs and outputs](../../streamer/other_io.md#streamer-other-io), DVB reception in [DVB receiver](../../streamer/dvb.md#streamer-dvb).

## File and device (file)

The input plays a transport stream from a file or reads it from a device; the output writes the stream to a file or delivers it to a device — including SDI and ASI boards ([Files and devices](../../streamer/other_io.md#streamer-other-io-file)).

### Input

| Field | Purpose | Values |
| --- | --- | --- |
| File path | The full path to the file or the device. A required field; the path must be absolute. While the path is unavailable, the input does not fail for good but waits for the administrator and retries periodically. | an absolute path |
| Is device node | Disabled — the path is treated as an ordinary file, and it is played in a loop: on reaching the end the node goes back to the beginning and recalculates the time stamps and the continuity counters so that the receiver sees a continuous stream. Enabled — the path is treated as a device: reading is done once, without going back to the beginning. A path of the form `/dev/dvb/adapterN` the node recognizes by itself and sets up DVB-ASI reception. A tuner (S/S2/T/T2/C) cannot be attached this way: the node recognizes it from the device itself and refuses regardless of whether the adapter is configured on the node or not — there is a separate input type for a tuner. | disabled by default |

### Output

| Field | Purpose | Values |
| --- | --- | --- |
| File path | The full path to the file or the device. A required field; the path must be absolute. | an absolute path |
| Is device node | Disabled — the file is created if it does not exist and is truncated at every start of the output: what was written before is lost, the size is not limited and there is no file rotation. Enabled — the path is treated as an existing device and is opened without being created or truncated. | disabled by default |
| Packets per write | How many TS packets the node writes in a single operation. More means fewer system calls and a coarser writing pace. Changing it reopens the output. | 1–16, default 16 |

## Named pipe (pipe)

A bridge to an external program through a named pipe (FIFO): unlike the `std` type, the node does not start that program, it runs on its own ([Named pipes (pipe)](../../streamer/other_io.md#streamer-other-io-pipe)).

### Input and output

| Field | Purpose | Values |
| --- | --- | --- |
| FIFO path (empty = auto) | The path to the pipe. The pipe is created by the node itself and removed when it stops, so a foreign existing pipe should not be specified: an input creates the pipe when it starts, an output when the first data arrives. The path must be absolute. An empty field means the node will choose the path itself; the resulting path is visible in the row of the list of inputs and outputs right after saving, even before the stream is started. | an absolute path or empty |

While nobody reads the pipe, the output stays in the working state, but the data goes nowhere — it is simply discarded, and the sent counters do not grow. There is no error in this: the absence of a reader is told apart from a non-working output by the counters, not by the state. A reader can be attached at any moment while the stream is running: the node retries with every packet that arrives and picks the reader up almost at once. If, however, the stream has stopped by that time, the retries cease — then the output is paused and resumed.

## External application (std)

A bridge to the protocols the node does not support itself: the node starts a console application and exchanges an MPEG-TS stream with it through the standard input and output ([External applications (std)](../../streamer/other_io.md#streamer-other-io-std)). The application is restarted by the node, and its messages from the standard error stream get into the error text of the input or the output — that is the first place to look when diagnosing.

### Input and output

| Field | Purpose | Values |
| --- | --- | --- |
| Command (absolute path) | The path to the application to be started. A required field. On an input the application writes MPEG-TS to the standard output, on an output it reads it from the standard input. The file must exist and be executable, otherwise the point will not start. | a path to an executable file |
| Arguments | The command line as a single line; the node parses it into arguments itself. The parsing rules are given under the field: an argument with spaces is enclosed in single or double quotes, a backslash escapes the next character. This is not a command shell: variable substitution, file name patterns and redirections do not work. | empty by default |
| Env names (comma-separated), Env values (comma-separated) | The names and the values of the environment variables passed to the application. The lists are filled in parallel: the first name gets the first value, so their lengths must match. The variables are added to the node’s environment, they do not replace it. The separator is a comma, so a value containing a comma cannot be set this way, nor can an empty value. | empty by default |
| Packets per write | On the output only: how many TS packets the node writes in a single operation. Changing it reopens the output, that is, restarts the application. | 1–16, default 16 |

Changing the command or the arguments restarts the application immediately; changing only the environment variables takes effect at the next start of the point — after a pause and a resume. When stopping the point, the node terminates the application at once, without letting it save its state: if that matters, the application must be able to withstand such a termination. An input additionally checks the stream: data that does not look like MPEG-TS stops it with a synchronization error.

## DVB adapter (dvb)

An input of an MPTS stream that receives the whole multiplex from a configured DVB adapter ([Connecting to streams](../../streamer/dvb.md#streamer-dvb-streams)). The type is available only to MPTS streams and only on a node whose build can receive DVB.

### Input

| Field | Purpose | Values |
| --- | --- | --- |
| DVB adapter id | The record number of the configured adapter. A required field; it is entered as a number, without choosing from a list, and a non-existent number comes to light when saving. This is not the number of the device in the system: on the “DVB adapters” screen ([DVB adapters](../monitor.md#webui-dvb-monitor)) the adapters are listed by name, while the record number is visible on the “Pipeline” screen ([Pipeline](../monitor.md#webui-pipeline)) — in the heading “DVB adapter <number>”. | an adapter number |

Several MPTS streams may refer to one adapter; the node does not allow an adapter to be deleted while something refers to it. Individual programs of the received multiplex are extracted by demultiplexer inputs ([Demultiplexer (demuxer)](internal.md#webui-io-demuxer)).
