commit
8cddc04f4c
12 changed files with 1556 additions and 0 deletions
@ -0,0 +1,47 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
||||||
|
<head> |
||||||
|
<meta http-equiv="Content-Style-Type" content="text/css" /> |
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> |
||||||
|
<link rel="stylesheet" href="./robodoc.css" type="text/css" /> |
||||||
|
<title>Index</title> |
||||||
|
<!-- Source: ./ --> |
||||||
|
<!-- Generated with ROBODoc Version 4.99.41 (Jul 2 2011) --> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div id="logo"> |
||||||
|
<a name="robo_top_of_doc"></a> |
||||||
|
</div> <!-- logo --> |
||||||
|
<div id="extra"> |
||||||
|
</div> <!-- extra --> |
||||||
|
<div id="navigation"> |
||||||
|
<a class="menuitem" href="./toc_index.html#top">Table of Contents</a> |
||||||
|
<a class="menuitem" href="./robo_sourcefiles.html#top">Sourcefiles</a> |
||||||
|
<a class="menuitem" href="#top">Index</a> |
||||||
|
<a class="menuitem" href="./robo_files.html#top">Files</a> |
||||||
|
<a class="menuitem" href="./robo_functions.html#top">Functions</a> |
||||||
|
<a class="menuitem" href="./tobo_toplevel.html#top">Toplevel</a> |
||||||
|
<a class="menuitem" href="./robo_variables.html#top">Variables</a> |
||||||
|
</div> <!-- navigation --> |
||||||
|
<div id="content"> |
||||||
|
<h1>Index</h1> |
||||||
|
<h2><a href="#A">A</a> - <a href="#B">B</a> - <a href="#C">C</a> - <a href="#D">D</a> - <a href="#E">E</a> - <a href="#F">F</a> - <a href="#G">G</a> - <a href="#H">H</a> - <a href="#I">I</a> - <a href="#J">J</a> - <a href="#K">K</a> - <a href="#L">L</a> - <a href="#M">M</a> - <a href="#N">N</a> - <a href="#O">O</a> - <a href="#P">P</a> - <a href="#Q">Q</a> - <a href="#R">R</a> - <a href="#S">S</a> - <a href="#T">T</a> - <a href="#U">U</a> - <a href="#V">V</a> - <a href="#W">W</a> - <a href="#X">X</a> - <a href="#Y">Y</a> - <a href="#Z">Z</a> - <a href="#0">0</a> - <a href="#1">1</a> - <a href="#2">2</a> - <a href="#3">3</a> - <a href="#4">4</a> - <a href="#5">5</a> - <a href="#6">6</a> - <a href="#7">7</a> - <a href="#8">8</a> - <a href="#9">9</a></h2> |
||||||
|
<h2><a name="C"></a>C</h2><a href="./streamsaver.html#robo5" class="indexitem" >config</a> |
||||||
|
<h2><a name="E"></a>E</h2><a href="./streamsaver.html#robo2" class="indexitem" >enableOption</a> |
||||||
|
<h2><a name="M"></a>M</h2><a href="./streamsaver.html#robo7" class="indexitem" >main</a> |
||||||
|
<a href="./streamsaver.html#robo4" class="indexitem" >makeCMD</a> |
||||||
|
<h2><a name="R"></a>R</h2><a href="./streamsaver.html#robo1" class="indexitem" >readOption</a> |
||||||
|
<a href="./streamsaver.html#robo3" class="indexitem" >readXML</a> |
||||||
|
<h2><a name="S"></a>S</h2><a href="./streamsaver.html#robo6" class="indexitem" >SETTINGS</a> |
||||||
|
<a href="./streamsaver.html#robo0" class="indexitem" >streamsaver</a> |
||||||
|
<a href="./streamsaver.html#robo_top_of_doc" class="indexitem" >streamsaver</a> |
||||||
|
<h2><a href="#A">A</a> - <a href="#B">B</a> - <a href="#C">C</a> - <a href="#D">D</a> - <a href="#E">E</a> - <a href="#F">F</a> - <a href="#G">G</a> - <a href="#H">H</a> - <a href="#I">I</a> - <a href="#J">J</a> - <a href="#K">K</a> - <a href="#L">L</a> - <a href="#M">M</a> - <a href="#N">N</a> - <a href="#O">O</a> - <a href="#P">P</a> - <a href="#Q">Q</a> - <a href="#R">R</a> - <a href="#S">S</a> - <a href="#T">T</a> - <a href="#U">U</a> - <a href="#V">V</a> - <a href="#W">W</a> - <a href="#X">X</a> - <a href="#Y">Y</a> - <a href="#Z">Z</a> - <a href="#0">0</a> - <a href="#1">1</a> - <a href="#2">2</a> - <a href="#3">3</a> - <a href="#4">4</a> - <a href="#5">5</a> - <a href="#6">6</a> - <a href="#7">7</a> - <a href="#8">8</a> - <a href="#9">9</a></h2> |
||||||
|
</div> <!-- content --> |
||||||
|
<div id="footer"> |
||||||
|
<p>Generated from ./ with <a href="http://www.xs4all.nl/~rfsber/Robo/robodoc.html">ROBODoc</a> V4.99.41 on Tue Jul 12 2016 14:44:43 |
||||||
|
</p> |
||||||
|
</div> <!-- footer --> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,39 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
||||||
|
<head> |
||||||
|
<meta http-equiv="Content-Style-Type" content="text/css" /> |
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> |
||||||
|
<link rel="stylesheet" href="./robodoc.css" type="text/css" /> |
||||||
|
<title>Files</title> |
||||||
|
<!-- Source: ./ --> |
||||||
|
<!-- Generated with ROBODoc Version 4.99.41 (Jul 2 2011) --> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div id="logo"> |
||||||
|
<a name="robo_top_of_doc"></a> |
||||||
|
</div> <!-- logo --> |
||||||
|
<div id="extra"> |
||||||
|
</div> <!-- extra --> |
||||||
|
<div id="navigation"> |
||||||
|
<a class="menuitem" href="./toc_index.html#top">Table of Contents</a> |
||||||
|
<a class="menuitem" href="./robo_sourcefiles.html#top">Sourcefiles</a> |
||||||
|
<a class="menuitem" href="./masterindex.html#top">Index</a> |
||||||
|
<a class="menuitem" href="#top">Files</a> |
||||||
|
<a class="menuitem" href="./robo_functions.html#top">Functions</a> |
||||||
|
<a class="menuitem" href="./tobo_toplevel.html#top">Toplevel</a> |
||||||
|
<a class="menuitem" href="./robo_variables.html#top">Variables</a> |
||||||
|
</div> <!-- navigation --> |
||||||
|
<div id="content"> |
||||||
|
<h1>Files</h1> |
||||||
|
<h2><a href="#A">A</a> - <a href="#B">B</a> - <a href="#C">C</a> - <a href="#D">D</a> - <a href="#E">E</a> - <a href="#F">F</a> - <a href="#G">G</a> - <a href="#H">H</a> - <a href="#I">I</a> - <a href="#J">J</a> - <a href="#K">K</a> - <a href="#L">L</a> - <a href="#M">M</a> - <a href="#N">N</a> - <a href="#O">O</a> - <a href="#P">P</a> - <a href="#Q">Q</a> - <a href="#R">R</a> - <a href="#S">S</a> - <a href="#T">T</a> - <a href="#U">U</a> - <a href="#V">V</a> - <a href="#W">W</a> - <a href="#X">X</a> - <a href="#Y">Y</a> - <a href="#Z">Z</a> - <a href="#0">0</a> - <a href="#1">1</a> - <a href="#2">2</a> - <a href="#3">3</a> - <a href="#4">4</a> - <a href="#5">5</a> - <a href="#6">6</a> - <a href="#7">7</a> - <a href="#8">8</a> - <a href="#9">9</a></h2> |
||||||
|
<h2><a name="S"></a>S</h2><a href="./streamsaver.html#robo0" class="indexitem" >streamsaver</a> |
||||||
|
<h2><a href="#A">A</a> - <a href="#B">B</a> - <a href="#C">C</a> - <a href="#D">D</a> - <a href="#E">E</a> - <a href="#F">F</a> - <a href="#G">G</a> - <a href="#H">H</a> - <a href="#I">I</a> - <a href="#J">J</a> - <a href="#K">K</a> - <a href="#L">L</a> - <a href="#M">M</a> - <a href="#N">N</a> - <a href="#O">O</a> - <a href="#P">P</a> - <a href="#Q">Q</a> - <a href="#R">R</a> - <a href="#S">S</a> - <a href="#T">T</a> - <a href="#U">U</a> - <a href="#V">V</a> - <a href="#W">W</a> - <a href="#X">X</a> - <a href="#Y">Y</a> - <a href="#Z">Z</a> - <a href="#0">0</a> - <a href="#1">1</a> - <a href="#2">2</a> - <a href="#3">3</a> - <a href="#4">4</a> - <a href="#5">5</a> - <a href="#6">6</a> - <a href="#7">7</a> - <a href="#8">8</a> - <a href="#9">9</a></h2> |
||||||
|
</div> <!-- content --> |
||||||
|
<div id="footer"> |
||||||
|
<p>Generated from ./ with <a href="http://www.xs4all.nl/~rfsber/Robo/robodoc.html">ROBODoc</a> V4.99.41 on Tue Jul 12 2016 14:44:43 |
||||||
|
</p> |
||||||
|
</div> <!-- footer --> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,42 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
||||||
|
<head> |
||||||
|
<meta http-equiv="Content-Style-Type" content="text/css" /> |
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> |
||||||
|
<link rel="stylesheet" href="./robodoc.css" type="text/css" /> |
||||||
|
<title>Functions</title> |
||||||
|
<!-- Source: ./ --> |
||||||
|
<!-- Generated with ROBODoc Version 4.99.41 (Jul 2 2011) --> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div id="logo"> |
||||||
|
<a name="robo_top_of_doc"></a> |
||||||
|
</div> <!-- logo --> |
||||||
|
<div id="extra"> |
||||||
|
</div> <!-- extra --> |
||||||
|
<div id="navigation"> |
||||||
|
<a class="menuitem" href="./toc_index.html#top">Table of Contents</a> |
||||||
|
<a class="menuitem" href="./robo_sourcefiles.html#top">Sourcefiles</a> |
||||||
|
<a class="menuitem" href="./masterindex.html#top">Index</a> |
||||||
|
<a class="menuitem" href="./robo_files.html#top">Files</a> |
||||||
|
<a class="menuitem" href="#top">Functions</a> |
||||||
|
<a class="menuitem" href="./tobo_toplevel.html#top">Toplevel</a> |
||||||
|
<a class="menuitem" href="./robo_variables.html#top">Variables</a> |
||||||
|
</div> <!-- navigation --> |
||||||
|
<div id="content"> |
||||||
|
<h1>Functions</h1> |
||||||
|
<h2><a href="#A">A</a> - <a href="#B">B</a> - <a href="#C">C</a> - <a href="#D">D</a> - <a href="#E">E</a> - <a href="#F">F</a> - <a href="#G">G</a> - <a href="#H">H</a> - <a href="#I">I</a> - <a href="#J">J</a> - <a href="#K">K</a> - <a href="#L">L</a> - <a href="#M">M</a> - <a href="#N">N</a> - <a href="#O">O</a> - <a href="#P">P</a> - <a href="#Q">Q</a> - <a href="#R">R</a> - <a href="#S">S</a> - <a href="#T">T</a> - <a href="#U">U</a> - <a href="#V">V</a> - <a href="#W">W</a> - <a href="#X">X</a> - <a href="#Y">Y</a> - <a href="#Z">Z</a> - <a href="#0">0</a> - <a href="#1">1</a> - <a href="#2">2</a> - <a href="#3">3</a> - <a href="#4">4</a> - <a href="#5">5</a> - <a href="#6">6</a> - <a href="#7">7</a> - <a href="#8">8</a> - <a href="#9">9</a></h2> |
||||||
|
<h2><a name="E"></a>E</h2><a href="./streamsaver.html#robo2" class="indexitem" >enableOption</a> |
||||||
|
<h2><a name="M"></a>M</h2><a href="./streamsaver.html#robo4" class="indexitem" >makeCMD</a> |
||||||
|
<h2><a name="R"></a>R</h2><a href="./streamsaver.html#robo1" class="indexitem" >readOption</a> |
||||||
|
<a href="./streamsaver.html#robo3" class="indexitem" >readXML</a> |
||||||
|
<h2><a href="#A">A</a> - <a href="#B">B</a> - <a href="#C">C</a> - <a href="#D">D</a> - <a href="#E">E</a> - <a href="#F">F</a> - <a href="#G">G</a> - <a href="#H">H</a> - <a href="#I">I</a> - <a href="#J">J</a> - <a href="#K">K</a> - <a href="#L">L</a> - <a href="#M">M</a> - <a href="#N">N</a> - <a href="#O">O</a> - <a href="#P">P</a> - <a href="#Q">Q</a> - <a href="#R">R</a> - <a href="#S">S</a> - <a href="#T">T</a> - <a href="#U">U</a> - <a href="#V">V</a> - <a href="#W">W</a> - <a href="#X">X</a> - <a href="#Y">Y</a> - <a href="#Z">Z</a> - <a href="#0">0</a> - <a href="#1">1</a> - <a href="#2">2</a> - <a href="#3">3</a> - <a href="#4">4</a> - <a href="#5">5</a> - <a href="#6">6</a> - <a href="#7">7</a> - <a href="#8">8</a> - <a href="#9">9</a></h2> |
||||||
|
</div> <!-- content --> |
||||||
|
<div id="footer"> |
||||||
|
<p>Generated from ./ with <a href="http://www.xs4all.nl/~rfsber/Robo/robodoc.html">ROBODoc</a> V4.99.41 on Tue Jul 12 2016 14:44:43 |
||||||
|
</p> |
||||||
|
</div> <!-- footer --> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,44 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
||||||
|
<head> |
||||||
|
<meta http-equiv="Content-Style-Type" content="text/css" /> |
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> |
||||||
|
<link rel="stylesheet" href="./robodoc.css" type="text/css" /> |
||||||
|
<title>Sourcefiles</title> |
||||||
|
<!-- Source: ./ --> |
||||||
|
<!-- Generated with ROBODoc Version 4.99.41 (Jul 2 2011) --> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div id="logo"> |
||||||
|
<a name="robo_top_of_doc"></a> |
||||||
|
</div> <!-- logo --> |
||||||
|
<div id="extra"> |
||||||
|
</div> <!-- extra --> |
||||||
|
<div id="navigation"> |
||||||
|
<a class="menuitem" href="./toc_index.html#top">Table of Contents</a> |
||||||
|
<a class="menuitem" href="#top">Sourcefiles</a> |
||||||
|
<a class="menuitem" href="./masterindex.html#top">Index</a> |
||||||
|
<a class="menuitem" href="./robo_files.html#top">Files</a> |
||||||
|
<a class="menuitem" href="./robo_functions.html#top">Functions</a> |
||||||
|
<a class="menuitem" href="./tobo_toplevel.html#top">Toplevel</a> |
||||||
|
<a class="menuitem" href="./robo_variables.html#top">Variables</a> |
||||||
|
</div> <!-- navigation --> |
||||||
|
<div id="content"> |
||||||
|
<ul> |
||||||
|
<li> |
||||||
|
./<ul> |
||||||
|
<li> |
||||||
|
<a href="./streamsaver.html#robo_top_of_doc"><tt> |
||||||
|
streamsaver</tt></a></li> |
||||||
|
</ul> |
||||||
|
</li> |
||||||
|
</ul> |
||||||
|
</div> <!-- content --> |
||||||
|
<div id="footer"> |
||||||
|
<p>Generated from ./ with <a href="http://www.xs4all.nl/~rfsber/Robo/robodoc.html">ROBODoc</a> V4.99.41 on Tue Jul 12 2016 14:44:43 |
||||||
|
</p> |
||||||
|
</div> <!-- footer --> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,40 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
||||||
|
<head> |
||||||
|
<meta http-equiv="Content-Style-Type" content="text/css" /> |
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> |
||||||
|
<link rel="stylesheet" href="./robodoc.css" type="text/css" /> |
||||||
|
<title>Variables</title> |
||||||
|
<!-- Source: ./ --> |
||||||
|
<!-- Generated with ROBODoc Version 4.99.41 (Jul 2 2011) --> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div id="logo"> |
||||||
|
<a name="robo_top_of_doc"></a> |
||||||
|
</div> <!-- logo --> |
||||||
|
<div id="extra"> |
||||||
|
</div> <!-- extra --> |
||||||
|
<div id="navigation"> |
||||||
|
<a class="menuitem" href="./toc_index.html#top">Table of Contents</a> |
||||||
|
<a class="menuitem" href="./robo_sourcefiles.html#top">Sourcefiles</a> |
||||||
|
<a class="menuitem" href="./masterindex.html#top">Index</a> |
||||||
|
<a class="menuitem" href="./robo_files.html#top">Files</a> |
||||||
|
<a class="menuitem" href="./robo_functions.html#top">Functions</a> |
||||||
|
<a class="menuitem" href="./tobo_toplevel.html#top">Toplevel</a> |
||||||
|
<a class="menuitem" href="#top">Variables</a> |
||||||
|
</div> <!-- navigation --> |
||||||
|
<div id="content"> |
||||||
|
<h1>Variables</h1> |
||||||
|
<h2><a href="#A">A</a> - <a href="#B">B</a> - <a href="#C">C</a> - <a href="#D">D</a> - <a href="#E">E</a> - <a href="#F">F</a> - <a href="#G">G</a> - <a href="#H">H</a> - <a href="#I">I</a> - <a href="#J">J</a> - <a href="#K">K</a> - <a href="#L">L</a> - <a href="#M">M</a> - <a href="#N">N</a> - <a href="#O">O</a> - <a href="#P">P</a> - <a href="#Q">Q</a> - <a href="#R">R</a> - <a href="#S">S</a> - <a href="#T">T</a> - <a href="#U">U</a> - <a href="#V">V</a> - <a href="#W">W</a> - <a href="#X">X</a> - <a href="#Y">Y</a> - <a href="#Z">Z</a> - <a href="#0">0</a> - <a href="#1">1</a> - <a href="#2">2</a> - <a href="#3">3</a> - <a href="#4">4</a> - <a href="#5">5</a> - <a href="#6">6</a> - <a href="#7">7</a> - <a href="#8">8</a> - <a href="#9">9</a></h2> |
||||||
|
<h2><a name="C"></a>C</h2><a href="./streamsaver.html#robo5" class="indexitem" >config</a> |
||||||
|
<h2><a name="S"></a>S</h2><a href="./streamsaver.html#robo6" class="indexitem" >SETTINGS</a> |
||||||
|
<h2><a href="#A">A</a> - <a href="#B">B</a> - <a href="#C">C</a> - <a href="#D">D</a> - <a href="#E">E</a> - <a href="#F">F</a> - <a href="#G">G</a> - <a href="#H">H</a> - <a href="#I">I</a> - <a href="#J">J</a> - <a href="#K">K</a> - <a href="#L">L</a> - <a href="#M">M</a> - <a href="#N">N</a> - <a href="#O">O</a> - <a href="#P">P</a> - <a href="#Q">Q</a> - <a href="#R">R</a> - <a href="#S">S</a> - <a href="#T">T</a> - <a href="#U">U</a> - <a href="#V">V</a> - <a href="#W">W</a> - <a href="#X">X</a> - <a href="#Y">Y</a> - <a href="#Z">Z</a> - <a href="#0">0</a> - <a href="#1">1</a> - <a href="#2">2</a> - <a href="#3">3</a> - <a href="#4">4</a> - <a href="#5">5</a> - <a href="#6">6</a> - <a href="#7">7</a> - <a href="#8">8</a> - <a href="#9">9</a></h2> |
||||||
|
</div> <!-- content --> |
||||||
|
<div id="footer"> |
||||||
|
<p>Generated from ./ with <a href="http://www.xs4all.nl/~rfsber/Robo/robodoc.html">ROBODoc</a> V4.99.41 on Tue Jul 12 2016 14:44:43 |
||||||
|
</p> |
||||||
|
</div> <!-- footer --> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,302 @@ |
|||||||
|
/****h* ROBODoc/ROBODoc Cascading Style Sheet |
||||||
|
* FUNCTION |
||||||
|
* This is the default cascading style sheet for documentation |
||||||
|
* generated with ROBODoc. |
||||||
|
* You can edit this file to your own liking and then use |
||||||
|
* it with the option |
||||||
|
* --css <filename> |
||||||
|
* |
||||||
|
* This style-sheet defines the following layout |
||||||
|
* +----------------------------------------+ |
||||||
|
* | logo | |
||||||
|
* +----------------------------------------+ |
||||||
|
* | extra | |
||||||
|
* +----------------------------------------+ |
||||||
|
* | | navi- | |
||||||
|
* | | gation | |
||||||
|
* | content | | |
||||||
|
* | | | |
||||||
|
* +----------------------------------------+ |
||||||
|
* | footer | |
||||||
|
* +----------------------------------------+ |
||||||
|
* |
||||||
|
* This style-sheet is based on a style-sheet that was automatically |
||||||
|
* generated with the Strange Banana stylesheet generator. |
||||||
|
* See http://www.strangebanana.com/generator.aspx |
||||||
|
* |
||||||
|
****** |
||||||
|
* $Id: html_generator.c,v 1.94 2008/06/17 11:49:27 gumpu Exp $ |
||||||
|
*/ |
||||||
|
|
||||||
|
body |
||||||
|
{ |
||||||
|
background-color: rgb(255,255,255); |
||||||
|
color: rgb(98,84,55); |
||||||
|
font-family: Arial, serif; |
||||||
|
border-color: rgb(226,199,143); |
||||||
|
} |
||||||
|
|
||||||
|
pre |
||||||
|
{ |
||||||
|
font-family: monospace; |
||||||
|
margin: 15px; |
||||||
|
padding: 5px; |
||||||
|
white-space: pre; |
||||||
|
color: #000; |
||||||
|
} |
||||||
|
|
||||||
|
pre.source |
||||||
|
{ |
||||||
|
background-color: #ffe; |
||||||
|
border: dashed #aa9 1px; |
||||||
|
} |
||||||
|
|
||||||
|
p |
||||||
|
{ |
||||||
|
margin:15px; |
||||||
|
} |
||||||
|
|
||||||
|
p.item_name |
||||||
|
{ |
||||||
|
font-weight: bolder; |
||||||
|
margin:5px; |
||||||
|
font-size: 120%; |
||||||
|
} |
||||||
|
|
||||||
|
#content |
||||||
|
{ |
||||||
|
font-size: 100%; |
||||||
|
color: rgb(0,0,0); |
||||||
|
background-color: rgb(255,255,255); |
||||||
|
border-left-width: 0px; |
||||||
|
border-right-width: 0px; |
||||||
|
border-top-width: 0px; |
||||||
|
border-bottom-width: 0px; |
||||||
|
border-left-style: none; |
||||||
|
border-right-style: none; |
||||||
|
border-top-style: none; |
||||||
|
border-bottom-style: none; |
||||||
|
padding: 40px 31px 14px 17px; |
||||||
|
border-color: rgb(0,0,0); |
||||||
|
text-align: justify; |
||||||
|
} |
||||||
|
|
||||||
|
#navigation |
||||||
|
{ |
||||||
|
background-color: rgb(98,84,55); |
||||||
|
color: rgb(230,221,202); |
||||||
|
font-family: "Times New Roman", serif; |
||||||
|
font-style: normal; |
||||||
|
border-color: rgb(0,0,0); |
||||||
|
} |
||||||
|
|
||||||
|
a.menuitem |
||||||
|
{ |
||||||
|
font-size: 120%; |
||||||
|
background-color: rgb(0,0,0); |
||||||
|
color: rgb(195,165,100); |
||||||
|
font-variant: normal; |
||||||
|
text-transform: none; |
||||||
|
font-weight: normal; |
||||||
|
padding: 1px 8px 3px 1px; |
||||||
|
margin-left: 5px; |
||||||
|
margin-right: 5px; |
||||||
|
margin-top: 5px; |
||||||
|
margin-bottom: 5px; |
||||||
|
border-color: rgb(159,126,57); |
||||||
|
text-align: right; |
||||||
|
} |
||||||
|
|
||||||
|
#logo, #logo a |
||||||
|
{ |
||||||
|
font-size: 130%; |
||||||
|
background-color: rgb(198,178,135); |
||||||
|
color: rgb(98,84,55); |
||||||
|
font-family: Georgia, serif; |
||||||
|
font-style: normal; |
||||||
|
font-variant: normal; |
||||||
|
text-transform: none; |
||||||
|
font-weight: bold; |
||||||
|
padding: 20px 18px 20px 18px; |
||||||
|
border-color: rgb(255,255,255); |
||||||
|
text-align: right; |
||||||
|
} |
||||||
|
|
||||||
|
#extra, #extra a |
||||||
|
{ |
||||||
|
font-size: 128%; |
||||||
|
background-color: rgb(0,0,0); |
||||||
|
color: rgb(230,221,202); |
||||||
|
font-style: normal; |
||||||
|
font-variant: normal; |
||||||
|
text-transform: none; |
||||||
|
font-weight: normal; |
||||||
|
border-left-width: 0px; |
||||||
|
border-right-width: 0px; |
||||||
|
border-top-width: 0px; |
||||||
|
border-bottom-width: 0px; |
||||||
|
border-left-style: none; |
||||||
|
border-right-style: none; |
||||||
|
border-top-style: none; |
||||||
|
border-bottom-style: none; |
||||||
|
padding: 12px 12px 12px 12px; |
||||||
|
border-color: rgb(195,165,100); |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
#content a |
||||||
|
{ |
||||||
|
color: rgb(159,126,57); |
||||||
|
text-decoration: none; |
||||||
|
} |
||||||
|
|
||||||
|
#content a:hover, #content a:active |
||||||
|
{ |
||||||
|
color: rgb(255,255,255); |
||||||
|
background-color: rgb(159,126,57); |
||||||
|
} |
||||||
|
|
||||||
|
a.indexitem |
||||||
|
{ |
||||||
|
display: block; |
||||||
|
} |
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 |
||||||
|
{ |
||||||
|
background-color: rgb(221,221,221); |
||||||
|
font-family: Arial, serif; |
||||||
|
font-style: normal; |
||||||
|
font-variant: normal; |
||||||
|
text-transform: none; |
||||||
|
font-weight: normal; |
||||||
|
} |
||||||
|
|
||||||
|
h1 |
||||||
|
{ |
||||||
|
font-size: 151%; |
||||||
|
} |
||||||
|
|
||||||
|
h2 |
||||||
|
{ |
||||||
|
font-size: 142%; |
||||||
|
} |
||||||
|
|
||||||
|
h3 |
||||||
|
{ |
||||||
|
font-size: 133%; |
||||||
|
} |
||||||
|
|
||||||
|
h4 |
||||||
|
{ |
||||||
|
font-size: 124%; |
||||||
|
} |
||||||
|
|
||||||
|
h5 |
||||||
|
{ |
||||||
|
font-size: 115%; |
||||||
|
} |
||||||
|
|
||||||
|
h6 |
||||||
|
{ |
||||||
|
font-size: 106%; |
||||||
|
} |
||||||
|
|
||||||
|
#navigation a |
||||||
|
{ |
||||||
|
text-decoration: none; |
||||||
|
} |
||||||
|
|
||||||
|
.menuitem:hover |
||||||
|
{ |
||||||
|
background-color: rgb(195,165,100); |
||||||
|
color: rgb(0,0,0); |
||||||
|
} |
||||||
|
|
||||||
|
#extra a |
||||||
|
{ |
||||||
|
text-decoration: none; |
||||||
|
} |
||||||
|
|
||||||
|
#logo a |
||||||
|
{ |
||||||
|
text-decoration: none; |
||||||
|
} |
||||||
|
|
||||||
|
#extra a:hover |
||||||
|
{ |
||||||
|
} |
||||||
|
|
||||||
|
/* layout */ |
||||||
|
#navigation |
||||||
|
{ |
||||||
|
width: 22%; |
||||||
|
position: relative; |
||||||
|
top: 0; |
||||||
|
right: 0; |
||||||
|
float: right; |
||||||
|
text-align: center; |
||||||
|
margin-left: 10px; |
||||||
|
} |
||||||
|
|
||||||
|
.menuitem {width: auto;} |
||||||
|
#content {width: auto;} |
||||||
|
.menuitem {display: block;} |
||||||
|
|
||||||
|
|
||||||
|
div#footer |
||||||
|
{ |
||||||
|
background-color: rgb(198,178,135); |
||||||
|
color: rgb(98,84,55); |
||||||
|
clear: left; |
||||||
|
width: 100%; |
||||||
|
font-size: 71%; |
||||||
|
} |
||||||
|
|
||||||
|
div#footer a |
||||||
|
{ |
||||||
|
background-color: rgb(198,178,135); |
||||||
|
color: rgb(98,84,55); |
||||||
|
} |
||||||
|
|
||||||
|
div#footer p |
||||||
|
{ |
||||||
|
margin:0; |
||||||
|
padding:5px 10px |
||||||
|
} |
||||||
|
|
||||||
|
span.keyword |
||||||
|
{ |
||||||
|
color: #00F; |
||||||
|
} |
||||||
|
|
||||||
|
span.comment |
||||||
|
{ |
||||||
|
color: #080; |
||||||
|
} |
||||||
|
|
||||||
|
span.quote |
||||||
|
{ |
||||||
|
color: #F00; |
||||||
|
} |
||||||
|
|
||||||
|
span.squote |
||||||
|
{ |
||||||
|
color: #F0F; |
||||||
|
} |
||||||
|
|
||||||
|
span.sign |
||||||
|
{ |
||||||
|
color: #008B8B; |
||||||
|
} |
||||||
|
|
||||||
|
span.line_number |
||||||
|
{ |
||||||
|
color: #808080; |
||||||
|
} |
||||||
|
|
||||||
|
@media print |
||||||
|
{ |
||||||
|
#navigation {display: none;} |
||||||
|
#content {padding: 0px;} |
||||||
|
#content a {text-decoration: underline;} |
||||||
|
} |
@ -0,0 +1,407 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
||||||
|
<head> |
||||||
|
<meta http-equiv="Content-Style-Type" content="text/css" /> |
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> |
||||||
|
<link rel="stylesheet" href="./robodoc.css" type="text/css" /> |
||||||
|
<title>./streamsaver</title> |
||||||
|
<!-- Source: ./streamsaver --> |
||||||
|
<!-- Generated with ROBODoc Version 4.99.41 (Jul 2 2011) --> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div id="logo"> |
||||||
|
<a name="robo_top_of_doc"></a> |
||||||
|
</div> <!-- logo --> |
||||||
|
<div id="navigation"> |
||||||
|
<a class="menuitem" href="./toc_index.html#top">Table of Contents</a> |
||||||
|
<a class="menuitem" href="./robo_sourcefiles.html#top">Sourcefiles</a> |
||||||
|
<a class="menuitem" href="./masterindex.html#top">Index</a> |
||||||
|
<a class="menuitem" href="./robo_files.html#top">Files</a> |
||||||
|
<a class="menuitem" href="./robo_functions.html#top">Functions</a> |
||||||
|
<a class="menuitem" href="./tobo_toplevel.html#top">Toplevel</a> |
||||||
|
<a class="menuitem" href="./robo_variables.html#top">Variables</a> |
||||||
|
</div> <!-- navigation --> |
||||||
|
<div id="content"> |
||||||
|
<hr /> |
||||||
|
<a name="ffmpeg2fstreamsaver"></a> |
||||||
|
<a name="robo0"></a><h2>ffmpeg/streamsaver [ Files ]</h2> |
||||||
|
|
||||||
|
<p>[ <a href="#robo_top_of_doc">Top</a> ] [ <a href="./robo_files.html#robo_top_of_doc">Files</a> ]</p> |
||||||
|
<p class="item_name">NAME</p> |
||||||
|
<pre> <strong>streamsaver</strong> - обработчик аудиопотоков с нарезкой их в файлы и |
||||||
|
ретрансляцией на icecast |
||||||
|
</pre> |
||||||
|
<p class="item_name">VERSION</p> |
||||||
|
<pre> 1.0 |
||||||
|
</pre> |
||||||
|
<p class="item_name">DESCRIPTION</p> |
||||||
|
<p> Сценарий принимает аудиопоток с оборудования, по UDP или TCP, |
||||||
|
фрагментирует его на отрезки заданной длины для последующего хранения и |
||||||
|
анализа, а также ретранслирует поток на сервер радиовещания icecast для |
||||||
|
прослушивания аудио конечным пользователем. |
||||||
|
</p> |
||||||
|
<p class="item_name">USAGE</p> |
||||||
|
<pre> <strong>streamsaver</strong> <файл настроек> |
||||||
|
</pre> |
||||||
|
<p class="item_name">ARGUMENTS</p> |
||||||
|
<ul><li> <файл настроек> - xml-файл с описанием входящего и выходящего потоков и |
||||||
|
правилами фрагментирования записей. |
||||||
|
</li> |
||||||
|
</ul> |
||||||
|
<p></p> |
||||||
|
|
||||||
|
<hr /> |
||||||
|
<a name="streamsaver2freadOption"></a> |
||||||
|
<a name="robo1"></a><h2>streamsaver/readOption [ Functions ]</h2> |
||||||
|
|
||||||
|
<p>[ <a href="#robo_top_of_doc">Top</a> ] [ <a href="#robo0">streamsaver</a> ] [ <a href="./robo_functions.html#robo_top_of_doc">Functions</a> ]</p> |
||||||
|
<p class="item_name">NAME</p> |
||||||
|
<pre> <strong>readOption</strong> - получение значения опции из файла настроек |
||||||
|
</pre> |
||||||
|
<p class="item_name">USAGE</p> |
||||||
|
<pre> <strong>readOption</strong> <опция> <файл> |
||||||
|
</pre> |
||||||
|
<p class="item_name">ARGUMENTS</p> |
||||||
|
<ul><li> опция - имя опции |
||||||
|
</li> |
||||||
|
<li> файл - xml-файл с настройками |
||||||
|
</li> |
||||||
|
</ul> |
||||||
|
<p></p> |
||||||
|
<p class="item_name">RESULT</p> |
||||||
|
<pre> Значение параметра при наличии искомой опции в xml-файле или значение по |
||||||
|
умолчанию, которое задаётся при инициализации переменной <a href="#robo5">config</a>. |
||||||
|
</pre> |
||||||
|
<p class="item_name">SOURCE</p> |
||||||
|
<pre class="source"><span class="line_number">45 </span><strong>readOption</strong><span class="sign">(</span><span class="sign">)</span> <span class="keyword">{</span> |
||||||
|
<span class="line_number">46 </span> cfg<span class="sign">=</span><span class="sign">$</span><span class="sign">(</span><span class="sign">\</span><span class="keyword">grep</span> <span class="sign">-</span>oPm1 <span class="quote">"(?<=<$1>)[^<]+"</span> <span class="quote">"$2"</span><span class="sign">)</span> |
||||||
|
<span class="line_number">47 </span> |
||||||
|
<span class="line_number">48 </span> <span class="keyword">if</span> <span class="sign">[</span> <span class="keyword">!</span> <span class="sign">-</span>z <span class="quote">"$cfg"</span> <span class="sign">]</span><span class="sign">;</span> <span class="keyword">then</span> |
||||||
|
<span class="line_number">49 </span> <a href="#robo5">config</a><span class="sign">[</span><span class="sign">$</span>1<span class="sign">]</span><span class="sign">=</span><span class="sign">$</span>cfg |
||||||
|
<span class="line_number">50 </span> <span class="keyword">fi</span> |
||||||
|
<span class="line_number">51 </span><span class="keyword">}</span> |
||||||
|
</pre> |
||||||
|
|
||||||
|
<hr /> |
||||||
|
<a name="streamsaver2fenableOption"></a> |
||||||
|
<a name="robo2"></a><h2>streamsaver/enableOption [ Functions ]</h2> |
||||||
|
|
||||||
|
<p>[ <a href="#robo_top_of_doc">Top</a> ] [ <a href="#robo0">streamsaver</a> ] [ <a href="./robo_functions.html#robo_top_of_doc">Functions</a> ]</p> |
||||||
|
<p class="item_name">NAME</p> |
||||||
|
<pre> <strong>enableOption</strong> - добавление опции к команде ffmpeg |
||||||
|
</pre> |
||||||
|
<p class="item_name">DESCRIPTION</p> |
||||||
|
<p> Процедура включает опцию, если в конфигурационном файле имеется |
||||||
|
соответствующая настройка. |
||||||
|
</p> |
||||||
|
<p class="item_name">USAGE</p> |
||||||
|
<pre> <strong>enableOption</strong> <опция> |
||||||
|
</pre> |
||||||
|
<p class="item_name">ARGUMENTS</p> |
||||||
|
<ul><li> опция - имя опции из массива настроек <a href="#robo5">config</a>. |
||||||
|
</li> |
||||||
|
</ul> |
||||||
|
<p></p> |
||||||
|
<p class="item_name">SOURCE</p> |
||||||
|
<pre class="source"><span class="line_number">71 </span><strong>enableOption</strong> <span class="sign">(</span><span class="sign">)</span> <span class="keyword">{</span> |
||||||
|
<span class="line_number">72 </span> <span class="keyword">if</span> <span class="sign">[</span> <span class="keyword">!</span> <span class="sign">-</span>z <span class="quote">"${<a href="#robo5">config</a>[$1]}"</span> <span class="sign">]</span><span class="sign">;</span> <span class="keyword">then</span> |
||||||
|
<span class="line_number">73 </span> CMD<span class="sign">+</span><span class="sign">=</span><span class="quote">" $(echo $* | cut -d ' ' -f 2- | sed "</span>s<span class="sign">|</span><span class="sign">%</span><span class="sign">%</span><span class="sign">|</span><span class="sign">\</span><span class="sign">"</span><span class="sign">$</span><span class="sign">{</span><a href="#robo5">config</a><span class="sign">[</span><span class="sign">$</span>1<span class="sign">]</span><span class="keyword">}</span><span class="sign">\</span><span class="sign">"</span><span class="sign">|</span>g<span class="quote">")"</span> |
||||||
|
<span class="line_number">74 </span> <span class="keyword">fi</span> |
||||||
|
<span class="line_number">75 </span><span class="keyword">}</span> |
||||||
|
</pre> |
||||||
|
|
||||||
|
<hr /> |
||||||
|
<a name="streamsaver2freadXML"></a> |
||||||
|
<a name="robo3"></a><h2>streamsaver/readXML [ Functions ]</h2> |
||||||
|
|
||||||
|
<p>[ <a href="#robo_top_of_doc">Top</a> ] [ <a href="#robo0">streamsaver</a> ] [ <a href="./robo_functions.html#robo_top_of_doc">Functions</a> ]</p> |
||||||
|
<p class="item_name">NAME</p> |
||||||
|
<pre> <strong>readXML</strong> - чтение файла настроек |
||||||
|
</pre> |
||||||
|
<p class="item_name">DESCRIPTION</p> |
||||||
|
<p> Получение настроек из xml-файла. |
||||||
|
</p> |
||||||
|
<p class="item_name">USAGE</p> |
||||||
|
<pre> <strong>readXML</strong> <xml> |
||||||
|
</pre> |
||||||
|
<p class="item_name">ARGUMENTS</p> |
||||||
|
<ul><li> xml - файл настроек. |
||||||
|
</li> |
||||||
|
</ul> |
||||||
|
<p></p> |
||||||
|
<p class="item_name">SOURCE</p> |
||||||
|
<pre class="source"><span class="line_number">94 </span><strong>readXML</strong><span class="sign">(</span><span class="sign">)</span> <span class="keyword">{</span> |
||||||
|
<span class="line_number">95 </span> <span class="comment">#Чтение настроек из файла</span> |
||||||
|
<span class="line_number">96 </span> <span class="keyword">for</span> option <span class="keyword">in</span> <span class="sign">$</span><span class="keyword">{</span><span class="sign">!</span><a href="#robo5">config</a><span class="sign">[</span><span class="sign">*</span><span class="sign">]</span><span class="keyword">}</span><span class="sign">;</span> <span class="keyword">{</span> |
||||||
|
<span class="line_number">97 </span> <a href="#robo1">readOption</a> <span class="quote">"$option"</span> <span class="quote">"$1"</span> |
||||||
|
<span class="line_number">98 </span> <span class="keyword">}</span> |
||||||
|
<span class="line_number">99 </span><span class="keyword">}</span> |
||||||
|
</pre> |
||||||
|
|
||||||
|
<hr /> |
||||||
|
<a name="streamsaver2fmakeCMD"></a> |
||||||
|
<a name="robo4"></a><h2>streamsaver/makeCMD [ Functions ]</h2> |
||||||
|
|
||||||
|
<p>[ <a href="#robo_top_of_doc">Top</a> ] [ <a href="#robo0">streamsaver</a> ] [ <a href="./robo_functions.html#robo_top_of_doc">Functions</a> ]</p> |
||||||
|
<p class="item_name">NAME</p> |
||||||
|
<pre> <strong>makeCMD</strong> - создание команды для оцифровки сигнала |
||||||
|
</pre> |
||||||
|
<p class="item_name">DESCRIPTION</p> |
||||||
|
<p> Процедура составляет команду ffmpeg, включая опции, если они заданы в |
||||||
|
конфигурационном файле или указаны значения по умолчанию в массиве |
||||||
|
настроек <a href="#robo5">config</a>. |
||||||
|
</p> |
||||||
|
|
||||||
|
<p> Эталонные настройки ffmpeg |
||||||
|
</p> |
||||||
|
|
||||||
|
<pre> ffmpeg -reconnect 1 \ |
||||||
|
\ |
||||||
|
-i "${<a href="#robo5">config</a>[stream]}" \ |
||||||
|
-legacy_icecast 1 \ |
||||||
|
-content_type audio/mpeg \ |
||||||
|
-ice_name "Имя канала" \ |
||||||
|
-ice_description "Описание канала" \ |
||||||
|
icecast://source:${<a href="#robo5">config</a>[password]}@${<a href="#robo5">config</a>[icecast]}/${<a href="#robo5">config</a>[mountpoint]} \ |
||||||
|
\ |
||||||
|
-segment_list "./files_archive.csv" \ |
||||||
|
-segment_list_entry_prefix "$ARCHIVE_DIR" \ |
||||||
|
-segment_list_type "csv" \ |
||||||
|
-segment_list_flags "live" \ |
||||||
|
-segment_atclocktime 1 \ |
||||||
|
-acodec "$FORMAT" -map 0 -f segment \ |
||||||
|
-segment_time "$ARCHIVE_TIME" \ |
||||||
|
-segment_format "$FORMAT" \ |
||||||
|
-strftime 1 "$ARCHIVE_DIR/$FILE_NAME" |
||||||
|
\ |
||||||
|
-segment_list "./files_slices.csv" \ |
||||||
|
-segment_list_entry_prefix "$ARCHIVE_DIR" \ |
||||||
|
-segment_list_type "csv" \ |
||||||
|
-segment_list_flags "live" \ |
||||||
|
-segment_atclocktime 1 \ |
||||||
|
-acodec "$FORMAT" -map 0 -f segment \ |
||||||
|
-segment_time "$SLICES_TIME" \ |
||||||
|
-segment_format "$FORMAT" \ |
||||||
|
-strftime 1 "$SLICES_DIR/$FILE_NAME" |
||||||
|
</pre> |
||||||
|
<p></p> |
||||||
|
<p class="item_name">RESULT</p> |
||||||
|
<pre> Команда ffmpeg, которую можно передать на выполнение. |
||||||
|
</pre> |
||||||
|
<p class="item_name">SOURCE</p> |
||||||
|
<pre class="source"><span class="line_number">148 </span><strong>makeCMD</strong><span class="sign">(</span><span class="sign">)</span> <span class="keyword">{</span> |
||||||
|
<span class="line_number">149 </span> <span class="comment">#Правило именования файлов</span> |
||||||
|
<span class="line_number">150 </span> FILE_NAME<span class="sign">=</span><span class="quote">"${<a href="#robo5">config</a>[filename_prefix]}-${<a href="#robo5">config</a>[channel_name]}.${<a href="#robo5">config</a>[filename_suffix]}"</span> |
||||||
|
<span class="line_number">151 </span> |
||||||
|
<span class="line_number">152 </span> <span class="comment">#Минимальная команда</span> |
||||||
|
<span class="line_number">153 </span> CMD<span class="sign">=</span><span class="quote">"${<a href="#robo5">config</a>[cmd]} -reconnect 1 -i ${<a href="#robo5">config</a>[stream]} -f mp2"</span> |
||||||
|
<span class="line_number">154 </span> <span class="comment"># " -f ${<a href="#robo5">config</a>[input_format]}"</span> |
||||||
|
<span class="line_number">155 </span> |
||||||
|
<span class="line_number">156 </span> <span class="comment">#КОДИРОВАНИЕ</span> |
||||||
|
<span class="line_number">157 </span> <span class="comment"># <a href="#robo2">enableOption</a> output_format -c %%</span> |
||||||
|
<span class="line_number">158 </span> |
||||||
|
<span class="line_number">159 </span> <span class="comment">#ICECAST</span> |
||||||
|
<span class="line_number">160 </span> <a href="#robo2">enableOption</a> channel_name <span class="sign">\</span> |
||||||
|
<span class="line_number">161 </span> <span class="sign">-</span>legacy_icecast 1 <span class="sign">\</span> |
||||||
|
<span class="line_number">162 </span> <span class="sign">-</span>content_type audio<span class="sign">/</span>mpeg <span class="sign">\</span> |
||||||
|
<span class="line_number">163 </span> <span class="sign">-</span>ice_name <span class="sign">%</span><span class="sign">%</span> |
||||||
|
<span class="line_number">164 </span> |
||||||
|
<span class="line_number">165 </span> <a href="#robo2">enableOption</a> channel_descr <span class="sign">\</span> |
||||||
|
<span class="line_number">166 </span> <span class="sign">-</span>ice_description <span class="sign">%</span><span class="sign">%</span> |
||||||
|
<span class="line_number">167 </span> |
||||||
|
<span class="line_number">168 </span> <a href="#robo2">enableOption</a> icecast <span class="sign">\</span> |
||||||
|
<span class="line_number">169 </span> icecast<span class="sign">:</span><span class="sign">/</span><span class="sign">/</span>source<span class="sign">:</span><span class="sign">$</span><span class="sign">{</span><a href="#robo5">config</a><span class="sign">[</span>password<span class="sign">]</span><span class="keyword">}</span><span class="sign">@</span><span class="sign">$</span><span class="sign">{</span><a href="#robo5">config</a><span class="sign">[</span>icecast<span class="sign">]</span><span class="keyword">}</span><span class="sign">/</span><span class="sign">$</span><span class="sign">{</span><a href="#robo5">config</a><span class="sign">[</span>mountpoint<span class="sign">]</span><span class="keyword">}</span> |
||||||
|
<span class="line_number">170 </span> |
||||||
|
<span class="line_number">171 </span> <span class="comment"># АРХИВ</span> |
||||||
|
<span class="line_number">172 </span> <a href="#robo2">enableOption</a> archive_log <span class="sign">\</span> |
||||||
|
<span class="line_number">173 </span> <span class="sign">-</span>segment_list <span class="sign">%</span><span class="sign">%</span> <span class="sign">\</span> |
||||||
|
<span class="line_number">174 </span> <span class="sign">-</span>segment_list_entry_prefix <span class="quote">"${<a href="#robo5">config</a>[archive_dir]}"</span> <span class="sign">\</span> |
||||||
|
<span class="line_number">175 </span> <span class="sign">-</span>segment_list_type csv <span class="sign">\</span> |
||||||
|
<span class="line_number">176 </span> <span class="sign">-</span>segment_list_flags live |
||||||
|
<span class="line_number">177 </span> |
||||||
|
<span class="line_number">178 </span> <span class="comment"># +СЕГМЕНТИРОВАНИЕ</span> |
||||||
|
<span class="line_number">179 </span> <a href="#robo2">enableOption</a> archive_dir <span class="sign">\</span> |
||||||
|
<span class="line_number">180 </span> <span class="sign">-</span>segment_atclocktime 1 <span class="sign">\</span> |
||||||
|
<span class="line_number">181 </span> <span class="sign">-</span>acodec <span class="quote">"${<a href="#robo5">config</a>[output_format]}"</span> <span class="sign">-</span>map 0 <span class="sign">\</span> |
||||||
|
<span class="line_number">182 </span> <span class="sign">-</span><span class="keyword">fi</span> segment <span class="sign">\</span> |
||||||
|
<span class="line_number">183 </span> <span class="sign">-</span>segment_time <span class="quote">"${<a href="#robo5">config</a>[archive_time]}"</span> <span class="sign">\</span> |
||||||
|
<span class="line_number">184 </span> <span class="sign">-</span>segment_format <span class="quote">"${<a href="#robo5">config</a>[output_format]}"</span> <span class="sign">\</span> |
||||||
|
<span class="line_number">185 </span> <span class="sign">-</span>strftime 1 <span class="quote">"${<a href="#robo5">config</a>[archive_dir]}/$FILE_NAME"</span> |
||||||
|
<span class="line_number">186 </span> |
||||||
|
<span class="line_number">187 </span> <span class="comment"># АНАЛИЗ</span> |
||||||
|
<span class="line_number">188 </span> <a href="#robo2">enableOption</a> slices_log <span class="sign">\</span> |
||||||
|
<span class="line_number">189 </span> <span class="sign">-</span>segment_list <span class="sign">%</span><span class="sign">%</span> <span class="sign">\</span> |
||||||
|
<span class="line_number">190 </span> <span class="sign">-</span>segment_list_entry_prefix <span class="quote">"${<a href="#robo5">config</a>[slices_dir]}"</span> <span class="sign">\</span> |
||||||
|
<span class="line_number">191 </span> <span class="sign">-</span>segment_list_type csv <span class="sign">\</span> |
||||||
|
<span class="line_number">192 </span> <span class="sign">-</span>segment_list_flags live |
||||||
|
<span class="line_number">193 </span> |
||||||
|
<span class="line_number">194 </span> <span class="comment"># +СЕГМЕНТИРОВАНИЕ</span> |
||||||
|
<span class="line_number">195 </span> <a href="#robo2">enableOption</a> slices_dir <span class="sign">\</span> |
||||||
|
<span class="line_number">196 </span> <span class="sign">-</span>segment_atclocktime 1 <span class="sign">\</span> |
||||||
|
<span class="line_number">197 </span> <span class="sign">-</span>acodec <span class="quote">"${<a href="#robo5">config</a>[output_format]}"</span> <span class="sign">-</span>map 0 <span class="sign">\</span> |
||||||
|
<span class="line_number">198 </span> <span class="sign">-</span><span class="keyword">fi</span> segment <span class="sign">\</span> |
||||||
|
<span class="line_number">199 </span> <span class="sign">-</span>segment_time <span class="quote">"${<a href="#robo5">config</a>[slices_time]}"</span> <span class="sign">\</span> |
||||||
|
<span class="line_number">200 </span> <span class="sign">-</span>segment_format <span class="quote">"${<a href="#robo5">config</a>[output_format]}"</span> <span class="sign">\</span> |
||||||
|
<span class="line_number">201 </span> <span class="sign">-</span>strftime 1 <span class="quote">"${<a href="#robo5">config</a>[slices_dir]}/$FILE_NAME"</span> |
||||||
|
<span class="line_number">202 </span> |
||||||
|
<span class="line_number">203 </span> <span class="keyword">echo</span> <span class="quote">"$CMD"</span> |
||||||
|
<span class="line_number">204 </span><span class="keyword">}</span> |
||||||
|
</pre> |
||||||
|
|
||||||
|
<hr /> |
||||||
|
<a name="streamsaver2fconfig"></a> |
||||||
|
<a name="robo5"></a><h2>streamsaver/config [ Variables ]</h2> |
||||||
|
|
||||||
|
<p>[ <a href="#robo_top_of_doc">Top</a> ] [ <a href="#robo0">streamsaver</a> ] [ <a href="./robo_variables.html#robo_top_of_doc">Variables</a> ]</p> |
||||||
|
<p class="item_name">VARIABLE</p> |
||||||
|
<pre> <strong>config</strong> - массив настроек, содержащий значения по-умолчанию. |
||||||
|
Настройки описаны в секции <a href="#robo6">SETTINGS</a>. |
||||||
|
</pre> |
||||||
|
<p class="item_name">USED BY</p> |
||||||
|
<pre> <a href="#robo2">enableOption</a>, <a href="#robo1">readOption</a>, <a href="#robo3">readXML</a>, <a href="#robo4">makeCMD</a> |
||||||
|
</pre> |
||||||
|
<p class="item_name">SOURCE</p> |
||||||
|
<pre class="source"><span class="line_number">220 </span><span class="keyword">typeset</span> <span class="sign">-</span>A <strong>config</strong> |
||||||
|
<span class="line_number">221 </span> |
||||||
|
<span class="line_number">222 </span><strong>config</strong><span class="sign">=</span><span class="sign">(</span> |
||||||
|
<span class="line_number">223 </span> <span class="sign">[</span>stream<span class="sign">]</span><span class="sign">=</span><span class="quote">""</span> |
||||||
|
<span class="line_number">224 </span> <span class="sign">[</span>icecast<span class="sign">]</span><span class="sign">=</span><span class="quote">"http://localhost:8000/"</span> |
||||||
|
<span class="line_number">225 </span> <span class="sign">[</span>password<span class="sign">]</span><span class="sign">=</span><span class="quote">"hackme"</span> |
||||||
|
<span class="line_number">226 </span> <span class="sign">[</span>channel_name<span class="sign">]</span><span class="sign">=</span><span class="quote">""</span> |
||||||
|
<span class="line_number">227 </span> <span class="sign">[</span>channel_descr<span class="sign">]</span><span class="sign">=</span><span class="quote">""</span> |
||||||
|
<span class="line_number">228 </span> <span class="sign">[</span>mountpoint<span class="sign">]</span><span class="sign">=</span><span class="quote">""</span> |
||||||
|
<span class="line_number">229 </span> <span class="sign">[</span>cmd<span class="sign">]</span><span class="sign">=</span><span class="quote">"ffmpeg"</span> |
||||||
|
<span class="line_number">230 </span> <span class="sign">[</span>input_format<span class="sign">]</span><span class="sign">=</span><span class="quote">"mpegts"</span> |
||||||
|
<span class="line_number">231 </span> <span class="sign">[</span>archive_dir<span class="sign">]</span><span class="sign">=</span><span class="quote">""</span> |
||||||
|
<span class="line_number">232 </span> <span class="sign">[</span>archive_time<span class="sign">]</span><span class="sign">=</span><span class="quote">"3600"</span> |
||||||
|
<span class="line_number">233 </span> <span class="sign">[</span>archive_log<span class="sign">]</span><span class="sign">=</span><span class="quote">"/var/log/tuc01_archive.log"</span> |
||||||
|
<span class="line_number">234 </span> <span class="sign">[</span>slices_dir<span class="sign">]</span><span class="sign">=</span><span class="quote">""</span> |
||||||
|
<span class="line_number">235 </span> <span class="sign">[</span>slices_time<span class="sign">]</span><span class="sign">=</span>10 |
||||||
|
<span class="line_number">236 </span> <span class="sign">[</span>slices_log<span class="sign">]</span><span class="sign">=</span><span class="quote">"/var/log/tuc01_slices.log"</span> |
||||||
|
<span class="line_number">237 </span> <span class="sign">[</span>filename_prefix<span class="sign">]</span><span class="sign">=</span><span class="quote">"%Y-%m-%d_%H:%M:%S"</span> |
||||||
|
<span class="line_number">238 </span> <span class="sign">[</span>filename_suffix<span class="sign">]</span><span class="sign">=</span><span class="quote">"mp2"</span> |
||||||
|
<span class="line_number">239 </span> <span class="sign">[</span>output_format<span class="sign">]</span><span class="sign">=</span><span class="quote">"mp2"</span> |
||||||
|
<span class="line_number">240 </span> <span class="sign">[</span>audio_bitrate<span class="sign">]</span><span class="sign">=</span><span class="quote">"256k"</span> |
||||||
|
<span class="line_number">241 </span><span class="sign">)</span> |
||||||
|
</pre> |
||||||
|
|
||||||
|
<hr /> |
||||||
|
<a name="streamsaver2fSETTINGS"></a> |
||||||
|
<a name="robo6"></a><h2>streamsaver/SETTINGS [ Variables ]</h2> |
||||||
|
|
||||||
|
<p>[ <a href="#robo_top_of_doc">Top</a> ] [ <a href="#robo0">streamsaver</a> ] [ <a href="./robo_variables.html#robo_top_of_doc">Variables</a> ]</p> |
||||||
|
<p class="item_name">VARIABLE</p> |
||||||
|
<pre> <strong>SETTINGS</strong> - файл настроек |
||||||
|
</pre> |
||||||
|
<p class="item_name">DESCRIPTION</p> |
||||||
|
<p> Переменная хранит имя файла настроек, который содержит параметры, |
||||||
|
перечисленные в массиве опций <a href="#robo5">config</a>, в формате XML. При отсутствии |
||||||
|
параметра или пустом значении соответствующие флаги а аргументы не |
||||||
|
добавляются в итоговую команду ffmpeg. Таким образом, например, можно |
||||||
|
включать или отключать ведение журнала сохранения аудиозаписей, просто |
||||||
|
указывая или удаляя параметр archive_log. |
||||||
|
</p> |
||||||
|
|
||||||
|
<p> Формат файла настроек следующий: |
||||||
|
</p> |
||||||
|
<pre> <xml> |
||||||
|
<!-- Название канала --> |
||||||
|
<channel_name></channel_name> |
||||||
|
<!-- Описание канала --> |
||||||
|
<channel_descr>Тестовый_канал</channel_descr> |
||||||
|
<!-- Входящий поток --> |
||||||
|
<stream><a href="http://localhost:8000/tuc01</stream>">http://localhost:8000/tuc01</stream></a> |
||||||
|
<!-- Icecast для вывода --> |
||||||
|
<icecast>localhost:8000</icecast> |
||||||
|
<!-- Пароль для доступа к Icecast --> |
||||||
|
<password>hackme</password> |
||||||
|
<!-- Точка подключения канала --> |
||||||
|
<mountpoint>tuc02</mountpoint> |
||||||
|
</pre> |
||||||
|
<p> |
||||||
|
</p> |
||||||
|
<pre> <!-- Команда получения сигнала --> |
||||||
|
<cmd>ffmpeg</cmd> |
||||||
|
</pre> |
||||||
|
<p> |
||||||
|
</p> |
||||||
|
<pre> <!-- Формат входного потока --> |
||||||
|
<input_format>mp2 -map 0:0</input_format> |
||||||
|
</pre> |
||||||
|
<p> |
||||||
|
</p> |
||||||
|
<pre> <!-- Директория для сохранения архивных файлов --> |
||||||
|
<archive_dir>FILES/archive/</archive_dir> |
||||||
|
<!-- Длительность архивных файлов в секундах --> |
||||||
|
<archive_time>3600</archive_time> |
||||||
|
<!-- Файл журнала обработки архивных записей --> |
||||||
|
<archive_log>FILES/archive.log</archive_log> |
||||||
|
</pre> |
||||||
|
<p> |
||||||
|
</p> |
||||||
|
<pre> <!-- Директория для сохранения фрагментов на анализ --> |
||||||
|
<slices_dir>FILES/fragments/</slices_dir> |
||||||
|
<!-- Длительность фрагментов для анализа в секундах --> |
||||||
|
<slices_time>10</slices_time> |
||||||
|
<!-- Файл журнала обработки фрагментов на анализ --> |
||||||
|
<slices_log>FILES/fragments.log</slices_log> |
||||||
|
</pre> |
||||||
|
<p> |
||||||
|
</p> |
||||||
|
<pre> <!-- Префикс имени файла --> |
||||||
|
<filename_prefix>%Y-%m-%d_%H:%M:%S</filename_prefix> |
||||||
|
<!-- Расширение имени файла --> |
||||||
|
<filename_suffix>mp2</filename_suffix> |
||||||
|
</pre> |
||||||
|
<p> |
||||||
|
</p> |
||||||
|
<pre> <!-- Формат аудиофайлов --> |
||||||
|
<output_format>mp2</output_format> |
||||||
|
<!-- Битрейт аудиофайлов --> |
||||||
|
<audio_bitrate>256k</audio_bitrate> |
||||||
|
</xml> |
||||||
|
</pre> |
||||||
|
<p></p> |
||||||
|
<p class="item_name">SOURCE</p> |
||||||
|
<pre class="source"><span class="line_number">305 </span><strong>SETTINGS</strong><span class="sign">=</span><span class="quote">"$1"</span> |
||||||
|
</pre> |
||||||
|
|
||||||
|
<hr /> |
||||||
|
<a name="streamsaver2fmain"></a> |
||||||
|
<a name="robo7"></a><h2>streamsaver/main [ Toplevel ]</h2> |
||||||
|
|
||||||
|
<p>[ <a href="#robo_top_of_doc">Top</a> ] [ <a href="#robo0">streamsaver</a> ] [ <a href="./tobo_toplevel.html#robo_top_of_doc">Toplevel</a> ]</p> |
||||||
|
<p class="item_name">NAME</p> |
||||||
|
<pre> <a href="#robo0">streamsaver</a> |
||||||
|
</pre> |
||||||
|
<p class="item_name">SOURCE</p> |
||||||
|
<pre class="source"><span class="line_number">316 </span><span class="comment">#Проверка на наличие файла настроек</span> |
||||||
|
<span class="line_number">317 </span><span class="keyword">if</span> <span class="sign">[</span> <span class="sign">-</span>z <span class="quote">"$<a href="#robo6">SETTINGS</a>"</span> <span class="sign">]</span><span class="sign">;</span> <span class="keyword">then</span> |
||||||
|
<span class="line_number">318 </span> <span class="keyword">echo</span> <span class="quote">"USAGE: $(basename $0) <settings.xml>"</span> <span class="sign">></span><span class="sign">&</span>2 |
||||||
|
<span class="line_number">319 </span> <span class="keyword">exit</span> 1 |
||||||
|
<span class="line_number">320 </span><span class="keyword">elif</span> <span class="sign">[</span> <span class="keyword">!</span> <span class="sign">-</span>r <span class="quote">"$<a href="#robo6">SETTINGS</a>"</span> <span class="sign">]</span><span class="sign">;</span> <span class="keyword">then</span> |
||||||
|
<span class="line_number">321 </span> <span class="keyword">echo</span> <span class="quote">"Unable open file $1."</span> <span class="sign">></span><span class="sign">&</span>2 |
||||||
|
<span class="line_number">322 </span> <span class="keyword">echo</span> <span class="quote">"USAGE: $(basename $0) <settings.xml>"</span> <span class="sign">></span><span class="sign">&</span>2 |
||||||
|
<span class="line_number">323 </span> <span class="keyword">exit</span> 1 |
||||||
|
<span class="line_number">324 </span><span class="keyword">fi</span> |
||||||
|
<span class="line_number">325 </span> |
||||||
|
<span class="line_number">326 </span><span class="comment">#Чтение настроек</span> |
||||||
|
<span class="line_number">327 </span><a href="#robo3">readXML</a> <span class="quote">"$<a href="#robo6">SETTINGS</a>"</span> |
||||||
|
<span class="line_number">328 </span> |
||||||
|
<span class="line_number">329 </span><span class="comment">#Создание директорий хранения файлов, если требуется</span> |
||||||
|
<span class="line_number">330 </span><span class="keyword">mkdir</span> <span class="sign">-</span>p <span class="sign">$</span><span class="sign">{</span><a href="#robo5">config</a><span class="sign">[</span>archive_dir<span class="sign">]</span><span class="keyword">}</span> |
||||||
|
<span class="line_number">331 </span><span class="keyword">mkdir</span> <span class="sign">-</span>p <span class="sign">$</span><span class="sign">{</span><a href="#robo5">config</a><span class="sign">[</span>slices_dir<span class="sign">]</span><span class="keyword">}</span> |
||||||
|
<span class="line_number">332 </span> |
||||||
|
<span class="line_number">333 </span><span class="comment">#Создание команды оцифровки сигнала</span> |
||||||
|
<span class="line_number">334 </span><a href="#robo4">makeCMD</a> |
||||||
|
</pre> |
||||||
|
|
||||||
|
</div> <!-- content --> |
||||||
|
<div id="footer"> |
||||||
|
<p>Generated from ./streamsaver with <a href="http://www.xs4all.nl/~rfsber/Robo/robodoc.html">ROBODoc</a> V4.99.41 on Tue Jul 12 2016 14:44:43 |
||||||
|
</p> |
||||||
|
</div> <!-- footer --> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,39 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
||||||
|
<head> |
||||||
|
<meta http-equiv="Content-Style-Type" content="text/css" /> |
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> |
||||||
|
<link rel="stylesheet" href="./robodoc.css" type="text/css" /> |
||||||
|
<title>Toplevel</title> |
||||||
|
<!-- Source: ./ --> |
||||||
|
<!-- Generated with ROBODoc Version 4.99.41 (Jul 2 2011) --> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div id="logo"> |
||||||
|
<a name="robo_top_of_doc"></a> |
||||||
|
</div> <!-- logo --> |
||||||
|
<div id="extra"> |
||||||
|
</div> <!-- extra --> |
||||||
|
<div id="navigation"> |
||||||
|
<a class="menuitem" href="./toc_index.html#top">Table of Contents</a> |
||||||
|
<a class="menuitem" href="./robo_sourcefiles.html#top">Sourcefiles</a> |
||||||
|
<a class="menuitem" href="./masterindex.html#top">Index</a> |
||||||
|
<a class="menuitem" href="./robo_files.html#top">Files</a> |
||||||
|
<a class="menuitem" href="./robo_functions.html#top">Functions</a> |
||||||
|
<a class="menuitem" href="#top">Toplevel</a> |
||||||
|
<a class="menuitem" href="./robo_variables.html#top">Variables</a> |
||||||
|
</div> <!-- navigation --> |
||||||
|
<div id="content"> |
||||||
|
<h1>Toplevel</h1> |
||||||
|
<h2><a href="#A">A</a> - <a href="#B">B</a> - <a href="#C">C</a> - <a href="#D">D</a> - <a href="#E">E</a> - <a href="#F">F</a> - <a href="#G">G</a> - <a href="#H">H</a> - <a href="#I">I</a> - <a href="#J">J</a> - <a href="#K">K</a> - <a href="#L">L</a> - <a href="#M">M</a> - <a href="#N">N</a> - <a href="#O">O</a> - <a href="#P">P</a> - <a href="#Q">Q</a> - <a href="#R">R</a> - <a href="#S">S</a> - <a href="#T">T</a> - <a href="#U">U</a> - <a href="#V">V</a> - <a href="#W">W</a> - <a href="#X">X</a> - <a href="#Y">Y</a> - <a href="#Z">Z</a> - <a href="#0">0</a> - <a href="#1">1</a> - <a href="#2">2</a> - <a href="#3">3</a> - <a href="#4">4</a> - <a href="#5">5</a> - <a href="#6">6</a> - <a href="#7">7</a> - <a href="#8">8</a> - <a href="#9">9</a></h2> |
||||||
|
<h2><a name="M"></a>M</h2><a href="./streamsaver.html#robo7" class="indexitem" >main</a> |
||||||
|
<h2><a href="#A">A</a> - <a href="#B">B</a> - <a href="#C">C</a> - <a href="#D">D</a> - <a href="#E">E</a> - <a href="#F">F</a> - <a href="#G">G</a> - <a href="#H">H</a> - <a href="#I">I</a> - <a href="#J">J</a> - <a href="#K">K</a> - <a href="#L">L</a> - <a href="#M">M</a> - <a href="#N">N</a> - <a href="#O">O</a> - <a href="#P">P</a> - <a href="#Q">Q</a> - <a href="#R">R</a> - <a href="#S">S</a> - <a href="#T">T</a> - <a href="#U">U</a> - <a href="#V">V</a> - <a href="#W">W</a> - <a href="#X">X</a> - <a href="#Y">Y</a> - <a href="#Z">Z</a> - <a href="#0">0</a> - <a href="#1">1</a> - <a href="#2">2</a> - <a href="#3">3</a> - <a href="#4">4</a> - <a href="#5">5</a> - <a href="#6">6</a> - <a href="#7">7</a> - <a href="#8">8</a> - <a href="#9">9</a></h2> |
||||||
|
</div> <!-- content --> |
||||||
|
<div id="footer"> |
||||||
|
<p>Generated from ./ with <a href="http://www.xs4all.nl/~rfsber/Robo/robodoc.html">ROBODoc</a> V4.99.41 on Tue Jul 12 2016 14:44:43 |
||||||
|
</p> |
||||||
|
</div> <!-- footer --> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,48 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" |
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
||||||
|
<head> |
||||||
|
<meta http-equiv="Content-Style-Type" content="text/css" /> |
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> |
||||||
|
<link rel="stylesheet" href="./robodoc.css" type="text/css" /> |
||||||
|
<title>Table of Contents</title> |
||||||
|
<!-- Source: ./ --> |
||||||
|
<!-- Generated with ROBODoc Version 4.99.41 (Jul 2 2011) --> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div id="logo"> |
||||||
|
<a name="robo_top_of_doc"></a> |
||||||
|
</div> <!-- logo --> |
||||||
|
<div id="extra"> |
||||||
|
</div> <!-- extra --> |
||||||
|
<div id="navigation"> |
||||||
|
<a class="menuitem" href="#top">Table of Contents</a> |
||||||
|
<a class="menuitem" href="./robo_sourcefiles.html#top">Sourcefiles</a> |
||||||
|
<a class="menuitem" href="./masterindex.html#top">Index</a> |
||||||
|
<a class="menuitem" href="./robo_files.html#top">Files</a> |
||||||
|
<a class="menuitem" href="./robo_functions.html#top">Functions</a> |
||||||
|
<a class="menuitem" href="./tobo_toplevel.html#top">Toplevel</a> |
||||||
|
<a class="menuitem" href="./robo_variables.html#top">Variables</a> |
||||||
|
</div> <!-- navigation --> |
||||||
|
<div id="content"> |
||||||
|
<h3>TABLE OF CONTENTS</h3> |
||||||
|
<ul> |
||||||
|
<li>1. <a href="./streamsaver.html#robo0">ffmpeg/streamsaver</a></li> |
||||||
|
<ul> |
||||||
|
<li>1.1. <a href="./streamsaver.html#robo1">streamsaver/readOption</a></li> |
||||||
|
<li>1.2. <a href="./streamsaver.html#robo2">streamsaver/enableOption</a></li> |
||||||
|
<li>1.3. <a href="./streamsaver.html#robo3">streamsaver/readXML</a></li> |
||||||
|
<li>1.4. <a href="./streamsaver.html#robo4">streamsaver/makeCMD</a></li> |
||||||
|
<li>1.5. <a href="./streamsaver.html#robo5">streamsaver/config</a></li> |
||||||
|
<li>1.6. <a href="./streamsaver.html#robo6">streamsaver/SETTINGS</a></li> |
||||||
|
<li>1.7. <a href="./streamsaver.html#robo7">streamsaver/main</a></li> |
||||||
|
</ul> |
||||||
|
</ul> |
||||||
|
</div> <!-- content --> |
||||||
|
<div id="footer"> |
||||||
|
<p>Generated from ./ with <a href="http://www.xs4all.nl/~rfsber/Robo/robodoc.html">ROBODoc</a> V4.99.41 on Tue Jul 12 2016 14:44:43 |
||||||
|
</p> |
||||||
|
</div> <!-- footer --> |
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,166 @@ |
|||||||
|
items: |
||||||
|
# |
||||||
|
# CUSTOM |
||||||
|
# |
||||||
|
DATA |
||||||
|
DEFAULT VALUE |
||||||
|
GUI |
||||||
|
INIT VALUE |
||||||
|
NAMESPACE |
||||||
|
PACKAGES |
||||||
|
RESOURCE |
||||||
|
STRUCTURE |
||||||
|
USED GLOBAL VARIABLES |
||||||
|
USED VARIABLES |
||||||
|
USER HELP |
||||||
|
VARIABLE |
||||||
|
VARIABLES |
||||||
|
VERSION |
||||||
|
# |
||||||
|
# DEFAULT |
||||||
|
# |
||||||
|
ARGUMENTS |
||||||
|
ATTRIBUTES |
||||||
|
AUTHOR |
||||||
|
BUGS |
||||||
|
CHILDREN |
||||||
|
COMMANDS |
||||||
|
COPYRIGHT |
||||||
|
CREATION DATE |
||||||
|
DERIVED BY |
||||||
|
DERIVED FROM |
||||||
|
DESCRIPTION |
||||||
|
DIAGNOSTICS |
||||||
|
ERRORS |
||||||
|
EXAMPLE |
||||||
|
FUNCTION |
||||||
|
HISTORY |
||||||
|
IDEAS |
||||||
|
INPUTS |
||||||
|
METHODS |
||||||
|
MODIFICATION HISTORY |
||||||
|
NAME |
||||||
|
NEW ATTRIBUTES |
||||||
|
NEW METHODS |
||||||
|
NOTES |
||||||
|
OPTIONS |
||||||
|
OUTPUT |
||||||
|
PARAMETERS |
||||||
|
PARENTS |
||||||
|
PORTABILITY |
||||||
|
PURPOSE |
||||||
|
RESULT |
||||||
|
RETURN VALUE |
||||||
|
SEE ALSO |
||||||
|
SIDE EFFECTS |
||||||
|
SOURCE |
||||||
|
SWITCHES |
||||||
|
SYNOPSIS |
||||||
|
TAGS |
||||||
|
TODO |
||||||
|
USAGE |
||||||
|
USED BY |
||||||
|
USES |
||||||
|
WARNINGS |
||||||
|
ignore items: |
||||||
|
item order: |
||||||
|
FUNCTION |
||||||
|
SYNOPSIS |
||||||
|
INPUTS |
||||||
|
source items: |
||||||
|
SOURCE |
||||||
|
DATA |
||||||
|
preformatted items: |
||||||
|
INPUTS |
||||||
|
format items: |
||||||
|
PORTABILITY |
||||||
|
FUNCTION |
||||||
|
DESCRIPTION |
||||||
|
ARGUMENTS |
||||||
|
PACKAGES |
||||||
|
USED GLOBAL VARIABLES |
||||||
|
USED VARIABLES |
||||||
|
NOTES |
||||||
|
VARIABLES |
||||||
|
NAMESPACE |
||||||
|
BUGS |
||||||
|
TODO |
||||||
|
options: |
||||||
|
--src . |
||||||
|
--doc ./doc |
||||||
|
--html |
||||||
|
--multidoc |
||||||
|
--charset utf-8 |
||||||
|
--nosort |
||||||
|
--sections |
||||||
|
--source_line_numbers |
||||||
|
--index |
||||||
|
--tabsize 8 |
||||||
|
--syntaxcolors_enable quotes,squotes,line_comments,block_comments,keywords,non_alpha |
||||||
|
headertypes: |
||||||
|
F Files robo_files |
||||||
|
a Aliases robo_aliases |
||||||
|
I Interpretators robo_interps |
||||||
|
p Packages robo_packages |
||||||
|
G "Global variables" robo_globals |
||||||
|
n Namespaces robo_namespaces |
||||||
|
r Resources robo_resources |
||||||
|
c "Control flow structures" robo_control_structures |
||||||
|
t Toplevel tobo_toplevel |
||||||
|
ignore files: |
||||||
|
README |
||||||
|
CVS |
||||||
|
robodoc.rc |
||||||
|
config |
||||||
|
*.xml |
||||||
|
*.bak |
||||||
|
*.git |
||||||
|
*~ |
||||||
|
accept files: |
||||||
|
streamsaver |
||||||
|
header markers: |
||||||
|
#**** |
||||||
|
remark markers: |
||||||
|
# |
||||||
|
end markers: |
||||||
|
#**** |
||||||
|
header separate characters: |
||||||
|
, |
||||||
|
header ignore characters: |
||||||
|
[ |
||||||
|
] |
||||||
|
# |
||||||
|
remark begin markers: |
||||||
|
remark end markers: |
||||||
|
source line comments: |
||||||
|
# |
||||||
|
keywords: |
||||||
|
if |
||||||
|
then |
||||||
|
else |
||||||
|
elif |
||||||
|
fi |
||||||
|
case |
||||||
|
esac |
||||||
|
for |
||||||
|
select |
||||||
|
while |
||||||
|
until |
||||||
|
do |
||||||
|
done |
||||||
|
in |
||||||
|
function |
||||||
|
time |
||||||
|
{ |
||||||
|
} |
||||||
|
! |
||||||
|
[[ |
||||||
|
]] |
||||||
|
coproc |
||||||
|
echo |
||||||
|
ffmpeg |
||||||
|
mkdir |
||||||
|
grep |
||||||
|
exit |
||||||
|
typeset |
||||||
|
|
@ -0,0 +1,45 @@ |
|||||||
|
<xml> |
||||||
|
<!-- Название канала --> |
||||||
|
<channel_name>RT</channel_name> |
||||||
|
<!-- Описание канала --> |
||||||
|
<channel_descr>Тестовый_канал_RT</channel_descr> |
||||||
|
<!-- Входящий поток --> |
||||||
|
<stream>http://localhost:8000/tuc01</stream> |
||||||
|
<!-- Icecast для вывода --> |
||||||
|
<icecast>localhost:8000</icecast> |
||||||
|
<!-- Пароль для доступа к Icecast --> |
||||||
|
<password>hackme</password> |
||||||
|
<!-- Точка подключения канала --> |
||||||
|
<mountpoint>rt</mountpoint> |
||||||
|
|
||||||
|
<!-- Команда получения сигнала --> |
||||||
|
<cmd>ffmpeg</cmd> |
||||||
|
|
||||||
|
<!-- Формат входного потока --> |
||||||
|
<input_format>mp2 -map 0:0</input_format> |
||||||
|
|
||||||
|
<!-- Директория для сохранения архивных файлов --> |
||||||
|
<archive_dir>FILES/archive/</archive_dir> |
||||||
|
<!-- Длительность архивных файлов в секундах --> |
||||||
|
<archive_time>3600</archive_time> |
||||||
|
<!-- Файл журнала обработки архивных записей --> |
||||||
|
<archive_log>FILES/archive.log</archive_log> |
||||||
|
|
||||||
|
<!-- Директория для сохранения фрагментов на анализ --> |
||||||
|
<slices_dir>FILES/fragments/</slices_dir> |
||||||
|
<!-- Длительность фрагментов для анализа в секундах --> |
||||||
|
<slices_time>10</slices_time> |
||||||
|
<!-- Файл журнала обработки фрагментов на анализ --> |
||||||
|
<slices_log>FILES/fragments.log</slices_log> |
||||||
|
|
||||||
|
<!-- Префикс имени файла --> |
||||||
|
<filename_prefix>%Y-%m-%d_%H:%M:%S</filename_prefix> |
||||||
|
<!-- Расширение имени файла --> |
||||||
|
<filename_suffix>mp2</filename_suffix> |
||||||
|
|
||||||
|
<!-- Формат аудиофайлов --> |
||||||
|
<output_format>mp2</output_format> |
||||||
|
<!-- Битрейт аудиофайлов --> |
||||||
|
<audio_bitrate>256k</audio_bitrate> |
||||||
|
</xml> |
||||||
|
|
@ -0,0 +1,337 @@ |
|||||||
|
#!/bin/bash |
||||||
|
|
||||||
|
#****F* ffmpeg/streamsaver **************************************************** |
||||||
|
# |
||||||
|
# NAME |
||||||
|
# streamsaver - обработчик аудиопотоков с нарезкой их в файлы и |
||||||
|
# ретрансляцией на icecast |
||||||
|
# |
||||||
|
# VERSION |
||||||
|
# 1.0 |
||||||
|
# |
||||||
|
# DESCRIPTION |
||||||
|
# Сценарий принимает аудиопоток с оборудования, по UDP или TCP, |
||||||
|
# фрагментирует его на отрезки заданной длины для последующего хранения и |
||||||
|
# анализа, а также ретранслирует поток на сервер радиовещания icecast для |
||||||
|
# прослушивания аудио конечным пользователем. |
||||||
|
# |
||||||
|
# USAGE |
||||||
|
# streamsaver <файл настроек> |
||||||
|
# |
||||||
|
# ARGUMENTS |
||||||
|
# * <файл настроек> - xml-файл с описанием входящего и выходящего потоков и |
||||||
|
# правилами фрагментирования записей. |
||||||
|
# |
||||||
|
#****************************************************************************** |
||||||
|
|
||||||
|
#****f* streamsaver/readOption |
||||||
|
# |
||||||
|
# NAME |
||||||
|
# readOption - получение значения опции из файла настроек |
||||||
|
# |
||||||
|
# USAGE |
||||||
|
# readOption <опция> <файл> |
||||||
|
# |
||||||
|
# ARGUMENTS |
||||||
|
# * опция - имя опции |
||||||
|
# * файл - xml-файл с настройками |
||||||
|
# |
||||||
|
# RESULT |
||||||
|
# Значение параметра при наличии искомой опции в xml-файле или значение по |
||||||
|
# умолчанию, которое задаётся при инициализации переменной config. |
||||||
|
# |
||||||
|
# SOURCE |
||||||
|
# |
||||||
|
readOption() { |
||||||
|
cfg=$(\grep -oPm1 "(?<=<$1>)[^<]+" "$2") |
||||||
|
|
||||||
|
if [ ! -z "$cfg" ]; then |
||||||
|
config[$1]=$cfg |
||||||
|
fi |
||||||
|
} |
||||||
|
#***** |
||||||
|
|
||||||
|
#****f* streamsaver/enableOption |
||||||
|
# |
||||||
|
# NAME |
||||||
|
# enableOption - добавление опции к команде ffmpeg |
||||||
|
# |
||||||
|
# DESCRIPTION |
||||||
|
# Процедура включает опцию, если в конфигурационном файле имеется |
||||||
|
# соответствующая настройка. |
||||||
|
# |
||||||
|
# USAGE |
||||||
|
# enableOption <опция> |
||||||
|
# |
||||||
|
# ARGUMENTS |
||||||
|
# * опция - имя опции из массива настроек config. |
||||||
|
# |
||||||
|
# SOURCE |
||||||
|
# |
||||||
|
enableOption () { |
||||||
|
if [ ! -z "${config[$1]}" ]; then |
||||||
|
CMD+=" $(echo $* | cut -d ' ' -f 2- | sed "s|%%|\"${config[$1]}\"|g")" |
||||||
|
fi |
||||||
|
} |
||||||
|
#***** |
||||||
|
|
||||||
|
#****f* streamsaver/readXML |
||||||
|
# |
||||||
|
# NAME |
||||||
|
# readXML - чтение файла настроек |
||||||
|
# |
||||||
|
# DESCRIPTION |
||||||
|
# Получение настроек из xml-файла. |
||||||
|
# |
||||||
|
# USAGE |
||||||
|
# readXML <xml> |
||||||
|
# |
||||||
|
# ARGUMENTS |
||||||
|
# * xml - файл настроек. |
||||||
|
# |
||||||
|
# SOURCE |
||||||
|
# |
||||||
|
readXML() { |
||||||
|
#Чтение настроек из файла |
||||||
|
for option in ${!config[*]}; { |
||||||
|
readOption "$option" "$1" |
||||||
|
} |
||||||
|
} |
||||||
|
#***** |
||||||
|
|
||||||
|
#****f* streamsaver/makeCMD |
||||||
|
# |
||||||
|
# NAME |
||||||
|
# makeCMD - создание команды для оцифровки сигнала |
||||||
|
# |
||||||
|
# DESCRIPTION |
||||||
|
# Процедура составляет команду ffmpeg, включая опции, если они заданы в |
||||||
|
# конфигурационном файле или указаны значения по умолчанию в массиве |
||||||
|
# настроек config. |
||||||
|
# |
||||||
|
# Эталонные настройки ffmpeg |
||||||
|
# |
||||||
|
# ffmpeg -reconnect 1 \ |
||||||
|
# \ |
||||||
|
# -i "${config[stream]}" \ |
||||||
|
# -legacy_icecast 1 \ |
||||||
|
# -content_type audio/mpeg \ |
||||||
|
# -ice_name "Имя канала" \ |
||||||
|
# -ice_description "Описание канала" \ |
||||||
|
# icecast://source:${config[password]}@${config[icecast]}/${config[mountpoint]} \ |
||||||
|
# \ |
||||||
|
# -segment_list "./files_archive.csv" \ |
||||||
|
# -segment_list_entry_prefix "$ARCHIVE_DIR" \ |
||||||
|
# -segment_list_type "csv" \ |
||||||
|
# -segment_list_flags "live" \ |
||||||
|
# -segment_atclocktime 1 \ |
||||||
|
# -acodec "$FORMAT" -map 0 -f segment \ |
||||||
|
# -segment_time "$ARCHIVE_TIME" \ |
||||||
|
# -segment_format "$FORMAT" \ |
||||||
|
# -strftime 1 "$ARCHIVE_DIR/$FILE_NAME" |
||||||
|
# \ |
||||||
|
# -segment_list "./files_slices.csv" \ |
||||||
|
# -segment_list_entry_prefix "$ARCHIVE_DIR" \ |
||||||
|
# -segment_list_type "csv" \ |
||||||
|
# -segment_list_flags "live" \ |
||||||
|
# -segment_atclocktime 1 \ |
||||||
|
# -acodec "$FORMAT" -map 0 -f segment \ |
||||||
|
# -segment_time "$SLICES_TIME" \ |
||||||
|
# -segment_format "$FORMAT" \ |
||||||
|
# -strftime 1 "$SLICES_DIR/$FILE_NAME" |
||||||
|
# |
||||||
|
# RESULT |
||||||
|
# Команда ffmpeg, которую можно передать на выполнение. |
||||||
|
# |
||||||
|
# SOURCE |
||||||
|
# |
||||||
|
makeCMD() { |
||||||
|
#Правило именования файлов |
||||||
|
FILE_NAME="${config[filename_prefix]}-${config[channel_name]}.${config[filename_suffix]}" |
||||||
|
|
||||||
|
#Минимальная команда |
||||||
|
CMD="${config[cmd]} -reconnect 1 -i ${config[stream]} -f mp2" |
||||||
|
# " -f ${config[input_format]}" |
||||||
|
|
||||||
|
#КОДИРОВАНИЕ |
||||||
|
# enableOption output_format -c %% |
||||||
|
|
||||||
|
#ICECAST |
||||||
|
enableOption channel_name \ |
||||||
|
-legacy_icecast 1 \ |
||||||
|
-content_type audio/mpeg \ |
||||||
|
-ice_name %% |
||||||
|
|
||||||
|
enableOption channel_descr \ |
||||||
|
-ice_description %% |
||||||
|
|
||||||
|
enableOption icecast \ |
||||||
|
icecast://source:${config[password]}@${config[icecast]}/${config[mountpoint]} |
||||||
|
|
||||||
|
# АРХИВ |
||||||
|
enableOption archive_log \ |
||||||
|
-segment_list %% \ |
||||||
|
-segment_list_entry_prefix "${config[archive_dir]}" \ |
||||||
|
-segment_list_type csv \ |
||||||
|
-segment_list_flags live |
||||||
|
|
||||||
|
# +СЕГМЕНТИРОВАНИЕ |
||||||
|
enableOption archive_dir \ |
||||||
|
-segment_atclocktime 1 \ |
||||||
|
-acodec "${config[output_format]}" -map 0 \ |
||||||
|
-f segment \ |
||||||
|
-segment_time "${config[archive_time]}" \ |
||||||
|
-segment_format "${config[output_format]}" \ |
||||||
|
-strftime 1 "${config[archive_dir]}/$FILE_NAME" |
||||||
|
|
||||||
|
# АНАЛИЗ |
||||||
|
enableOption slices_log \ |
||||||
|
-segment_list %% \ |
||||||
|
-segment_list_entry_prefix "${config[slices_dir]}" \ |
||||||
|
-segment_list_type csv \ |
||||||
|
-segment_list_flags live |
||||||
|
|
||||||
|
# +СЕГМЕНТИРОВАНИЕ |
||||||
|
enableOption slices_dir \ |
||||||
|
-segment_atclocktime 1 \ |
||||||
|
-acodec "${config[output_format]}" -map 0 \ |
||||||
|
-f segment \ |
||||||
|
-segment_time "${config[slices_time]}" \ |
||||||
|
-segment_format "${config[output_format]}" \ |
||||||
|
-strftime 1 "${config[slices_dir]}/$FILE_NAME" |
||||||
|
|
||||||
|
echo "$CMD" |
||||||
|
} |
||||||
|
#***** |
||||||
|
|
||||||
|
################################################################################ |
||||||
|
|
||||||
|
#****v* streamsaver/config |
||||||
|
# |
||||||
|
# VARIABLE |
||||||
|
# config - массив настроек, содержащий значения по-умолчанию. |
||||||
|
# Настройки описаны в секции SETTINGS. |
||||||
|
# |
||||||
|
# USED BY |
||||||
|
# enableOption, readOption, readXML, makeCMD |
||||||
|
# |
||||||
|
# SOURCE |
||||||
|
# |
||||||
|
typeset -A config |
||||||
|
|
||||||
|
config=( |
||||||
|
[stream]="" |
||||||
|
[icecast]="http://localhost:8000/" |
||||||
|
[password]="hackme" |
||||||
|
[channel_name]="" |
||||||
|
[channel_descr]="" |
||||||
|
[mountpoint]="" |
||||||
|
[cmd]="ffmpeg" |
||||||
|
[input_format]="mpegts" |
||||||
|
[archive_dir]="" |
||||||
|
[archive_time]="3600" |
||||||
|
[archive_log]="/var/log/tuc01_archive.log" |
||||||
|
[slices_dir]="" |
||||||
|
[slices_time]=10 |
||||||
|
[slices_log]="/var/log/tuc01_slices.log" |
||||||
|
[filename_prefix]="%Y-%m-%d_%H:%M:%S" |
||||||
|
[filename_suffix]="mp2" |
||||||
|
[output_format]="mp2" |
||||||
|
[audio_bitrate]="256k" |
||||||
|
) |
||||||
|
#***** |
||||||
|
|
||||||
|
#****v* streamsaver/SETTINGS |
||||||
|
# |
||||||
|
# VARIABLE |
||||||
|
# SETTINGS - файл настроек |
||||||
|
# |
||||||
|
# DESCRIPTION |
||||||
|
# Переменная хранит имя файла настроек, который содержит параметры, |
||||||
|
# перечисленные в массиве опций config, в формате XML. При отсутствии |
||||||
|
# параметра или пустом значении соответствующие флаги а аргументы не |
||||||
|
# добавляются в итоговую команду ffmpeg. Таким образом, например, можно |
||||||
|
# включать или отключать ведение журнала сохранения аудиозаписей, просто |
||||||
|
# указывая или удаляя параметр archive_log. |
||||||
|
# |
||||||
|
# Формат файла настроек следующий: |
||||||
|
# <xml> |
||||||
|
# <!-- Название канала --> |
||||||
|
# <channel_name></channel_name> |
||||||
|
# <!-- Описание канала --> |
||||||
|
# <channel_descr>Тестовый_канал</channel_descr> |
||||||
|
# <!-- Входящий поток --> |
||||||
|
# <stream>http://localhost:8000/tuc01</stream> |
||||||
|
# <!-- Icecast для вывода --> |
||||||
|
# <icecast>localhost:8000</icecast> |
||||||
|
# <!-- Пароль для доступа к Icecast --> |
||||||
|
# <password>hackme</password> |
||||||
|
# <!-- Точка подключения канала --> |
||||||
|
# <mountpoint>tuc02</mountpoint> |
||||||
|
# |
||||||
|
# <!-- Команда получения сигнала --> |
||||||
|
# <cmd>ffmpeg</cmd> |
||||||
|
# |
||||||
|
# <!-- Формат входного потока --> |
||||||
|
# <input_format>mp2 -map 0:0</input_format> |
||||||
|
# |
||||||
|
# <!-- Директория для сохранения архивных файлов --> |
||||||
|
# <archive_dir>FILES/archive/</archive_dir> |
||||||
|
# <!-- Длительность архивных файлов в секундах --> |
||||||
|
# <archive_time>3600</archive_time> |
||||||
|
# <!-- Файл журнала обработки архивных записей --> |
||||||
|
# <archive_log>FILES/archive.log</archive_log> |
||||||
|
# |
||||||
|
# <!-- Директория для сохранения фрагментов на анализ --> |
||||||
|
# <slices_dir>FILES/fragments/</slices_dir> |
||||||
|
# <!-- Длительность фрагментов для анализа в секундах --> |
||||||
|
# <slices_time>10</slices_time> |
||||||
|
# <!-- Файл журнала обработки фрагментов на анализ --> |
||||||
|
# <slices_log>FILES/fragments.log</slices_log> |
||||||
|
# |
||||||
|
# <!-- Префикс имени файла --> |
||||||
|
# <filename_prefix>%Y-%m-%d_%H:%M:%S</filename_prefix> |
||||||
|
# <!-- Расширение имени файла --> |
||||||
|
# <filename_suffix>mp2</filename_suffix> |
||||||
|
# |
||||||
|
# <!-- Формат аудиофайлов --> |
||||||
|
# <output_format>mp2</output_format> |
||||||
|
# <!-- Битрейт аудиофайлов --> |
||||||
|
# <audio_bitrate>256k</audio_bitrate> |
||||||
|
# </xml> |
||||||
|
# |
||||||
|
# SOURCE |
||||||
|
# |
||||||
|
SETTINGS="$1" |
||||||
|
#***** |
||||||
|
|
||||||
|
#****t* streamsaver/main |
||||||
|
# |
||||||
|
# NAME |
||||||
|
# streamsaver |
||||||
|
# |
||||||
|
# SOURCE |
||||||
|
# |
||||||
|
|
||||||
|
#Проверка на наличие файла настроек |
||||||
|
if [ -z "$SETTINGS" ]; then |
||||||
|
echo "USAGE: $(basename $0) <settings.xml>" >&2 |
||||||
|
exit 1 |
||||||
|
elif [ ! -r "$SETTINGS" ]; then |
||||||
|
echo "Unable open file $1." >&2 |
||||||
|
echo "USAGE: $(basename $0) <settings.xml>" >&2 |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
|
||||||
|
#Чтение настроек |
||||||
|
readXML "$SETTINGS" |
||||||
|
|
||||||
|
#Создание директорий хранения файлов, если требуется |
||||||
|
mkdir -p ${config[archive_dir]} |
||||||
|
mkdir -p ${config[slices_dir]} |
||||||
|
|
||||||
|
#Создание команды оцифровки сигнала |
||||||
|
makeCMD |
||||||
|
|
||||||
|
#***** |
||||||
|
|
Loading…
Reference in new issue