All Projects → shengbinmeng → ffmpeg-h264-dec

shengbinmeng / ffmpeg-h264-dec

Licence: other
H.264 decoder extracted from FFmpeg.

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to ffmpeg-h264-dec

Ffmediatoolkit
FFMediaToolkit is a cross-platform video decoder/encoder library for .NET that uses FFmpeg native libraries. It supports video frames extraction, reading stream metadata and creating videos from bitmaps in any format supported by FFmpeg.
Stars: ✭ 156 (+92.59%)
Mutual labels:  h264, decoder
Wxinlineplayer
🤟Super fast H.264/H.265 FLV player
Stars: ✭ 873 (+977.78%)
Mutual labels:  h264, decoder
tinyh264
A tiny WASM h.264 decoder, for node and browser
Stars: ✭ 139 (+71.6%)
Mutual labels:  h264, decoder
h264decoder
h264 decoding module for python based on libav
Stars: ✭ 76 (-6.17%)
Mutual labels:  h264, decoder
rust to js
An example of Rust code that compiles to javascript.
Stars: ✭ 26 (-67.9%)
Mutual labels:  emscripten
rtlsdr-wsprd
WSPR daemon for RTL receivers
Stars: ✭ 93 (+14.81%)
Mutual labels:  decoder
Nager.VideoStream
Get images from a network camera stream or webcam
Stars: ✭ 27 (-66.67%)
Mutual labels:  h264
datachannel-wasm
C++ WebRTC Data Channels and WebSockets for WebAssembly in browsers
Stars: ✭ 77 (-4.94%)
Mutual labels:  emscripten
imgui
Dear ImGui Addons Branch = plain unmodified dear imgui plus some extra addon.
Stars: ✭ 348 (+329.63%)
Mutual labels:  emscripten
SimpleRemoteDesktop
Remote desktop client based on h264 steam. like splashtop and other
Stars: ✭ 17 (-79.01%)
Mutual labels:  h264
acronym-decoder
Acronym Decoder
Stars: ✭ 39 (-51.85%)
Mutual labels:  decoder
otfed
An OpenType font format encoder & decoder written in OCaml
Stars: ✭ 15 (-81.48%)
Mutual labels:  decoder
tg-file-decoder
Decode Telegram bot API file IDs
Stars: ✭ 30 (-62.96%)
Mutual labels:  decoder
python-wasm
Build scripts and configuration for building CPython for Emscripten
Stars: ✭ 606 (+648.15%)
Mutual labels:  emscripten
Open-Imaging
Tools and libraries that deal with the creation and processing of images.
Stars: ✭ 100 (+23.46%)
Mutual labels:  decoder
dcraw.js
Generated JavaScript executable code from dcraw.c
Stars: ✭ 14 (-82.72%)
Mutual labels:  emscripten
encoding-html
A golang library for decoding html into structs
Stars: ✭ 29 (-64.2%)
Mutual labels:  decoder
zAnalysis
zAnalysis是基于Pascal语言编写的大型统计学开源库
Stars: ✭ 52 (-35.8%)
Mutual labels:  h264
PPlayer
ffmpeg 4.0.2静态库从0开始一个播放器的搭建,支持rtmp、rtsp、hls、本地MP4文件播放,音视频同步,直播推流
Stars: ✭ 81 (+0%)
Mutual labels:  h264
web-ifc
Reading and writing IFC files with Javascript, at native speeds.
Stars: ✭ 229 (+182.72%)
Mutual labels:  emscripten

ffmpeg-h264-dec

Build Status

H.264 decoder extracted from FFmpeg

Extraction

Files related to H.264 decoding are extracted from FFmpeg and put in the folder ./ffmpeg-src.

The checkout commit is 2f76157eb05bf63725f96167feda6b2e07501c7e.

Some files may be modified (a little).

Build the decoder

Run make, and you will get the executable h264dec.

Compile into JavaScript

With the tool Emscripten, the C code can also be compiled into JavaScript:

  • Run emmake make h264dec.html to get h264dec.html (and its supporting files), which can be open in a browser when served using a web server (e.g., with python3 -m http.server). Note that since we can not pass arguments to HTML pages, you should modify main.c (see the commented line in the main function) to let the program starts decoding without arguments.

  • Run emmake make h264dec.node.js to get h264dec.node.js, which can be executed by Node.js: node h264dec.node.js.

(emmake comes with Emscripten; make clean is usually needed before building for another platform.)

Use in JavaScript player

In the folder ./javascript, run emmake make to build Decoder.js, which is used in a JavaScript TS file player demo: https://github.com/shengbinmeng/javascript-ts-player.

Future work

  1. Compare performance with Broadway's that is based on Android's software H.264 decoder. No big difference maybe, but the latter only supports baseline profile.

  2. Optimize JavaScript code generation, e.g., investigate Emscripten flags, use SIMD.

  3. Remove unused code. Current extraction is file based. A lot of code in some files are not used by H.264 decoding. However, changing file content will make it harder to sync with FFmpeg version update.

  4. Abstract a better interface and implement a better demo player.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].