pion / opus Goto Github PK
View Code? Open in Web Editor NEWPure Go implementation of Opus
Home Page: https://pion.ly/
License: MIT License
Pure Go implementation of Opus
Home Page: https://pion.ly/
License: MIT License
Trying to decode Telegram voice messages, get unsupported configuration mode: 2
Sample file:
https://file.io/LAv06s4gaw1o
Hello!
I was looking at table_of_contents_header.go, and noticed that the Configuration.mode() method returns 0 if c = 0.
According to RFC6716, if c = 0, it should be determined to be in SILKOnly mode.
Can I fix it?
If I understand correctly, pion opus only support decoding operations, is there any plan to support encoding operations in the future?
I've written a streaming-WebRTC gateway app that can convert av streams from streaming devices to WebRTC via pion, but now there's a tricky problem, the audio encoding provided by these media devices is usually aac (or can be set to pcm, which is configurable on the device), I can't find a library that implements pcm -> opus in pure go, only some library based on c-go (like this one). The c-go based library has some limitations (e.g. it can't be self-contained), so it would be nice if pion opus supported pcm->opus.
.
.
There is a file which is encoded by opusenc --raw-rate 16000 nowavheader-stereo.pcm nowavheader-stereo.opus
i can decode it using opusdec --rate 16000 nowavheader-stereo.opus nowavheader-stereo.opus.pcm
,
I've tried these code
opusbs, err := os.ReadFile("./nowavheader-stereo.opus")
if err != nil {
panic(err.Error())
}
decoder := opus.NewDecoder()
out := make([]byte, 1920)
bandwidth, isStereo, err := decoder.Decode(opusbs, out)
if err != nil {
panic(err.Error())
}
fmt.Printf("bandwidth: %+v, isStereo: %+v\n", bandwidth, isStereo)
_ = decoder
but I got this error
panic: unsupported frame code: 3
file is bellow:
MD5 (nowavheader-stereo.pcm) = 9b5ba9b8bc5b96c8055d93033553184c MD5 (nowavheader-stereo.opus) = 13e606dfa6545c9b51a85a30cef2ab6f
opusenc --version
opusenc opus-tools 0.2 (using libopus 1.5.2) Copyright (C) 2008-2018 Xiph.Org Foundation
how to decode it using this package,any example please?
Archive.zip
In a web worker , this would make it easy to build various apps that need sound
in a server , mobile iot desktop you can do the same with Wazero with no cgo also.
Currently none of it is implemented
README.md links to https://github.com/pion/opus/blob/master/LICENSE, however, LICENSE file does not exist.
Sets up all the testing and linters
This is a covering ticket for the Pion Opus roadmap. If you have any requests feel free to leave them here/vote on others.
Extract the ec_ctx
from libopus and write tests against it. Write a Go idiomatic version that passes all the same tests
NOTE: Low Bitrate Redundancy frames are low priority for on-disk opus but you will need to support/skip them in the webrtc context.
Currently we are hardcoded to expect 4 subframes (20Ms)
We need to go through and fix the cases where we do that.
Currently a noop
Defined in https://datatracker.ietf.org/doc/html/rfc6716#section-4.2.7.5.4
Currently we only process correctly if lagAbsolute
is true.
https://github.com/pion/opus/blob/master/internal/silk/decoder.go#L1118
Question: this is a decoder only ?
no plans to also encode ?
opus/examples/playback/README.md
Line 9 in 70baa27
Running this command produces an error message:
go: github.com/pion/opus/examples/playback@latest (in github.com/pion/opus/examples/[email protected]):
The go.mod file for the module providing named packages contains one or
more replace directives. It must not contain directives that would cause
it to be interpreted differently than if it were the main module.
master
Decoding SILK OGG OPUS streams and some of them are changing from to CELT codec after some time and thus failing.
Proper decoding of the of the whole SILK encoded stream
oggreader returned error that CELT is not supported
The problem is in the loop that is reading the segments. It does not handle the case if the segment's length is 255, which means that the OPUS packet spans multiple segments
opus/pkg/oggreader/oggreader.go
Line 157 in 8667a1a
Pseudo code of the correct loop can be found at https://gist.github.com/amishshah/68548e803c3208566e36e55fe1618e1c
Implementing something similar in my own, heavily modified oggreader, solved all the decoding problems.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.