install build dep during build
use correct jpeg encoding codec
This commit is contained in:
		@@ -28,6 +28,8 @@ Build_Backend:
 | 
				
			|||||||
  image: golang:latest
 | 
					  image: golang:latest
 | 
				
			||||||
  stage: build_backend
 | 
					  stage: build_backend
 | 
				
			||||||
  script:
 | 
					  script:
 | 
				
			||||||
 | 
					    - apt update
 | 
				
			||||||
 | 
					    - apt install libffmpeg-ocaml-dev
 | 
				
			||||||
    - cd apiGo
 | 
					    - cd apiGo
 | 
				
			||||||
    - go build -v -tags sharedffmpeg -o openmediacenter
 | 
					    - go build -v -tags sharedffmpeg -o openmediacenter
 | 
				
			||||||
    - cp -r ../build/ ./static/
 | 
					    - cp -r ../build/ ./static/
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,17 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package thumbnail
 | 
					package thumbnail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#cgo pkg-config: libavcodec
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include "libavcodec/avcodec.h"
 | 
				
			||||||
 | 
					#include "libavutil/pixfmt.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					import "C"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/3d0c/gmf"
 | 
						"github.com/3d0c/gmf"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
@@ -10,10 +21,10 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Parse(filename string, time uint64) (*string, *VidInfo, error) {
 | 
					func Parse(filename string, time uint64) (*string, *VidInfo, error) {
 | 
				
			||||||
	dta, inf, err := decodePic(filename, "png", time)
 | 
						dta, inf, err := decodePic(filename, "mjpeg", time)
 | 
				
			||||||
	if len(dta) > 0 && err == nil {
 | 
						if err == nil && dta != nil {
 | 
				
			||||||
		// base64 encode picture
 | 
							// base64 encode picture
 | 
				
			||||||
		enc := EncodeBase64(dta, "image/png")
 | 
							enc := EncodeBase64(dta, "image/jpeg")
 | 
				
			||||||
		return enc, inf, nil
 | 
							return enc, inf, nil
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		return nil, nil, err
 | 
							return nil, nil, err
 | 
				
			||||||
@@ -23,6 +34,8 @@ func Parse(filename string, time uint64) (*string, *VidInfo, error) {
 | 
				
			|||||||
func decodePic(srcFileName string, decodeExtension string, time uint64) (pic *[]byte, info *VidInfo, err error) {
 | 
					func decodePic(srcFileName string, decodeExtension string, time uint64) (pic *[]byte, info *VidInfo, err error) {
 | 
				
			||||||
	var swsctx *gmf.SwsCtx
 | 
						var swsctx *gmf.SwsCtx
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						gmf.LogSetLevel(gmf.AV_LOG_ERROR)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	stat, err := os.Stat(srcFileName)
 | 
						stat, err := os.Stat(srcFileName)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		// file seems to not even exist
 | 
							// file seems to not even exist
 | 
				
			||||||
@@ -55,7 +68,12 @@ func decodePic(srcFileName string, decodeExtension string, time uint64) (pic *[]
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	cc.SetTimeBase(gmf.AVR{Num: 1, Den: 1})
 | 
						cc.SetTimeBase(gmf.AVR{Num: 1, Den: 1})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cc.SetPixFmt(gmf.AV_PIX_FMT_RGBA).SetWidth(srcVideoStream.CodecPar().Width()).SetHeight(srcVideoStream.CodecPar().Height())
 | 
						// add missing codecs in lib
 | 
				
			||||||
 | 
						var (
 | 
				
			||||||
 | 
							AV_PIX_FMT_YUVJ444P int32 = C.AV_PIX_FMT_YUVJ444P
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cc.SetPixFmt(AV_PIX_FMT_YUVJ444P).SetWidth(srcVideoStream.CodecPar().Width()).SetHeight(srcVideoStream.CodecPar().Height())
 | 
				
			||||||
	if codec.IsExperimental() {
 | 
						if codec.IsExperimental() {
 | 
				
			||||||
		cc.SetStrictCompliance(gmf.FF_COMPLIANCE_EXPERIMENTAL)
 | 
							cc.SetStrictCompliance(gmf.FF_COMPLIANCE_EXPERIMENTAL)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user