Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposed Encoders / Decoders Libraries #61

Open
17 tasks done
jeromewu opened this issue Apr 29, 2020 · 75 comments
Open
17 tasks done

Proposed Encoders / Decoders Libraries #61

jeromewu opened this issue Apr 29, 2020 · 75 comments
Assignees

Comments

@jeromewu
Copy link
Collaborator

jeromewu commented Apr 29, 2020

So far only following encoders / decoders libraries are supported:

Update at 2020/11/24

Video

  • mp4 (x264)
  • mp4 (x265)
  • webm (libvpx)
  • ogv (theora)
  • mpeg-1 (native)
  • mpeg-2 (native)
  • aom (av1 / avif) (only in next version, see comments below)

Audio

  • mp3 (lame)
  • aac (fdk-aac)
  • wav/wv (wavpack)
  • ogg (vorbis)
  • opus (opus)
  • flac (native)

Image

  • gif (native)
  • webp (libwebp)

Others

  • font files (freetype)
  • *.srt, *.ass subtitle files (libass) (sample code HERE)

If you there is any library you would like to add:

  • If it already exists in the replies, simply give an emoji to upvote
  • If it doesn't exist, you can reply this issue to propose.

I will check this issue periodically to decide which library to integrate next, or identify which is NOT possible to integrate at the moment.

@jeromewu
Copy link
Collaborator Author

RTSP

@jeromewu
Copy link
Collaborator Author

jeromewu commented Apr 29, 2020

x265 / h265

@cyberquarks
Copy link

mpeg-1

@grkblood13
Copy link

mpeg-2

@CrypticSignal
Copy link
Contributor

CrypticSignal commented Jun 13, 2020

AAC and WAV

  • AAC is a common audio codec for videos, and probably the next widest supported audio codec after MP3.
  • WAV is a common lossless audio format.

I don't know how WASM works, but here's how you usually use encode to AAC or WAV with FFmpeg:
AAC:
-c:a libdfdk_aac (requires FFmpeg to be compiled with fdk-aac) or -c:a aac (the native FFmpeg AAC encoder). lidfdk_aac is preferred as it's a higher quality AAC encoder.
This may be useful: https://trac.ffmpeg.org/wiki/Encode/AAC
WAV:
-c:a pcm_s16le, -c:a pcm_s24le or -c:a pcm_s32le, where 16, 24 and 32 denote the output audio bit depth.

@polytropoi
Copy link

Ogg please! It's important for game audio, because mp3 doesn't loop properly.

@samwatkinson1
Copy link

AV1

@Cobertos
Copy link

gif

@smashah
Copy link

smashah commented Nov 1, 2020

libwebp

It would be helpful if you could provide some instructions on how to implement these libs so we can make some PRs

@jeromewu
Copy link
Collaborator Author

jeromewu commented Nov 3, 2020

Hi all, for the latest version (v0.9.3), more libraries supported has been added. Please check if it helps in your project.

@smashah It would be great if you can send PRs, for integrating new libraries, you can check this repo: https://github.com/ffmpegwasm/ffmpeg.wasm-core.

Also you can check this series of posts to learn more foundation:

@mathiasrw
Copy link

mathiasrw commented Nov 5, 2020

Thank you so much for creating this!

AVIF please! The AV1 standard is gaining support in the industry and is also used as a single frame "film" as an image format for the web: AVIF. Chrome is supporting it, cloudflare is supporting it and on https://blog.cloudflare.com/generate-avif-images-with-image-resizing/ Cloudflare gives a list of good reasons why both Intel and Apple is jumping on the AVIF (single frame AV1) wagon.

@jeromewu
Copy link
Collaborator Author

jeromewu commented Nov 5, 2020

For AV1, in fact I have successfully integrated into ffmpeg.wasm, but there are two main issues:

  1. It takes more than a minute to transcode an one second video
  2. It adds 2 extra MB to ffmpeg-core.wasm

So right now I disable it as it is not usable for now.
For AVIF, I will check if it is slow as well.

@knaik
Copy link

knaik commented Nov 6, 2020

I would love more focus on audio side of things, I am not sure if it's covered with theora or vorbis. So Opus and Flac. I mentioned vorbis ogg because Opus can be in an ogg container.

@mathiasrw
Copy link

@jeromewu 60x to transcode - aw. Hard one. But epic that you have already looked into it.

Is there any chance to obtain the version with AV1 included even it not being part of the main release?

@jeromewu
Copy link
Collaborator Author

jeromewu commented Nov 7, 2020

@mathiasrw

I have published the version with AV1 in the next / 0.9.0-alpha.2 version, you can use it with following ways:

Node

$ npm install @ffmpeg/core@next
# or
$ npm install @ffmpeg/core@0.9.0-alpha.2

Browser

const ffmpeg = createFFmpeg({
  corePath: 'https://unpkg.com/@ffmpeg/core@0.9.0-alpha.2/dist/ffmpeg-core.js',
});

@jeromewu
Copy link
Collaborator Author

Hey guys, new / verified libraries are updated, please check and don't forget to upgrade to latest version of ffmpeg.wasm to use them.

@sejbr
Copy link

sejbr commented Nov 18, 2020

Any chance for h264_nvenc and hevc_nvenc (https://developer.nvidia.com/blog/nvidia-ffmpeg-transcoding-guide/)?
Both of these are great and fast combined with nvidia gpus.

@jeromewu
Copy link
Collaborator Author

@sejbr From what I know, it is impossible to use GPU capabilities right now, these two flags are impossible at the moment.

@sejbr
Copy link

sejbr commented Nov 19, 2020

You mean in web assembly? That's a shame :/.

@EstebanFuentealba
Copy link

EstebanFuentealba commented Nov 19, 2020

Thank you for your excelent work @jeromewu 👏👏! if possible add libwebp plis 🙏

@jeromewu
Copy link
Collaborator Author

@smashah and @EstebanFuentealba
libwebp is added in v0.9.6, please check. 😄

@jeromewu jeromewu self-assigned this Nov 24, 2020
@pbl4845
Copy link

pbl4845 commented Dec 3, 2020

SRT & RIST
That would be even more awesome!!

@sminodonte
Copy link

mjpeg

@owenthereal
Copy link

Great work on the library. Can we support RTMP? It would be interesting to see if it's possible to stream from the browser to YouTube or Twitch.

@tudalex
Copy link

tudalex commented Jan 7, 2021

Jpeg2000

@Rados51
Copy link

Rados51 commented Jul 22, 2022

@jeromewu Just shooting my shot as I am not that prolific in WASM, but wouldnt something like Go AVIF library help for .avif files?

@erikyo
Copy link

erikyo commented Jul 26, 2022

jpegxl, would complete the set of codecs for images! https://ffmpeg.org/ffmpeg-codecs.html#libjxl

@aisnote
Copy link

aisnote commented Aug 4, 2022

does this support Worker thread?

@Cherokeeli
Copy link

mp2 codec, please

@aisnote
Copy link

aisnote commented Sep 2, 2022

fak-aac is non-free or which license ?

@mpuz
Copy link

mpuz commented Sep 30, 2022

audio - ALAW, MULAW, RTP
Multicast, if not yet

@acschristoph
Copy link

Rtsp please

@hsbtr
Copy link

hsbtr commented Oct 8, 2022

Does the new version support rtsp?

@ChuLiaoLiao
Copy link

Does it support GPU now?

@mattiasottosson
Copy link

Libvmaf
https://github.com/Netflix/vmaf/tree/master/libvmaf

@bittere
Copy link

bittere commented Nov 30, 2022

Hi guys!
First off, awesome work on the project! Love it a lot.
I was wondering if it would be possible for SVG rendering support through librsvg or resvg.
Thanks!

@paivaric
Copy link

paivaric commented Feb 3, 2023

Rtsp please

@salivity
Copy link

salivity commented Mar 3, 2023

could do with mutiple variations based on different tasks to save bandwidth and store the wasm's on a storage service for people to use.

@ddtamn
Copy link

ddtamn commented Mar 11, 2023

how to slowdown a video ?
im using this command : await ffmpeg.run('-i video.mp4 -filter:v "setpts=2.0PTS" output.mp4');
but im get this error : [fferr] Unrecognized option 'i video.mp4 -filter:v "setpts=2.0
PTS" output.mp4'.
createFFmpeg.js:43 [fferr] Error splitting the argument list: Option not found
createFFmpeg.js:43 [ffout] FFMPEG_END

@andfaulkner
Copy link

How hard would it be to handle .apng file inputs?

@Bec-k
Copy link

Bec-k commented Mar 25, 2023

RTSP please

@salivity
Copy link

salivity commented Apr 4, 2023

h265 is not working

@evilArsh
Copy link

webgpu has been released recently, RTSP please,god bless you

@elshnkhll
Copy link

elshnkhll commented Jun 22, 2023

I am using FFPLAY.EXE
my CL: ffplay -protocol_whitelist pipe,file,udp,rtp -i play.sdp

play/sdp file:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=-
c=IN IP4 127.0.0.1
m=audio 5153 RTP/AVP 97
a=rtpmap:97 opus/48000/2

Can you help?

Will donate! Thanks!

@Somebi
Copy link

Somebi commented Jun 23, 2023

I guess it is becoming a tradition to ask for RTSP each year. :)

@elshnkhll
Copy link

LIVE555?

@cjfswd
Copy link

cjfswd commented Jul 31, 2023

.webm ?

@Rados51
Copy link

Rados51 commented Jul 31, 2023

.webm ?

@cjfswd This works fine already.

@constlhq
Copy link

PCMA wanted

@CrypticSignal
Copy link
Contributor

@jeromewu You should update aac (fdk-aac) in the OP to aac as it seems like ffmpeg.wasm doesn't support libfdk_aac.

@manfwh
Copy link

manfwh commented Nov 14, 2023

amv

@thipperz
Copy link

webp decoding

@salivity
Copy link

webp decoding

You can use ImageMagick for webp

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests