天天看点

基于ffmpeg的流媒体服务器

os:ubuntu 12.04

ffmpeg:n-47141-g4063bb2

x264:0.133.2334

a3ac64b

目标:

使用ffserver建立流媒体服务器

使用ffmpeg对本地文件流化(x264编码器)

使用ffplay播放

目录 []

<code>1</code>

<code>port 8090 </code><code>#访问端口</code>

<code>2</code>

<code>rtspport 554</code><code>#rtsp端口</code>

<code>3</code>

<code>bindaddress 0.0.0.0</code><code>#服务器地址绑定</code>

<code>4</code>

<code>maxhttpconnections 2000</code><code>#允许的最大连接数</code>

<code>5</code>

<code>maxclients 1000</code><code>#最大的客户数</code>

<code>6</code>

<code>maxbandwidth 10000</code>

<code>7</code>

<code>customlog -</code>

<code>8</code>

<code>9</code>

<code>&lt;feed feed1.ffm&gt;</code>

<code>10</code>

<code>file /tmp/feed1.ffm</code>

<code>11</code>

<code>filemaxsize 1g</code>

<code>12</code>

<code>acl allow 127.0.0.1</code><code>#只允许本地连接</code>

<code>13</code>

<code>&lt;/feed&gt;</code>

<code>14</code>

<code>15</code>

<code>################ asf ################</code>

<code>16</code>

<code>17</code>

<code>&lt;stream</code><code>test</code><code>.asf&gt;</code>

<code>18</code>

<code>feed feed1.ffm</code>

<code>19</code>

<code>format asf</code><code>#流媒体格式</code>

<code>20</code>

<code>videocodec libx264</code><code>#编码格式</code>

<code>21</code>

<code>videoframerate 25</code><code>#桢率</code>

<code>22</code>

<code>videosize 1024x768</code><code>#播放大小</code>

<code>23</code>

<code>videobitrate 2m</code><code>#码率</code>

<code>24</code>

<code>videobuffersize 10000000</code>

<code>25</code>

<code>videogopsize 24</code>

<code>26</code>

<code>startsendonkey</code>

<code>27</code>

<code>preroll 5</code>

<code>28</code>

<code>#使用x264编码时必须有下面的4个参数</code>

<code>29</code>

<code>videoqmin 3</code>

<code>30</code>

<code>videoqmax 31</code>

<code>31</code>

<code>avoptionvideo flags +global_header</code>

<code>32</code>

<code>avoptionaudio flags +global_header</code>

<code>33</code>

<code>noaudio</code>

<code>34</code>

<code>&lt;/stream&gt;</code>

<code>35</code>

<code>36</code>

<code>################ flv ################</code>

<code>37</code>

<code>38</code>

<code>&lt;stream</code><code>test</code><code>.flv&gt;</code>

<code>39</code>

<code>40</code>

<code>41</code>

<code>format flv</code>

<code>42</code>

<code>43</code>

<code>44</code>

<code>#audiobitrate  32 </code>

<code>45</code>

<code>#audiochannels 2</code>

<code>46</code>

<code>#audiosamplerate  44100</code>

<code>47</code>

<code>#avoptionaudio flags +global_header</code>

<code>48</code>

<code>#audiocodec libmp3lame</code>

<code>49</code>

<code>50</code>

<code>#novideo</code>

<code>51</code>

<code>videobitrate  1024</code>

<code>52</code>

<code>videoframerate  40 </code>

<code>53</code>

<code>videosize 1280x720</code>

<code>54</code>

<code>videobuffersize 1000000</code>

<code>55</code>

<code>videocodec libx264</code>

<code>56</code>

<code>57</code>

<code>58</code>

<code>videoqmax 31 </code>

<code>59</code>

<code>60</code>

<code>videobitratetolerance 100</code>

<code>61</code>

<code>videogopsize 12 </code>

<code>62</code>

<code>63</code>

<code>64</code>

<code>avoptionvideo qmin 3</code>

<code>65</code>

<code>avoptionvideo qmax 31</code>

<code>66</code>

<code>#avoptionvideo quality good</code>

<code>67</code>

<code>#avoptionvideo cpu-used 0</code>

<code>68</code>

<code>69</code>

<code>#avoptionvideo keyint_min 25</code>

<code>70</code>

<code>#avoptionvideo qcomp 0.6</code>

<code>71</code>

<code>avoptionvideo qdiff 4</code>

<code>72</code>

<code>#avoptionvideo me_range 16</code>

<code>73</code>

<code>#preroll 15</code>

<code>74</code>

<code>75</code>

<code>76</code>

<code>################ rtsp ################</code>

<code>77</code>

<code>78</code>

<code>&lt;stream live.h264&gt;</code>

<code>79</code>

<code>format rtp</code>

<code>80</code>

<code>81</code>

<code>82</code>

<code>#videoframerate 7</code>

<code>83</code>

<code>videobitrate 300</code>

<code>84</code>

<code>#videosize 480x272</code>

<code>85</code>

<code>videosize 352x288</code>

<code>86</code>

<code>#avpresetvideo default</code>

<code>87</code>

<code>avpresetvideo superfast</code>

<code>88</code>

<code>89</code>

<code>90</code>

<code>pixelformat yuv420p</code>

<code>91</code>

<code>avoptionvideo me_range 4</code>

<code>92</code>

<code>93</code>

<code>avoptionvideo qmin 2</code>

<code>94</code>

<code>avoptionvideo qmax 51</code>

<code>95</code>

<code>96</code>

<code>#multicastaddress 224.124.0.1</code>

<code>97</code>

<code>#multicastport 5000</code>

<code>98</code>

<code>#multicastttl 1</code>

<code>99</code>

<code>100</code>

<code>101</code>

<code>#audiocodec libfaac</code>

<code>102</code>

<code>#audiobitrate 32</code>

<code>103</code>

<code>104</code>

<code>#audiosamplerate 22050</code>

<code>105</code>

<code>106</code>

<code>107</code>

<code>108</code>

<code>################ html ################</code>

<code>109</code>

<code>110</code>

<code>&lt;stream stat.html&gt;</code>

<code>111</code>

<code>format status</code>

<code>112</code>

<code># only allow local people to get the status</code>

<code>113</code>

<code>acl allow localhost</code>

<code>114</code>

<code>acl allow 192.168.0.0 192.168.255.255</code>

<code>115</code>

<code>#faviconurl http://pond1.gladstonefamily.net:8080/favicon.ico</code>

<code>116</code>

<code>117</code>

<code>118</code>

<code># redirect index.html to the appropriate site</code>

<code>119</code>

<code>&lt;redirect index.html&gt;</code>

<code>120</code>

<code>url http://www.ffmpeg.org/</code>

<code>121</code>

<code>&lt;/redirect&gt;</code>

<code>ffserver -d -f ./ffserver.conf</code>

<code>./ffmpeg -i  ./1.mov -vcodec libx264  -qmin 3 -qmax 31 -qdiff 4 -me_range 16 -keyint_min 25 -qcomp 0.6 -b 9000k    http://localhost:8090/feed1.ffm</code>

<code>./ffmpeg -f video4linux2 -i /dev/video0 http://localhost:8090/feed1.ffm</code>

在ffmserver.conf中打开声音:

<code>#noaudio</code>

<code>audiobitrate  128kb</code>

<code>audiochannels 2</code>

<code>audiosamplerate 44100</code>

在输入中加入声音捕获:

<code>ffmpeg  -f v4l2 -i  /dev/video0  -f alsa  -i hw:0,0 http://localhost:8090/feed_tv.ffm</code>

<code>./ffplay  mmsh://localhost:8090/</code><code>test</code><code>.asf</code>

<code>./ffplay  http://localhost:8090/</code><code>test</code><code>.flv</code>

<code>./ffplay  rtsp://localhost:554/live.h264</code>

git: