All Projects → jdeng → Goheif

jdeng / Goheif

go gettable decoder/converter for HEIF/HEIC based on libde265

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Labels

Projects that are alternatives of or similar to Goheif

flvAnalyser
FLV v1.0 analyser
Stars: ✭ 76 (+5.56%)
Mutual labels:  hevc
RDPlot
Tool for plotting rd curves from output of video coding test model software
Stars: ✭ 22 (-69.44%)
Mutual labels:  hevc
Voukoder
Provides an easy way to include the FFmpeg encoders in other windows applications.
Stars: ✭ 436 (+505.56%)
Mutual labels:  hevc
libheif-sharp
Provides .NET bindings for libheif.
Stars: ✭ 30 (-58.33%)
Mutual labels:  hevc
smart rtmpd
RTMP server, smart, compact, high performance(c, c++), high concurrency, easy to maintain, easy to deploy, (supports multiple operating systems Windows and Linux, ARM, FreeBSD)
Stars: ✭ 159 (+120.83%)
Mutual labels:  hevc
Heif Utility
HEIF Utility - View/Convert Apple HEIF images on Windows.
Stars: ✭ 277 (+284.72%)
Mutual labels:  hevc
demuxer
A tool for demux ts/mp4/flv by typescript. Support HEVC/AVC/AAC codec
Stars: ✭ 108 (+50%)
Mutual labels:  hevc
Ffmpeg
Mirror of https://git.ffmpeg.org/ffmpeg.git
Stars: ✭ 27,382 (+37930.56%)
Mutual labels:  hevc
video encoder for ogl dx
H264/HEVC Video Encoder for OpenGL
Stars: ✭ 40 (-44.44%)
Mutual labels:  hevc
Awesome Video
A curated list of awesome streaming video tools, frameworks, libraries, and learning resources.
Stars: ✭ 397 (+451.39%)
Mutual labels:  hevc
rrdncnn
[TIP'2021 - MMM'2020] Down-Sampling Based Video Coding with Degradation-aware Restoration-Reconstruction Deep Neural Network
Stars: ✭ 27 (-62.5%)
Mutual labels:  hevc
kvazzup
Open software for HEVC video calls
Stars: ✭ 30 (-58.33%)
Mutual labels:  hevc
Gitlhevcanalyzer
Gitl HEVC/H.265 Analyzer based on Qt. Custom filters supported.
Stars: ✭ 361 (+401.39%)
Mutual labels:  hevc
xin26x
Video Encoder for Now and Next Decade
Stars: ✭ 74 (+2.78%)
Mutual labels:  hevc
Kvazaar
An open-source HEVC encoder
Stars: ✭ 493 (+584.72%)
Mutual labels:  hevc
VIDEOconvertor
A stable and Fast telegram video convertor bot which can encode into different libs and resolution, compress videos, convert video into audio and other video formats, rename with thumbnail support, generate screenshot and trim videos.
Stars: ✭ 180 (+150%)
Mutual labels:  hevc
Node Video Lib
Node.js Video Library / MP4 & FLV parser / MP4 builder / HLS muxer
Stars: ✭ 264 (+266.67%)
Mutual labels:  hevc
Testing Video
Generator of test video files for testing your media playback devices and calibrate TV sets
Stars: ✭ 70 (-2.78%)
Mutual labels:  hevc
Yuview
The Free and Open Source Cross Platform YUV Viewer with an advanced analytics toolset
Stars: ✭ 665 (+823.61%)
Mutual labels:  hevc
Svt Hevc
SVT HEVC encoder. Scalable Video Technology (SVT) is a software-based video coding technology that is highly optimized for Intel® Xeon® processors. Using the open source SVT-HEVC encoder, it is possible to spread video encoding processing across multiple Intel® Xeon® processors to achieve a real advantage of processing efficiency.
Stars: ✭ 363 (+404.17%)
Mutual labels:  hevc

GoHeif - A go gettable decoder/converter for HEIC based on libde265

Install

  • heic2jpg to convert HEIC files to JPG preserving exif

go get github.com/jdeng/goheif/...

  • Tested

    • Mac OS X (High Sierra)
    • Linux (Ubuntu 16.04 / GCC 5.4)
    • Windows 7 64bit with TDM-GCC 32 (GCC 5.1) and golang 1.12 windows/386
  • Code Sample

func main() {
	flag.Parse()
	...
  
	fin, fout := flag.Arg(0), flag.Arg(1)
	fi, err := os.Open(fin)
	if err != nil {
		log.Fatal(err)
	}
	defer fi.Close()

	exif, err := goheif.ExtractExif(fi)
	if err != nil {
		log.Printf("Warning: no EXIF from %s: %v\n", fin, err)
	}

	img, err := goheif.DecodeImage(fi)
	if err != nil {
		log.Fatalf("Failed to parse %s: %v\n", fin, err)
	}

	fo, err := os.OpenFile(fout, os.O_RDWR|os.O_CREATE, 0644)
	if err != nil {
		log.Fatalf("Failed to create output file %s: %v\n", fout, err)
	}
	defer fo.Close()

	w, _ := newWriterExif(fo, exif)
	err = jpeg.Encode(w, img, nil)
	if err != nil {
		log.Fatalf("Failed to encode %s: %v\n", fout, err)
	}

	log.Printf("Convert %s to %s successfully\n", fin, fout)
}

What is done

  • Changes make to @bradfitz's (https://github.com/bradfitz) golang heif parser

    • Some minor bugfixes
    • A few new box parsers, noteably 'iref' and 'hvcC'
  • Include libde265's source code (SSE by default enabled) and a simple golang binding

  • A Utility heic2jpg to illustrate the usage.

License

  • heif and libde265 are in their own licenses

  • goheif.go, libde265 golang binding and the heic2jpg utility are in MIT license

Credits

TODO

  • Upstream the changes to heif?
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].