aud22_18.yaml 17.6 KB
Newer Older
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
1
- en: StreamWriter Basic Usage
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
2
  id: totrans-0
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
3 4 5 6
  prefs:
  - PREF_H1
  type: TYPE_NORMAL
- en: 原文:[https://pytorch.org/audio/stable/tutorials/streamwriter_basic_tutorial.html](https://pytorch.org/audio/stable/tutorials/streamwriter_basic_tutorial.html)
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
7
  id: totrans-1
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
8 9 10 11
  prefs:
  - PREF_BQ
  type: TYPE_NORMAL
- en: Note
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
12
  id: totrans-2
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
13 14 15 16
  prefs: []
  type: TYPE_NORMAL
- en: Click [here](#sphx-glr-download-tutorials-streamwriter-basic-tutorial-py) to
    download the full example code
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
17
  id: totrans-3
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
18 19 20
  prefs: []
  type: TYPE_NORMAL
- en: '**Author**: [Moto Hira](mailto:moto%40meta.com)'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
21
  id: totrans-4
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
22 23 24 25 26
  prefs: []
  type: TYPE_NORMAL
- en: This tutorial shows how to use [`torchaudio.io.StreamWriter`](../generated/torchaudio.io.StreamWriter.html#torchaudio.io.StreamWriter
    "torchaudio.io.StreamWriter") to encode and save audio/video data into various
    formats/destinations.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
27
  id: totrans-5
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
28 29 30
  prefs: []
  type: TYPE_NORMAL
- en: Note
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
31
  id: totrans-6
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
32 33 34 35
  prefs: []
  type: TYPE_NORMAL
- en: This tutorial requires FFmpeg libraries. Please refer to [FFmpeg dependency](../installation.html#ffmpeg-dependency)
    for the detail.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
36
  id: totrans-7
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
37 38 39
  prefs: []
  type: TYPE_NORMAL
- en: Warning
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
40
  id: totrans-8
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
41 42 43 44 45
  prefs: []
  type: TYPE_NORMAL
- en: TorchAudio dynamically loads compatible FFmpeg libraries installed on the system.
    The types of supported formats (media format, encoder, encoder options, etc) depend
    on the libraries.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
46
  id: totrans-9
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
47 48 49
  prefs: []
  type: TYPE_NORMAL
- en: To check the available muxers and encoders, you can use the following command
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
50
  id: totrans-10
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
51 52 53
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE0]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
54
  id: totrans-11
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
55 56
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
57
  zh: '[PRE0]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
58
- en: Preparation[](#preparation "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
59
  id: totrans-12
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
60 61 62 63
  prefs:
  - PREF_H2
  type: TYPE_NORMAL
- en: '[PRE1]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
64
  id: totrans-13
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
65 66
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
67
  zh: '[PRE1]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
68
- en: '[PRE2]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
69
  id: totrans-14
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
70 71
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
72
  zh: '[PRE2]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
73
- en: '[PRE3]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
74
  id: totrans-15
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
75 76
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
77
  zh: '[PRE3]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
78
- en: The basic usage[](#the-basic-usage "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
79
  id: totrans-16
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
80 81 82 83 84
  prefs:
  - PREF_H2
  type: TYPE_NORMAL
- en: To save Tensor data into media formats with StreamWriter, there are three necessary
    steps
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
85
  id: totrans-17
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
86 87 88
  prefs: []
  type: TYPE_NORMAL
- en: Specify the output
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
89
  id: totrans-18
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
90 91 92 93
  prefs:
  - PREF_OL
  type: TYPE_NORMAL
- en: Configure streams
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
94
  id: totrans-19
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
95 96 97 98
  prefs:
  - PREF_OL
  type: TYPE_NORMAL
- en: Write data
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
99
  id: totrans-20
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
100 101 102 103
  prefs:
  - PREF_OL
  type: TYPE_NORMAL
- en: The following code illustrates how to save audio data as WAV file.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
104
  id: totrans-21
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
105 106 107
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE4]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
108
  id: totrans-22
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
109 110
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
111
  zh: '[PRE4]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
112
- en: '[PRE5]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
113
  id: totrans-23
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
114 115
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
116
  zh: '[PRE5]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
117
- en: '[PRE6]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
118
  id: totrans-24
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
119 120
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
121
  zh: '[PRE6]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
122
- en: '[PRE7]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
123
  id: totrans-25
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
124 125
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
126 127 128
  zh: '[PRE7]'
- en: null
  id: totrans-26
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
129 130 131
  prefs: []
  type: TYPE_NORMAL
- en: Your browser does not support the audio element.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
132
  id: totrans-27
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
133 134 135
  prefs: []
  type: TYPE_NORMAL
- en: Now we look into each step in more detail.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
136
  id: totrans-28
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
137 138
  prefs: []
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
139
- en: Write destination[](#write-destination "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
140
  id: totrans-29
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
141 142 143 144
  prefs:
  - PREF_H2
  type: TYPE_NORMAL
- en: StreamWriter supports different types of write destinations
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
145
  id: totrans-30
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
146 147 148
  prefs: []
  type: TYPE_NORMAL
- en: Local files
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
149
  id: totrans-31
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
150 151 152 153
  prefs:
  - PREF_OL
  type: TYPE_NORMAL
- en: File-like objects
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
154
  id: totrans-32
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
155 156 157 158
  prefs:
  - PREF_OL
  type: TYPE_NORMAL
- en: Streaming protocols (such as RTMP and UDP)
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
159
  id: totrans-33
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
160 161 162 163
  prefs:
  - PREF_OL
  type: TYPE_NORMAL
- en: Media devices (speakers and video players) †
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
164
  id: totrans-34
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
165 166 167 168
  prefs:
  - PREF_OL
  type: TYPE_NORMAL
- en: † For media devices, please refer to [StreamWriter Advanced Usages](./streamwriter_advanced.html).
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
169
  id: totrans-35
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
170 171
  prefs: []
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
172
- en: Local files[](#local-files "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
173
  id: totrans-36
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
174 175 176 177
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: StreamWriter supports saving media to local files.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
178
  id: totrans-37
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
179 180 181
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE8]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
182
  id: totrans-38
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
183 184
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
185
  zh: '[PRE8]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
186
- en: This works for still images and videos as well.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
187
  id: totrans-39
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
188 189 190
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE9]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
191
  id: totrans-40
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
192 193
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
194
  zh: '[PRE9]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
195
- en: File-like objects[](#file-like-objects "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
196
  id: totrans-41
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
197 198 199 200 201 202
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: You can also pass a file-lie object. A file-like object must implement `write`
    method conforming to [`io.RawIOBase.write`](https://docs.python.org/3/library/io.html#io.RawIOBase.write
    "(in Python v3.12)").
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
203
  id: totrans-42
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
204 205 206
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE10]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
207
  id: totrans-43
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
208 209
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
210
  zh: '[PRE10]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
211
- en: '[PRE11]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
212
  id: totrans-44
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
213 214
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
215
  zh: '[PRE11]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
216
- en: Streaming protocols[](#streaming-protocols "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
217
  id: totrans-45
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
218 219 220 221
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: You can stream the media with streaming protocols
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
222
  id: totrans-46
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
223 224 225
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE12]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
226
  id: totrans-47
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
227 228
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
229
  zh: '[PRE12]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
230
- en: Configuring output streams[](#configuring-output-streams "Permalink to this
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
231
    heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
232
  id: totrans-48
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
233 234 235 236 237 238 239
  prefs:
  - PREF_H2
  type: TYPE_NORMAL
- en: Once the destination is specified, the next step is to configure the streams.
    For typical audio and still image cases, only one stream is required, but for
    video with audio, at least two streams (one for audio and the other for video)
    need to be configured.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
240
  id: totrans-49
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
241 242
  prefs: []
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
243
- en: Audio Stream[](#audio-stream "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
244
  id: totrans-50
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
245 246 247 248
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: An audio stream can be added with `add_audio_stream()` method.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
249
  id: totrans-51
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
250 251 252 253
  prefs: []
  type: TYPE_NORMAL
- en: For writing regular audio files, at minimum `sample_rate` and `num_channels`
    are required.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
254
  id: totrans-52
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
255 256 257
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE13]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
258
  id: totrans-53
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
259 260
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
261
  zh: '[PRE13]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
262 263 264 265
- en: By default, audio streams expect the input waveform tensors to be `torch.float32`
    type. If the above case, the data will be encoded into the detault encoding format
    of WAV format, which is 16-bit signed integer Linear PCM. StreamWriter converts
    the sample format internally.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
266
  id: totrans-54
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
267 268 269 270
  prefs: []
  type: TYPE_NORMAL
- en: If the encoder supports multiple sample formats and you want to change the encoder
    sample format, you can use `encoder_format` option.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
271
  id: totrans-55
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
272 273 274 275 276
  prefs: []
  type: TYPE_NORMAL
- en: In the following example, the StreamWriter expects the data type of the input
    waveform Tensor to be `torch.float32`, but it will convert the sample to 16-bit
    signed integer when encoding.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
277
  id: totrans-56
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
278 279 280
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE14]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
281
  id: totrans-57
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
282 283
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
284
  zh: '[PRE14]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
285 286
- en: If the data type of your waveform Tensor is something other than `torch.float32`,
    you can provide `format` option to change the expected data type.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
287
  id: totrans-58
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
288 289 290 291
  prefs: []
  type: TYPE_NORMAL
- en: The following example configures StreamWriter to expect Tensor of `torch.int16`
    type.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
292
  id: totrans-59
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
293 294 295
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE15]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
296
  id: totrans-60
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
297 298
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
299
  zh: '[PRE15]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
300 301
- en: The following figure illustrates how `format` and `encoder_format` options work
    for audio streams.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
302
  id: totrans-61
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
303 304 305
  prefs: []
  type: TYPE_NORMAL
- en: '![https://download.pytorch.org/torchaudio/tutorial-assets/streamwriter-format-audio.png](../Images/cc11e30ca877aed22f85b963e3d21750.png)'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
306
  id: totrans-62
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
307 308
  prefs: []
  type: TYPE_IMG
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
309
- en: Video Stream[](#video-stream "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
310
  id: totrans-63
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
311 312 313 314
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: To add a still image or a video stream, you can use `add_video_stream()` method.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
315
  id: totrans-64
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
316 317 318
  prefs: []
  type: TYPE_NORMAL
- en: At minimum, `frame_rate`, `height` and `width` are required.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
319
  id: totrans-65
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
320 321 322
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE16]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
323
  id: totrans-66
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
324 325
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
326
  zh: '[PRE16]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
327
- en: For still images, please use `frame_rate=1`.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
328
  id: totrans-67
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
329 330 331
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE17]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
332
  id: totrans-68
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
333 334
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
335
  zh: '[PRE17]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
336 337
- en: Similar to the audio stream, you can provide `format` and `encoder_format` option
    to controll the format of input data and encoding.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
338
  id: totrans-69
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
339 340 341
  prefs: []
  type: TYPE_NORMAL
- en: The following example encodes video data in YUV422 format.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
342
  id: totrans-70
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
343 344 345
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE18]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
346
  id: totrans-71
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
347 348
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
349
  zh: '[PRE18]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
350 351 352 353
- en: YUV formats are commonly used in video encoding. Many YUV formats are composed
    of chroma channel of different plane size than that of luma channel. This makes
    it difficult to directly express it as `torch.Tensor` type. Therefore, StreamWriter
    will automatically convert the input video Tensor into the target format.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
354
  id: totrans-72
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
355 356 357 358
  prefs: []
  type: TYPE_NORMAL
- en: StreamWriter expects the input image tensor to be 4-D (time, channel, height,
    width) and `torch.uint8` type.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
359
  id: totrans-73
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
360 361 362 363 364
  prefs: []
  type: TYPE_NORMAL
- en: The default color channel is RGB. That is three color channels corresponding
    red, green and blue. If your input has different color channel, such as BGR and
    YUV, you can specify it with `format` option.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
365
  id: totrans-74
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
366 367 368
  prefs: []
  type: TYPE_NORMAL
- en: The following example specifies BGR format.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
369
  id: totrans-75
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
370 371 372
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE19]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
373
  id: totrans-76
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
374 375
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
376
  zh: '[PRE19]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
377 378
- en: The following figure illustrates how `format` and `encoder_format` options work
    for video streams.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
379
  id: totrans-77
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
380 381 382
  prefs: []
  type: TYPE_NORMAL
- en: '![https://download.pytorch.org/torchaudio/tutorial-assets/streamwriter-format-video.png](../Images/dae3b96285e227e70b2ff53781bc191c.png)'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
383
  id: totrans-78
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
384 385
  prefs: []
  type: TYPE_IMG
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
386
- en: Write data[](#write-data "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
387
  id: totrans-79
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
388 389 390 391 392
  prefs:
  - PREF_H2
  type: TYPE_NORMAL
- en: Once streams are configured, the next step is to open the output location and
    start writing data.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
393
  id: totrans-80
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
394 395 396 397
  prefs: []
  type: TYPE_NORMAL
- en: Use `open()` method to open the destination, and then write data with `write_audio_chunk()`
    and/or `write_video_chunk()`.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
398
  id: totrans-81
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
399 400 401 402
  prefs: []
  type: TYPE_NORMAL
- en: Audio tensors are expected to have the shape of (time, channels), and video/image
    tensors are expected to have the shape of (time, channels, height, width).
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
403
  id: totrans-82
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
404 405 406 407
  prefs: []
  type: TYPE_NORMAL
- en: Channels, height and width must match the configuration of the corresponding
    stream, specified with `"format"` option.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
408
  id: totrans-83
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
409 410 411 412
  prefs: []
  type: TYPE_NORMAL
- en: Tensor representing a still image must have only one frame in time dimension,
    but audio and video tensors can have arbitral number of frames in time dimension.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
413
  id: totrans-84
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
414 415 416
  prefs: []
  type: TYPE_NORMAL
- en: The following code snippet illustrates this;
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
417
  id: totrans-85
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
418 419
  prefs: []
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
420
- en: Ex) Audio[](#ex-audio "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
421
  id: totrans-86
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
422 423 424 425
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: '[PRE20]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
426
  id: totrans-87
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
427 428
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
429
  zh: '[PRE20]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
430
- en: Ex) Image[](#ex-image "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
431
  id: totrans-88
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
432 433 434 435
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: '[PRE21]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
436
  id: totrans-89
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
437 438
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
439
  zh: '[PRE21]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
440
- en: Ex) Video without audio[](#ex-video-without-audio "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
441
  id: totrans-90
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
442 443 444 445
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: '[PRE22]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
446
  id: totrans-91
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
447 448
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
449
  zh: '[PRE22]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
450
- en: Ex) Video with audio[](#ex-video-with-audio "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
451
  id: totrans-92
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
452 453 454 455
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: To write video with audio, separate streams have to be configured.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
456
  id: totrans-93
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
457 458 459
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE23]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
460
  id: totrans-94
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
461 462
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
463
  zh: '[PRE23]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
464
- en: Writing data chunk by chunk[](#writing-data-chunk-by-chunk "Permalink to this
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
465
    heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
466
  id: totrans-95
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
467 468 469 470 471
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: When writing data, it is possible to split data along time dimension and write
    them by smaller chunks.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
472
  id: totrans-96
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
473 474 475
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE24]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
476
  id: totrans-97
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
477 478
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
479
  zh: '[PRE24]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
480
- en: '[PRE25]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
481
  id: totrans-98
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
482 483
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
484
  zh: '[PRE25]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
485
- en: '[PRE26]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
486
  id: totrans-99
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
487 488
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
489
  zh: '[PRE26]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
490
- en: '[PRE27]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
491
  id: totrans-100
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
492 493
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
494 495 496 497
  zh: '[PRE27]'
- en: Example - Spectrum Visualizer[](#example-spectrum-visualizer "Permalink to this
    heading")
  id: totrans-101
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
498 499 500 501 502
  prefs:
  - PREF_H2
  type: TYPE_NORMAL
- en: In this section, we use StreamWriter to create a spectrum visualization of audio
    and save it as a video file.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
503
  id: totrans-102
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
504 505 506 507 508 509
  prefs: []
  type: TYPE_NORMAL
- en: To create spectrum visualization, we use [`torchaudio.transforms.Spectrogram`](../generated/torchaudio.transforms.Spectrogram.html#torchaudio.transforms.Spectrogram
    "torchaudio.transforms.Spectrogram"), to get spectrum presentation of audio, generate
    raster images of its visualization using matplotplib, then use StreamWriter to
    convert them to video with the original audio.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
510
  id: totrans-103
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
511 512 513
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE28]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
514
  id: totrans-104
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
515 516
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
517
  zh: '[PRE28]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
518
- en: Prepare Data[](#prepare-data "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
519
  id: totrans-105
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
520 521 522 523 524
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: First, we prepare the spectrogram data. We use [`Spectrogram`](../generated/torchaudio.transforms.Spectrogram.html#torchaudio.transforms.Spectrogram
    "torchaudio.transforms.Spectrogram").
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
525
  id: totrans-106
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
526 527 528 529
  prefs: []
  type: TYPE_NORMAL
- en: We adjust `hop_length` so that one frame of the spectrogram corresponds to one
    video frame.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
530
  id: totrans-107
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
531 532 533
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE29]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
534
  id: totrans-108
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
535 536
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
537
  zh: '[PRE29]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
538
- en: The resulting spectrogram looks like the following.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
539
  id: totrans-109
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
540 541 542
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE30]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
543
  id: totrans-110
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
544 545
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
546
  zh: '[PRE30]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
547
- en: '![streamwriter basic tutorial](../Images/23bb162fe5e2ad4ea90d1784cca151d1.png)'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
548
  id: totrans-111
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
549 550
  prefs: []
  type: TYPE_IMG
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
551
- en: Prepare Canvas[](#prepare-canvas "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
552
  id: totrans-112
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
553 554 555 556 557 558
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: We use `matplotlib` to visualize the spectrogram per frame. We create a helper
    function that plots the spectrogram data and generates a raster imager of the
    figure.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
559
  id: totrans-113
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
560 561 562
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE31]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
563
  id: totrans-114
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
564 565
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
566
  zh: '[PRE31]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
567
- en: Write Video[](#write-video "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
568
  id: totrans-115
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
569 570 571 572 573
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
- en: Finally, we use StreamWriter and write video. We process one second of audio
    and video frames at a time.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
574
  id: totrans-116
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
575 576 577
  prefs: []
  type: TYPE_NORMAL
- en: '[PRE32]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
578
  id: totrans-117
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
579 580
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
581
  zh: '[PRE32]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
582
- en: '[PRE33]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
583
  id: totrans-118
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
584 585
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
586
  zh: '[PRE33]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
587
- en: Result[](#result "Permalink to this heading")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
588
  id: totrans-119
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
589 590 591
  prefs:
  - PREF_H3
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
592
  zh: 结果[](#result "跳转到此标题的永久链接")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
593
- en: The result looks like below.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
594
  id: totrans-120
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
595 596
  prefs: []
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
597
  zh: 结果如下所示。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
598
- en: '[PRE34]'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
599
  id: totrans-121
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
600 601
  prefs: []
  type: TYPE_PRE
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
602 603 604
  zh: '[PRE34]'
- en: 
  id: totrans-122
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
605 606 607
  prefs: []
  type: TYPE_NORMAL
- en: Your browser does not support the video tag.
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
608
  id: totrans-123
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
609 610
  prefs: []
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
611
  zh: 您的浏览器不支持视频标签。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
612 613 614
- en: Carefully watching the video, it can be observed that the sound of “s” (curio**si**ty,
    be**si**des, thi**s**) has more energy allocated on higher frequency side (right
    side of the video).
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
615
  id: totrans-124
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
616 617
  prefs: []
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
618
  zh: 仔细观察视频,可以发现“s”音的声音(curio**si**ty, be**si**des, thi**s**)在高频侧(视频的右侧)有更多的能量分配。
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
619
- en: 'Tag: [`torchaudio.io`](../io.html#module-torchaudio.io "torchaudio.io")'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
620
  id: totrans-125
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
621 622
  prefs: []
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
623
  zh: 标签:[`torchaudio.io`](../io.html#module-torchaudio.io "torchaudio.io")
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
624
- en: '**Total running time of the script:** ( 0 minutes 6.918 seconds)'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
625
  id: totrans-126
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
626 627
  prefs: []
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
628
  zh: '**脚本的总运行时间:**(0分钟6.918秒)'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
629
- en: '[`Download Python source code: streamwriter_basic_tutorial.py`](../_downloads/d8d57badf5e878c5beb8d32b0aefc7dd/streamwriter_basic_tutorial.py)'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
630
  id: totrans-127
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
631 632
  prefs: []
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
633
  zh: '[`下载Python源代码:streamwriter_basic_tutorial.py`](../_downloads/d8d57badf5e878c5beb8d32b0aefc7dd/streamwriter_basic_tutorial.py)'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
634
- en: '[`Download Jupyter notebook: streamwriter_basic_tutorial.ipynb`](../_downloads/78e5305a9c1fa517857bc0197643e56d/streamwriter_basic_tutorial.ipynb)'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
635
  id: totrans-128
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
636 637
  prefs: []
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
638
  zh: '[`下载Jupyter笔记本:streamwriter_basic_tutorial.ipynb`](../_downloads/78e5305a9c1fa517857bc0197643e56d/streamwriter_basic_tutorial.ipynb)'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
639
- en: '[Gallery generated by Sphinx-Gallery](https://sphinx-gallery.github.io)'
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
640
  id: totrans-129
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
641 642
  prefs: []
  type: TYPE_NORMAL
绝不原创的飞龙's avatar
绝不原创的飞龙 已提交
643
  zh: '[Sphinx-Gallery生成的图库](https://sphinx-gallery.github.io)'