天天看點

基于ffmpeg的流媒體伺服器

OS:ubuntu 12.04

ffmpeg:N-47141-g4063bb2

x264:0.133.2334 a3ac64b

目标:

使用ffserver建立流媒體伺服器

使用ffmpeg對本地檔案流化(x264編碼器)

使用ffplay播放

<a href="http://lnmcc.net/2013/06/28/%E5%9F%BA%E4%BA%8Effmpeg%E7%9A%84%E6%B5%81%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8/#ffserverconf">1 ffserver.conf配置</a>

<a href="http://lnmcc.net/2013/06/28/%E5%9F%BA%E4%BA%8Effmpeg%E7%9A%84%E6%B5%81%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8/#ffserver">2 啟動ffserver伺服器</a>

<a href="http://lnmcc.net/2013/06/28/%E5%9F%BA%E4%BA%8Effmpeg%E7%9A%84%E6%B5%81%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8/#ffmpeg">3 使用ffmpeg對本地檔案流化</a>

<a href="http://lnmcc.net/2013/06/28/%E5%9F%BA%E4%BA%8Effmpeg%E7%9A%84%E6%B5%81%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8/#i">4 捕捉本地攝像頭資料</a>

<a href="http://lnmcc.net/2013/06/28/%E5%9F%BA%E4%BA%8Effmpeg%E7%9A%84%E6%B5%81%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8/#i-2">5 為流媒體增加聲音</a>

<a href="http://lnmcc.net/2013/06/28/%E5%9F%BA%E4%BA%8Effmpeg%E7%9A%84%E6%B5%81%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8/#ffplay">6 使用ffplay播放</a>

<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>NoAudio</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>