@scrypted/libav 1.0.140 → 1.0.142
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/lib/index.d.ts +4 -2
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/formatcontext.cpp +65 -18
- package/src/index.ts +4 -2
package/lib/index.d.ts
CHANGED
|
@@ -95,7 +95,9 @@ export interface AVFormatContext {
|
|
|
95
95
|
receiveFrame(streamIndex: number, codecContext: AVCodecContext): Promise<AVFrame>;
|
|
96
96
|
create(format: string, callback: (buffer: Buffer) => void): void;
|
|
97
97
|
newStream(options: {
|
|
98
|
-
codecContext
|
|
98
|
+
codecContext?: AVCodecContext;
|
|
99
|
+
formatContext?: AVFormatContext;
|
|
100
|
+
streamIndex?: number;
|
|
99
101
|
}): number;
|
|
100
102
|
writeFrame(streamIndex: number, packet: AVPacket): void;
|
|
101
103
|
createSDP(): string;
|
|
@@ -118,7 +120,7 @@ export declare function createAVFilter(options: {
|
|
|
118
120
|
export declare function createAVFrame(width: number, height: number, pixelFormat: string, fillBlack?: boolean): AVFrame;
|
|
119
121
|
export declare function createAVBitstreamFilter(filter: string): AVBitstreamFilter;
|
|
120
122
|
export declare function getBinaryUrl(): string;
|
|
121
|
-
export declare function createSdp(formatContexts: AVFormatContext[]):
|
|
123
|
+
export declare function createSdp(formatContexts: AVFormatContext[]): string;
|
|
122
124
|
export declare function toJpeg(frame: AVFrame, quality: number): Promise<Buffer<ArrayBufferLike>>;
|
|
123
125
|
export declare function toBuffer(frame: AVFrame): Promise<Buffer<ArrayBufferLike>>;
|
|
124
126
|
export declare const version: string;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,4BAEC;AAOD,oCAEC;AAED,sCAEC;AAED,8BAKC;AAGD,0BAgCC;AAED,sCA2BC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/formatcontext.cpp
CHANGED
|
@@ -699,30 +699,77 @@ Napi::Value AVFormatContextObject::NewStream(const Napi::CallbackInfo &info)
|
|
|
699
699
|
Napi::Object options = info[0].As<Napi::Object>();
|
|
700
700
|
|
|
701
701
|
Napi::Value codecContextValue = options.Get("codecContext");
|
|
702
|
-
|
|
702
|
+
Napi::Value formatContextValue = options.Get("formatContext");
|
|
703
|
+
Napi::Value streamIndexValue = options.Get("streamIndex");
|
|
704
|
+
AVStream *stream;
|
|
705
|
+
|
|
706
|
+
if (codecContextValue.IsObject())
|
|
707
|
+
{
|
|
708
|
+
AVCodecContextObject *codecContextObject = Napi::ObjectWrap<AVCodecContextObject>::Unwrap(codecContextValue.As<Napi::Object>());
|
|
709
|
+
AVCodecContext *codecContext = codecContextObject->codecContext;
|
|
710
|
+
|
|
711
|
+
// Create a new stream
|
|
712
|
+
stream = avformat_new_stream(fmt_ctx_, NULL);
|
|
713
|
+
if (!stream)
|
|
714
|
+
{
|
|
715
|
+
Napi::Error::New(env, "Failed to create new stream").ThrowAsJavaScriptException();
|
|
716
|
+
return env.Undefined();
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
// Set the codec parameters for the new stream
|
|
720
|
+
AVCodecParameters *codecpar = stream->codecpar;
|
|
721
|
+
stream->time_base.num = codecContext->time_base.num;
|
|
722
|
+
stream->time_base.den = codecContext->time_base.den;
|
|
723
|
+
|
|
724
|
+
avcodec_parameters_from_context(codecpar, codecContext);
|
|
725
|
+
}
|
|
726
|
+
else if (formatContextValue.IsObject())
|
|
703
727
|
{
|
|
704
|
-
|
|
705
|
-
|
|
728
|
+
if (!streamIndexValue.IsNumber())
|
|
729
|
+
{
|
|
730
|
+
Napi::TypeError::New(env, "Number expected for streamIndex").ThrowAsJavaScriptException();
|
|
731
|
+
return env.Undefined();
|
|
732
|
+
}
|
|
733
|
+
unsigned int streamIndex = streamIndexValue.As<Napi::Number>().Uint32Value();
|
|
734
|
+
AVFormatContextObject *formatContextObject = Napi::ObjectWrap<AVFormatContextObject>::Unwrap(formatContextValue.As<Napi::Object>());
|
|
735
|
+
AVFormatContext *formatContext = formatContextObject->fmt_ctx_;
|
|
736
|
+
if (!formatContext)
|
|
737
|
+
{
|
|
738
|
+
Napi::Error::New(env, "Format context is null").ThrowAsJavaScriptException();
|
|
739
|
+
return env.Undefined();
|
|
740
|
+
}
|
|
741
|
+
if (streamIndex < 0 || streamIndex >= formatContext->nb_streams)
|
|
742
|
+
{
|
|
743
|
+
Napi::Error::New(env, "Invalid stream index").ThrowAsJavaScriptException();
|
|
744
|
+
return env.Undefined();
|
|
745
|
+
}
|
|
746
|
+
AVStream *sourceStream = formatContext->streams[streamIndex];
|
|
747
|
+
stream = avformat_new_stream(fmt_ctx_, NULL);
|
|
748
|
+
if (!stream)
|
|
749
|
+
{
|
|
750
|
+
Napi::Error::New(env, "Failed to create new stream").ThrowAsJavaScriptException();
|
|
751
|
+
return env.Undefined();
|
|
752
|
+
}
|
|
753
|
+
AVCodecParameters *codecpar = stream->codecpar;
|
|
754
|
+
if (avcodec_parameters_copy(codecpar, sourceStream->codecpar) < 0)
|
|
755
|
+
{
|
|
756
|
+
Napi::Error::New(env, "Failed to copy codec parameters").ThrowAsJavaScriptException();
|
|
757
|
+
return env.Undefined();
|
|
758
|
+
}
|
|
759
|
+
stream->time_base.num = sourceStream->time_base.num;
|
|
760
|
+
stream->time_base.den = sourceStream->time_base.den;
|
|
706
761
|
}
|
|
707
|
-
|
|
708
|
-
AVCodecContextObject *codecContextObject = Napi::ObjectWrap<AVCodecContextObject>::Unwrap(codecContextValue.As<Napi::Object>());
|
|
709
|
-
AVCodecContext *codecContext = codecContextObject->codecContext;
|
|
710
|
-
|
|
711
|
-
// Create a new stream
|
|
712
|
-
AVStream *stream = avformat_new_stream(fmt_ctx_, NULL);
|
|
713
|
-
if (!stream)
|
|
762
|
+
else if (streamIndexValue.IsNumber())
|
|
714
763
|
{
|
|
715
|
-
Napi::
|
|
764
|
+
int streamIndex = streamIndexValue.As<Napi::Number>().Int32Value();
|
|
765
|
+
stream = fmt_ctx_->streams[streamIndex];
|
|
766
|
+
}
|
|
767
|
+
else {
|
|
768
|
+
// throw
|
|
769
|
+
Napi::Error::New(env, "Object expected for codecContext or formatContext").ThrowAsJavaScriptException();
|
|
716
770
|
return env.Undefined();
|
|
717
771
|
}
|
|
718
772
|
|
|
719
|
-
// Set the codec parameters for the new stream
|
|
720
|
-
AVCodecParameters *codecpar = stream->codecpar;
|
|
721
|
-
stream->time_base.num = codecContext->time_base.num;
|
|
722
|
-
stream->time_base.den = codecContext->time_base.den;
|
|
723
|
-
|
|
724
|
-
avcodec_parameters_from_context(codecpar, codecContext);
|
|
725
|
-
|
|
726
773
|
// gpt says supposed to send this but sends empty packet which crashes.
|
|
727
774
|
// sps/pps seem to be sent correctly though.
|
|
728
775
|
// may be an issue on mp4 where there's a moov header?
|
package/src/index.ts
CHANGED
|
@@ -200,7 +200,9 @@ export interface AVFormatContext {
|
|
|
200
200
|
receiveFrame(streamIndex: number, codecContext: AVCodecContext): Promise<AVFrame>;
|
|
201
201
|
create(format: string, callback: (buffer: Buffer) => void): void;
|
|
202
202
|
newStream(options: {
|
|
203
|
-
codecContext
|
|
203
|
+
codecContext?: AVCodecContext,
|
|
204
|
+
formatContext?: AVFormatContext,
|
|
205
|
+
streamIndex?: number,
|
|
204
206
|
}): number;
|
|
205
207
|
writeFrame(streamIndex: number, packet: AVPacket): void;
|
|
206
208
|
createSDP(): string;
|
|
@@ -287,7 +289,7 @@ async function encodeJpeg(softwareFrame: AVFrame, quality: number) {
|
|
|
287
289
|
return transcodePacket.getData();
|
|
288
290
|
}
|
|
289
291
|
|
|
290
|
-
export function createSdp(formatContexts: AVFormatContext[]) {
|
|
292
|
+
export function createSdp(formatContexts: AVFormatContext[]): string {
|
|
291
293
|
return loadAddon().createSdp(formatContexts);
|
|
292
294
|
}
|
|
293
295
|
|