node-av 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -38
- package/dist/api/bitstream-filter.d.ts +180 -123
- package/dist/api/bitstream-filter.js +180 -125
- package/dist/api/bitstream-filter.js.map +1 -1
- package/dist/api/decoder.d.ts +279 -132
- package/dist/api/decoder.js +285 -142
- package/dist/api/decoder.js.map +1 -1
- package/dist/api/encoder.d.ts +246 -162
- package/dist/api/encoder.js +272 -208
- package/dist/api/encoder.js.map +1 -1
- package/dist/api/filter-presets.d.ts +690 -94
- package/dist/api/filter-presets.js +686 -102
- package/dist/api/filter-presets.js.map +1 -1
- package/dist/api/filter.d.ts +249 -213
- package/dist/api/filter.js +252 -242
- package/dist/api/filter.js.map +1 -1
- package/dist/api/hardware.d.ts +224 -117
- package/dist/api/hardware.js +380 -214
- package/dist/api/hardware.js.map +1 -1
- package/dist/api/index.d.ts +3 -3
- package/dist/api/index.js +1 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api/io-stream.d.ts +65 -61
- package/dist/api/io-stream.js +43 -46
- package/dist/api/io-stream.js.map +1 -1
- package/dist/api/media-input.d.ts +242 -140
- package/dist/api/media-input.js +205 -103
- package/dist/api/media-input.js.map +1 -1
- package/dist/api/media-output.d.ts +206 -128
- package/dist/api/media-output.js +210 -128
- package/dist/api/media-output.js.map +1 -1
- package/dist/api/pipeline.d.ts +168 -38
- package/dist/api/pipeline.js +238 -14
- package/dist/api/pipeline.js.map +1 -1
- package/dist/api/types.d.ts +21 -187
- package/dist/api/utils.d.ts +1 -2
- package/dist/api/utils.js +9 -0
- package/dist/api/utils.js.map +1 -1
- package/dist/lib/audio-fifo.d.ts +127 -170
- package/dist/lib/audio-fifo.js +130 -173
- package/dist/lib/audio-fifo.js.map +1 -1
- package/dist/lib/binding.js +5 -0
- package/dist/lib/binding.js.map +1 -1
- package/dist/lib/bitstream-filter-context.d.ts +139 -184
- package/dist/lib/bitstream-filter-context.js +139 -188
- package/dist/lib/bitstream-filter-context.js.map +1 -1
- package/dist/lib/bitstream-filter.d.ts +68 -54
- package/dist/lib/bitstream-filter.js +68 -54
- package/dist/lib/bitstream-filter.js.map +1 -1
- package/dist/lib/codec-context.d.ts +316 -380
- package/dist/lib/codec-context.js +316 -381
- package/dist/lib/codec-context.js.map +1 -1
- package/dist/lib/codec-parameters.d.ts +160 -170
- package/dist/lib/codec-parameters.js +162 -172
- package/dist/lib/codec-parameters.js.map +1 -1
- package/dist/lib/codec-parser.d.ts +91 -104
- package/dist/lib/codec-parser.js +92 -103
- package/dist/lib/codec-parser.js.map +1 -1
- package/dist/lib/codec.d.ts +264 -281
- package/dist/lib/codec.js +268 -285
- package/dist/lib/codec.js.map +1 -1
- package/dist/lib/dictionary.d.ts +149 -203
- package/dist/lib/dictionary.js +158 -212
- package/dist/lib/dictionary.js.map +1 -1
- package/dist/lib/error.d.ts +96 -130
- package/dist/lib/error.js +98 -128
- package/dist/lib/error.js.map +1 -1
- package/dist/lib/filter-context.d.ts +284 -218
- package/dist/lib/filter-context.js +290 -227
- package/dist/lib/filter-context.js.map +1 -1
- package/dist/lib/filter-graph.d.ts +251 -292
- package/dist/lib/filter-graph.js +253 -294
- package/dist/lib/filter-graph.js.map +1 -1
- package/dist/lib/filter-inout.d.ts +87 -95
- package/dist/lib/filter-inout.js +87 -95
- package/dist/lib/filter-inout.js.map +1 -1
- package/dist/lib/filter.d.ts +93 -111
- package/dist/lib/filter.js +93 -111
- package/dist/lib/filter.js.map +1 -1
- package/dist/lib/format-context.d.ts +320 -428
- package/dist/lib/format-context.js +313 -385
- package/dist/lib/format-context.js.map +1 -1
- package/dist/lib/frame.d.ts +262 -405
- package/dist/lib/frame.js +263 -408
- package/dist/lib/frame.js.map +1 -1
- package/dist/lib/hardware-device-context.d.ts +149 -203
- package/dist/lib/hardware-device-context.js +149 -203
- package/dist/lib/hardware-device-context.js.map +1 -1
- package/dist/lib/hardware-frames-context.d.ts +170 -180
- package/dist/lib/hardware-frames-context.js +171 -181
- package/dist/lib/hardware-frames-context.js.map +1 -1
- package/dist/lib/index.d.ts +2 -1
- package/dist/lib/index.js +2 -2
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/input-format.d.ts +89 -117
- package/dist/lib/input-format.js +89 -117
- package/dist/lib/input-format.js.map +1 -1
- package/dist/lib/io-context.d.ts +209 -241
- package/dist/lib/io-context.js +220 -252
- package/dist/lib/io-context.js.map +1 -1
- package/dist/lib/log.d.ts +85 -119
- package/dist/lib/log.js +85 -122
- package/dist/lib/log.js.map +1 -1
- package/dist/lib/native-types.d.ts +117 -106
- package/dist/lib/native-types.js +0 -7
- package/dist/lib/native-types.js.map +1 -1
- package/dist/lib/option.d.ts +284 -241
- package/dist/lib/option.js +309 -249
- package/dist/lib/option.js.map +1 -1
- package/dist/lib/output-format.d.ts +77 -101
- package/dist/lib/output-format.js +77 -101
- package/dist/lib/output-format.js.map +1 -1
- package/dist/lib/packet.d.ts +172 -240
- package/dist/lib/packet.js +172 -241
- package/dist/lib/packet.js.map +1 -1
- package/dist/lib/rational.d.ts +0 -2
- package/dist/lib/rational.js +0 -2
- package/dist/lib/rational.js.map +1 -1
- package/dist/lib/software-resample-context.d.ts +241 -325
- package/dist/lib/software-resample-context.js +242 -326
- package/dist/lib/software-resample-context.js.map +1 -1
- package/dist/lib/software-scale-context.d.ts +129 -173
- package/dist/lib/software-scale-context.js +131 -175
- package/dist/lib/software-scale-context.js.map +1 -1
- package/dist/lib/stream.d.ts +87 -197
- package/dist/lib/stream.js +87 -197
- package/dist/lib/stream.js.map +1 -1
- package/dist/lib/utilities.d.ts +372 -181
- package/dist/lib/utilities.js +373 -182
- package/dist/lib/utilities.js.map +1 -1
- package/install/check.js +0 -1
- package/package.json +21 -12
- package/release_notes.md +43 -59
- package/CHANGELOG.md +0 -8
package/dist/lib/stream.js
CHANGED
|
@@ -2,12 +2,12 @@ import { CodecParameters } from './codec-parameters.js';
|
|
|
2
2
|
import { Dictionary } from './dictionary.js';
|
|
3
3
|
import { Rational } from './rational.js';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Media stream within a format context.
|
|
6
6
|
*
|
|
7
|
-
* Represents a single stream (video, audio, subtitle, etc.) within a media
|
|
8
|
-
*
|
|
9
|
-
* and
|
|
10
|
-
*
|
|
7
|
+
* Represents a single stream (video, audio, subtitle, etc.) within a media container.
|
|
8
|
+
* Contains stream-specific information including codec parameters, timing information,
|
|
9
|
+
* metadata, and disposition flags. Each stream in a file has a unique index and may
|
|
10
|
+
* contain packets of compressed data.
|
|
11
11
|
*
|
|
12
12
|
* Direct mapping to FFmpeg's AVStream.
|
|
13
13
|
*
|
|
@@ -16,98 +16,60 @@ import { Rational } from './rational.js';
|
|
|
16
16
|
* import { FormatContext, FFmpegError } from 'node-av';
|
|
17
17
|
* import { AVMEDIA_TYPE_VIDEO, AVMEDIA_TYPE_AUDIO } from 'node-av/constants';
|
|
18
18
|
*
|
|
19
|
-
* //
|
|
19
|
+
* // Access streams from format context
|
|
20
20
|
* const formatContext = new FormatContext();
|
|
21
|
-
*
|
|
22
|
-
* FFmpegError.throwIfError(ret, 'openInput');
|
|
21
|
+
* await formatContext.openInput('video.mp4');
|
|
23
22
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* // Access streams
|
|
28
|
-
* const streams = formatContext.streams;
|
|
29
|
-
* for (const stream of streams) {
|
|
30
|
-
* console.log(`Stream ${stream.index}: ${stream.codecpar.codecType}`);
|
|
31
|
-
* console.log(`Time base: ${stream.timeBase.num}/${stream.timeBase.den}`);
|
|
32
|
-
*
|
|
33
|
-
* // Direct access to codec parameters
|
|
23
|
+
* // Iterate through streams
|
|
24
|
+
* for (let i = 0; i < formatContext.nbStreams; i++) {
|
|
25
|
+
* const stream = formatContext.streams[i];
|
|
34
26
|
* const codecpar = stream.codecpar;
|
|
27
|
+
*
|
|
35
28
|
* if (codecpar.codecType === AVMEDIA_TYPE_VIDEO) {
|
|
36
|
-
* console.log(`Video
|
|
29
|
+
* console.log(`Video stream ${stream.index}:`);
|
|
30
|
+
* console.log(` Codec: ${codecpar.codecId}`);
|
|
31
|
+
* console.log(` Resolution: ${codecpar.width}x${codecpar.height}`);
|
|
32
|
+
* console.log(` Frame rate: ${stream.avgFrameRate.num}/${stream.avgFrameRate.den}`);
|
|
37
33
|
* } else if (codecpar.codecType === AVMEDIA_TYPE_AUDIO) {
|
|
38
|
-
* console.log(`Audio
|
|
34
|
+
* console.log(`Audio stream ${stream.index}:`);
|
|
35
|
+
* console.log(` Sample rate: ${codecpar.sampleRate} Hz`);
|
|
36
|
+
* console.log(` Channels: ${codecpar.channels}`);
|
|
39
37
|
* }
|
|
40
38
|
* }
|
|
41
39
|
* ```
|
|
42
40
|
*
|
|
43
|
-
* @see
|
|
44
|
-
* @see {@link
|
|
41
|
+
* @see [AVStream](https://ffmpeg.org/doxygen/trunk/structAVStream.html) - FFmpeg Doxygen
|
|
42
|
+
* @see {@link FormatContext} For container operations
|
|
43
|
+
* @see {@link CodecParameters} For codec configuration
|
|
45
44
|
*/
|
|
46
45
|
export class Stream {
|
|
47
46
|
native;
|
|
48
47
|
_codecpar; // Cache the wrapped codecpar
|
|
49
48
|
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* Streams are created and managed by FormatContext.
|
|
53
|
-
* For demuxing, streams are created automatically when opening input.
|
|
54
|
-
* For muxing, use formatContext.newStream() to create streams.
|
|
55
|
-
*
|
|
49
|
+
* @param native - The native stream instance
|
|
56
50
|
* @internal
|
|
57
|
-
*
|
|
58
|
-
* @param native - Native AVStream to wrap
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
* ```typescript
|
|
62
|
-
* // Don't create streams directly
|
|
63
|
-
* // const stream = new Stream(); // Wrong
|
|
64
|
-
*
|
|
65
|
-
* // For demuxing: streams are created automatically
|
|
66
|
-
* const streams = formatContext.streams; // Correct
|
|
67
|
-
*
|
|
68
|
-
* // For muxing: use newStream
|
|
69
|
-
* const stream = formatContext.newStream(null); // Correct
|
|
70
|
-
* ```
|
|
71
51
|
*/
|
|
72
52
|
constructor(native) {
|
|
73
53
|
this.native = native;
|
|
74
54
|
}
|
|
75
55
|
/**
|
|
76
|
-
* Stream index
|
|
77
|
-
*
|
|
78
|
-
* Zero-based index of this stream in the format context's stream array.
|
|
79
|
-
* This is the index used to identify the stream in packets.
|
|
80
|
-
*
|
|
81
|
-
* Direct mapping to AVStream->index
|
|
82
|
-
*
|
|
83
|
-
* @readonly
|
|
56
|
+
* Stream index.
|
|
84
57
|
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* // Find video stream index
|
|
88
|
-
* const videoStreamIndex = streams.findIndex(
|
|
89
|
-
* s => s.codecpar.codecType === AVMEDIA_TYPE_VIDEO
|
|
90
|
-
* );
|
|
58
|
+
* Zero-based index of this stream in the format context.
|
|
59
|
+
* Used to identify packets belonging to this stream.
|
|
91
60
|
*
|
|
92
|
-
*
|
|
93
|
-
* if (packet.streamIndex === videoStreamIndex) {
|
|
94
|
-
* // This packet belongs to the video stream
|
|
95
|
-
* }
|
|
96
|
-
* ```
|
|
61
|
+
* Direct mapping to AVStream->index.
|
|
97
62
|
*/
|
|
98
63
|
get index() {
|
|
99
64
|
return this.native.index;
|
|
100
65
|
}
|
|
101
66
|
/**
|
|
102
|
-
*
|
|
67
|
+
* Stream ID.
|
|
103
68
|
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
69
|
+
* Format-specific stream identifier.
|
|
70
|
+
* May be used by some formats for internal stream identification.
|
|
106
71
|
*
|
|
107
|
-
* Direct mapping to AVStream->id
|
|
108
|
-
*
|
|
109
|
-
* - decoding: Set by libavformat
|
|
110
|
-
* - encoding: Set by the user, replaced by libavformat if left unset
|
|
72
|
+
* Direct mapping to AVStream->id.
|
|
111
73
|
*/
|
|
112
74
|
get id() {
|
|
113
75
|
return this.native.id;
|
|
@@ -116,32 +78,12 @@ export class Stream {
|
|
|
116
78
|
this.native.id = value;
|
|
117
79
|
}
|
|
118
80
|
/**
|
|
119
|
-
* Codec parameters
|
|
120
|
-
*
|
|
121
|
-
* Contains all the parameters needed to set up a codec for this stream,
|
|
122
|
-
* including codec ID, dimensions for video, sample rate for audio, etc.
|
|
123
|
-
*
|
|
124
|
-
* Direct mapping to AVStream->codecpar
|
|
81
|
+
* Codec parameters.
|
|
125
82
|
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
83
|
+
* Contains essential codec configuration for this stream.
|
|
84
|
+
* Used to initialize decoders and describe stream properties.
|
|
128
85
|
*
|
|
129
|
-
*
|
|
130
|
-
* ```typescript
|
|
131
|
-
* // For video stream
|
|
132
|
-
* stream.codecpar.codecType = AVMEDIA_TYPE_VIDEO;
|
|
133
|
-
* stream.codecpar.codecId = AV_CODEC_ID_H264;
|
|
134
|
-
* stream.codecpar.width = 1920;
|
|
135
|
-
* stream.codecpar.height = 1080;
|
|
136
|
-
*
|
|
137
|
-
* // For audio stream
|
|
138
|
-
* stream.codecpar.codecType = AVMEDIA_TYPE_AUDIO;
|
|
139
|
-
* stream.codecpar.codecId = AV_CODEC_ID_AAC;
|
|
140
|
-
* stream.codecpar.sampleRate = 48000;
|
|
141
|
-
* stream.codecpar.channels = 2;
|
|
142
|
-
* ```
|
|
143
|
-
*
|
|
144
|
-
* @see {@link CodecParameters} For detailed parameter documentation
|
|
86
|
+
* Direct mapping to AVStream->codecpar.
|
|
145
87
|
*/
|
|
146
88
|
get codecpar() {
|
|
147
89
|
// Return cached wrapper if we already have one
|
|
@@ -162,33 +104,12 @@ export class Stream {
|
|
|
162
104
|
this._codecpar = undefined;
|
|
163
105
|
}
|
|
164
106
|
/**
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
* The fundamental unit of time (in seconds) in terms of which frame
|
|
168
|
-
* timestamps are represented. For example, a time base of 1/25 means
|
|
169
|
-
* each time unit is 1/25 of a second (40ms).
|
|
170
|
-
*
|
|
171
|
-
* Direct mapping to AVStream->time_base
|
|
172
|
-
*
|
|
173
|
-
* - decoding: Set by libavformat
|
|
174
|
-
* - encoding: May be set before writeHeader() as a hint to the muxer.
|
|
175
|
-
* The muxer will overwrite with the actual timebase used.
|
|
176
|
-
*
|
|
177
|
-
* @example
|
|
178
|
-
* ```typescript
|
|
179
|
-
* import { Rational } from 'node-av';
|
|
180
|
-
*
|
|
181
|
-
* // Common time bases
|
|
182
|
-
* stream.timeBase = new Rational(1, 90000); // 90kHz (MPEG-TS)
|
|
183
|
-
* stream.timeBase = new Rational(1, 1000); // milliseconds
|
|
184
|
-
* stream.timeBase = new Rational(1, 25); // 25 fps video
|
|
107
|
+
* Stream time base.
|
|
185
108
|
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
* const seconds = Number(pts) * stream.timeBase.toDouble();
|
|
189
|
-
* ```
|
|
109
|
+
* Unit of time for timestamps in this stream.
|
|
110
|
+
* All timestamps (PTS/DTS) are in units of this time base.
|
|
190
111
|
*
|
|
191
|
-
*
|
|
112
|
+
* Direct mapping to AVStream->time_base.
|
|
192
113
|
*/
|
|
193
114
|
get timeBase() {
|
|
194
115
|
const tb = this.native.timeBase;
|
|
@@ -198,16 +119,12 @@ export class Stream {
|
|
|
198
119
|
this.native.timeBase = { num: value.num, den: value.den };
|
|
199
120
|
}
|
|
200
121
|
/**
|
|
201
|
-
*
|
|
122
|
+
* Start time.
|
|
202
123
|
*
|
|
203
|
-
*
|
|
124
|
+
* First timestamp of the stream in stream time base units.
|
|
125
|
+
* AV_NOPTS_VALUE if unknown.
|
|
204
126
|
*
|
|
205
|
-
*
|
|
206
|
-
* it to really is the pts of the first frame.
|
|
207
|
-
* This may be undefined (AV_NOPTS_VALUE).
|
|
208
|
-
*
|
|
209
|
-
* @note The ASF header does NOT contain a correct start_time the ASF
|
|
210
|
-
* demuxer must NOT set this.
|
|
127
|
+
* Direct mapping to AVStream->start_time.
|
|
211
128
|
*/
|
|
212
129
|
get startTime() {
|
|
213
130
|
return this.native.startTime;
|
|
@@ -216,15 +133,12 @@ export class Stream {
|
|
|
216
133
|
this.native.startTime = value;
|
|
217
134
|
}
|
|
218
135
|
/**
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
* Direct mapping to AVStream->duration
|
|
136
|
+
* Stream duration.
|
|
222
137
|
*
|
|
223
|
-
*
|
|
224
|
-
*
|
|
138
|
+
* Total duration in stream time base units.
|
|
139
|
+
* AV_NOPTS_VALUE if unknown.
|
|
225
140
|
*
|
|
226
|
-
*
|
|
227
|
-
* provide a hint to the muxer about the estimated duration.
|
|
141
|
+
* Direct mapping to AVStream->duration.
|
|
228
142
|
*/
|
|
229
143
|
get duration() {
|
|
230
144
|
return this.native.duration;
|
|
@@ -233,9 +147,12 @@ export class Stream {
|
|
|
233
147
|
this.native.duration = value;
|
|
234
148
|
}
|
|
235
149
|
/**
|
|
236
|
-
* Number of frames
|
|
150
|
+
* Number of frames.
|
|
237
151
|
*
|
|
238
|
-
*
|
|
152
|
+
* Total number of frames in this stream.
|
|
153
|
+
* 0 if unknown.
|
|
154
|
+
*
|
|
155
|
+
* Direct mapping to AVStream->nb_frames.
|
|
239
156
|
*/
|
|
240
157
|
get nbFrames() {
|
|
241
158
|
return this.native.nbFrames;
|
|
@@ -244,20 +161,12 @@ export class Stream {
|
|
|
244
161
|
this.native.nbFrames = value;
|
|
245
162
|
}
|
|
246
163
|
/**
|
|
247
|
-
* Stream disposition
|
|
248
|
-
*
|
|
249
|
-
* Direct mapping to AVStream->disposition
|
|
164
|
+
* Stream disposition flags.
|
|
250
165
|
*
|
|
251
|
-
*
|
|
252
|
-
*
|
|
253
|
-
* - muxing: may be set by the caller before avformat_write_header().
|
|
166
|
+
* Combination of AV_DISPOSITION_* flags indicating stream properties
|
|
167
|
+
* (e.g., default, forced subtitles, visual impaired, etc.).
|
|
254
168
|
*
|
|
255
|
-
*
|
|
256
|
-
* - AV_DISPOSITION_DEFAULT: default track
|
|
257
|
-
* - AV_DISPOSITION_ATTACHED_PIC: stream is an attached picture (album art)
|
|
258
|
-
* - AV_DISPOSITION_CAPTIONS: stream contains captions
|
|
259
|
-
* - AV_DISPOSITION_DESCRIPTIONS: stream contains descriptions
|
|
260
|
-
* - AV_DISPOSITION_METADATA: stream contains metadata
|
|
169
|
+
* Direct mapping to AVStream->disposition.
|
|
261
170
|
*/
|
|
262
171
|
get disposition() {
|
|
263
172
|
return this.native.disposition;
|
|
@@ -266,17 +175,12 @@ export class Stream {
|
|
|
266
175
|
this.native.disposition = value;
|
|
267
176
|
}
|
|
268
177
|
/**
|
|
269
|
-
*
|
|
178
|
+
* Discard setting.
|
|
270
179
|
*
|
|
271
|
-
*
|
|
180
|
+
* Indicates which packets can be discarded during demuxing.
|
|
181
|
+
* Used to skip non-essential packets for performance.
|
|
272
182
|
*
|
|
273
|
-
*
|
|
274
|
-
* - AVDISCARD_DEFAULT: discard useless packets like 0 size packets in avi
|
|
275
|
-
* - AVDISCARD_NONREF: discard all non reference
|
|
276
|
-
* - AVDISCARD_BIDIR: discard all bidirectional frames
|
|
277
|
-
* - AVDISCARD_NONINTRA: discard all non intra frames
|
|
278
|
-
* - AVDISCARD_NONKEY: discard all frames except keyframes
|
|
279
|
-
* - AVDISCARD_ALL: discard all
|
|
183
|
+
* Direct mapping to AVStream->discard.
|
|
280
184
|
*/
|
|
281
185
|
get discard() {
|
|
282
186
|
return this.native.discard;
|
|
@@ -285,13 +189,12 @@ export class Stream {
|
|
|
285
189
|
this.native.discard = value;
|
|
286
190
|
}
|
|
287
191
|
/**
|
|
288
|
-
* Sample aspect ratio
|
|
192
|
+
* Sample aspect ratio.
|
|
289
193
|
*
|
|
290
|
-
*
|
|
194
|
+
* Pixel aspect ratio for video streams.
|
|
195
|
+
* 0/1 if unknown or not applicable.
|
|
291
196
|
*
|
|
292
|
-
*
|
|
293
|
-
* - encoding: Set by user.
|
|
294
|
-
* - decoding: Set by libavformat.
|
|
197
|
+
* Direct mapping to AVStream->sample_aspect_ratio.
|
|
295
198
|
*/
|
|
296
199
|
get sampleAspectRatio() {
|
|
297
200
|
const sar = this.native.sampleAspectRatio;
|
|
@@ -301,13 +204,12 @@ export class Stream {
|
|
|
301
204
|
this.native.sampleAspectRatio = { num: value.num, den: value.den };
|
|
302
205
|
}
|
|
303
206
|
/**
|
|
304
|
-
* Average
|
|
207
|
+
* Average frame rate.
|
|
305
208
|
*
|
|
306
|
-
*
|
|
209
|
+
* Average framerate of the stream.
|
|
210
|
+
* 0/1 if unknown or variable frame rate.
|
|
307
211
|
*
|
|
308
|
-
*
|
|
309
|
-
* avformat_find_stream_info().
|
|
310
|
-
* - muxing: May be set by the caller before avformat_write_header().
|
|
212
|
+
* Direct mapping to AVStream->avg_frame_rate.
|
|
311
213
|
*/
|
|
312
214
|
get avgFrameRate() {
|
|
313
215
|
const fr = this.native.avgFrameRate;
|
|
@@ -321,15 +223,12 @@ export class Stream {
|
|
|
321
223
|
this.native.avgFrameRate = { num: value.num, den: value.den };
|
|
322
224
|
}
|
|
323
225
|
/**
|
|
324
|
-
* Real
|
|
226
|
+
* Real frame rate.
|
|
325
227
|
*
|
|
326
|
-
*
|
|
228
|
+
* Real base frame rate of the stream.
|
|
229
|
+
* This is the lowest common multiple of all frame rates in the stream.
|
|
327
230
|
*
|
|
328
|
-
*
|
|
329
|
-
* represented accurately (it is the least common multiple of all
|
|
330
|
-
* framerates in the stream). Note, this value is just a guess!
|
|
331
|
-
* For example, if the time base is 1/90000 and all frames have either
|
|
332
|
-
* approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1.
|
|
231
|
+
* Direct mapping to AVStream->r_frame_rate.
|
|
333
232
|
*/
|
|
334
233
|
get rFrameRate() {
|
|
335
234
|
const fr = this.native.rFrameRate;
|
|
@@ -343,11 +242,12 @@ export class Stream {
|
|
|
343
242
|
this.native.rFrameRate = { num: value.num, den: value.den };
|
|
344
243
|
}
|
|
345
244
|
/**
|
|
346
|
-
*
|
|
245
|
+
* Stream metadata.
|
|
347
246
|
*
|
|
348
|
-
*
|
|
247
|
+
* Dictionary containing stream-specific metadata
|
|
248
|
+
* (e.g., language, title, encoder settings).
|
|
349
249
|
*
|
|
350
|
-
*
|
|
250
|
+
* Direct mapping to AVStream->metadata.
|
|
351
251
|
*/
|
|
352
252
|
get metadata() {
|
|
353
253
|
const nativeDict = this.native.metadata;
|
|
@@ -360,34 +260,23 @@ export class Stream {
|
|
|
360
260
|
this.native.metadata = value?.getNative() ?? null;
|
|
361
261
|
}
|
|
362
262
|
/**
|
|
363
|
-
*
|
|
364
|
-
* will contain the attached picture (e.g., album art).
|
|
263
|
+
* Attached picture.
|
|
365
264
|
*
|
|
366
|
-
*
|
|
265
|
+
* For streams with AV_DISPOSITION_ATTACHED_PIC set,
|
|
266
|
+
* contains the attached picture (e.g., album art).
|
|
367
267
|
*
|
|
368
|
-
*
|
|
369
|
-
* - encoding: unused
|
|
370
|
-
* @readonly
|
|
268
|
+
* Direct mapping to AVStream->attached_pic.
|
|
371
269
|
*/
|
|
372
270
|
get attachedPic() {
|
|
373
271
|
return this.native.attachedPic;
|
|
374
272
|
}
|
|
375
273
|
/**
|
|
376
|
-
*
|
|
377
|
-
* AVSTREAM_EVENT_FLAG_*.
|
|
274
|
+
* Event flags.
|
|
378
275
|
*
|
|
379
|
-
*
|
|
276
|
+
* Flags indicating events that happened to the stream.
|
|
277
|
+
* Used for signaling format changes.
|
|
380
278
|
*
|
|
381
|
-
*
|
|
382
|
-
* avformat_find_stream_info() and av_read_frame(). Flags must be cleared
|
|
383
|
-
* by the user once the event has been handled.
|
|
384
|
-
* - muxing: may be set by the user after avformat_write_header() to
|
|
385
|
-
* indicate a user-triggered event. The muxer will clear the flags for
|
|
386
|
-
* events it has handled in av_[interleaved]_write_frame().
|
|
387
|
-
*
|
|
388
|
-
* Flags:
|
|
389
|
-
* - AVSTREAM_EVENT_FLAG_METADATA_UPDATED: metadata was updated
|
|
390
|
-
* - AVSTREAM_EVENT_FLAG_NEW_PACKETS: new packets were read for this stream
|
|
279
|
+
* Direct mapping to AVStream->event_flags.
|
|
391
280
|
*/
|
|
392
281
|
get eventFlags() {
|
|
393
282
|
return this.native.eventFlags;
|
|
@@ -396,10 +285,11 @@ export class Stream {
|
|
|
396
285
|
this.native.eventFlags = value;
|
|
397
286
|
}
|
|
398
287
|
/**
|
|
399
|
-
* Get the native
|
|
288
|
+
* Get the underlying native Stream object.
|
|
289
|
+
*
|
|
290
|
+
* @returns The native Stream binding object
|
|
400
291
|
*
|
|
401
|
-
* @internal
|
|
402
|
-
* @returns The underlying native stream object
|
|
292
|
+
* @internal
|
|
403
293
|
*/
|
|
404
294
|
getNative() {
|
|
405
295
|
return this.native;
|
package/dist/lib/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/lib/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMzC
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/lib/stream.ts"],"names":[],"mappings":"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"}
|