标签: mux

FFMPEG mux视频和音频(来自另一个视频) - 映射问题

我想将视频中的音频放到另一个没有音频的视频中(在一个命令中):

ffmpeg.exe -i video1_noAudio.mov -i video2_wAudio.mov -vcodec copy -acodec copy video1_audioFromVideo2.mov
Run Code Online (Sandbox Code Playgroud)

我猜"-map"是正确的方法,但我对此感到困惑.

你能建议如何解决吗?

audio video ffmpeg map mux

64
推荐指数
2
解决办法
6万
查看次数

使用Gorilla工具包为根URL提供静态内容

我试图使用Gorilla工具包的mux来路由Go Web服务器中的URL.利用这个问题为导向,我有以下Go代码:

func main() {
    r := mux.NewRouter()
    r.Handle("/", http.FileServer(http.Dir("./static/")))
    r.HandleFunc("/search/{searchTerm}", Search)
    r.HandleFunc("/load/{dataId}", Load)
    http.Handle("/", r)
    http.ListenAndServe(":8100", nil)
}
Run Code Online (Sandbox Code Playgroud)

目录结构是:

...
main.go
static\
  | index.html
  | js\
     | <js files>
  | css\
     | <css files>
Run Code Online (Sandbox Code Playgroud)

Javascript和CSS文件的引用方式index.html如下:

...
<link rel="stylesheet" href="css/redmond/jquery-ui.min.css"/>
<script src="js/jquery.min.js"></script>
...
Run Code Online (Sandbox Code Playgroud)

当我http://localhost:8100在我的Web浏览器中访问index.html内容成功传递时,所有jscssURL都返回404.

如何让程序从static子目录中提供文件?

web-applications go mux

55
推荐指数
4
解决办法
3万
查看次数

访问处理程序中的post参数

我可以GET使用mux访问参数:

import (
    "github.com/gorilla/mux"
)
func main(){
     rtr := mux.NewRouter()
     rtr.HandleFunc("/logon", logonGet).Methods("GET")
}
func logonGet(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    login := params["login"]
}
Run Code Online (Sandbox Code Playgroud)

但无法弄清楚如何访问 POST params

func main(){
     rtr := mux.NewRouter()
     rtr.HandleFunc("/logon", logonPost).Methods("POST")
}
func logonPost(w http.ResponseWriter, r *http.Request) {
    // how to get POST parameters from request
}
Run Code Online (Sandbox Code Playgroud)

go mux

15
推荐指数
1
解决办法
1万
查看次数

我应该在golang中直接使用ServeMux或http

我想知道我是否应该创建一个新的ServeMux并将其注册到http.Server或者我应该调用http.HandleFunchttp.Handler直接?

我认为使用ServeMux的路由更好,因为http.HandleFunc显然会混淆HTTP包的全局状态,这在Go中被认为是不好的做法.然而,在许多教程中,即使是官方教程,我经常看到http.HandleFunc正在使用的路线.

这让我很奇怪:为什么一个人http.HandleFunc在有人的时候会使用ServeMux?我知道ServeMux有一些优点(例如你可以嵌套它而不必一直重复前缀)但我想知道为什么我应该选择http.HandleFunc多路复用器,特别是因为内部HandleFunc使用ServeMux.

编辑:正如评论中所承诺的那样,我已经要求在Golang-dev上弃用额外的(和无用的IMO函数),他们说没有(好吧,有人说没有).链接在这里.

http go mux

13
推荐指数
1
解决办法
2192
查看次数

在Gorilla Mux中嵌套子路由器

我一直在用gorilla/mux我的路由需求.但我注意到一个问题,当我嵌套多个Subrouters时,它不起作用.

这是一个例子:

func main() {
    r := mux.NewRouter().StrictSlash(true)
    api := r.Path("/api").Subrouter()
    u := api.Path("/user").Subrouter()
    u.Methods("GET").HandleFunc(UserHandler)
    http.ListenAndServe(":8080", r)
}
Run Code Online (Sandbox Code Playgroud)

我想使用这种方法,所以我可以委托将路由器填充到其他包中 user.Populate(api)

然而,这似乎不起作用.它只在我在链中使用单个Subrouter时才有效.

有任何想法吗?

routing go mux gorilla

12
推荐指数
1
解决办法
3909
查看次数

Go和Gorilla Mux NotFoundHandler无法正常工作

我只是不能让这个NotFoundHandler工作.我想在每个get请求上提供一个静态文件,只要它存在,否则请提供index.html.这是我目前简化的路由器:

func fooHandler() http.Handler {
  fn := func(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Foo"))
  }
  return http.HandlerFunc(fn)
}

func notFound(w http.ResponseWriter, r *http.Request) {
  http.ServeFile(w, r, "public/index.html")
}

func main() {
  router = mux.NewRouter()
  fs := http.FileServer(http.Dir("public"))

  router.Handle("/foo", fooHandler())
  router.PathPrefix("/").Handler(fs)
  router.NotFoundHandler = http.HandlerFunc(notFound)

  http.ListenAndServe(":3000", router)
}
Run Code Online (Sandbox Code Playgroud)

/ foo工作正常

/ file-that-exists工作正常

/ file-that-doesnt-exist 不起作用 - 我找不到404页面而不是index.html

那么我在这里做错了什么?

go mux gorilla

11
推荐指数
2
解决办法
1万
查看次数

Chisel:如何实现高效的单热多路复用?

我有一个表,其中表的每一行包含状态(寄存器).有逻辑选择一个特定的行.只有一行接收"选定"信号.然后访问该选定行的状态.状态的一部分作为输出连接到模块的IO,或者IO的一部分用作输入以更新状态.

如果我用电路实现这个,我会使用传递门.所选信号将导通一组传输门,这将把行的寄存器连接到总线.然后总线将连接到IO捆绑包.这是快速,小面积和低能量.

在Chisel中有一种直接的实现方法.它将所选行编码为二进制数,然后将该数字应用于传统多路复用器的选择输入.不幸的是,对于具有20到50行的表以及数百位的状态,这种实现可能非常慢,并且在面积和能量上浪费.

这个问题有两个部分:1)有没有办法在Chisel中指定总线,这样你就有传输门或传统的三态驱动器都挂在总线上?

2)如果不这样做,Chisel中有一个快速,小面积,低能量的方式吗?

谢谢

bus mux chisel one-hot-encoding

11
推荐指数
1
解决办法
944
查看次数

如何为所有API端点全局设置http.ResponseWriter Content-Type标头?

我是Go的新手,我现在用它构建一个简单的API:

package main

import (
    "encoding/json"
    "fmt"
    "github.com/gorilla/mux"
    "github.com/gorilla/handlers"
    "log"
    "net/http"
)

func main() {
    port := ":3000"
    var router = mux.NewRouter()
    router.HandleFunc("/m/{msg}", handleMessage).Methods("GET")
    router.HandleFunc("/n/{num}", handleNumber).Methods("GET")

    headersOk := handlers.AllowedHeaders([]string{"Authorization"})
    originsOk := handlers.AllowedOrigins([]string{"*"})
    methodsOk := handlers.AllowedMethods([]string{"GET", "POST", "OPTIONS"})

    fmt.Printf("Server is running at http://localhost%s\n", port)
    log.Fatal(http.ListenAndServe(port, handlers.CORS(originsOk, headersOk, methodsOk)(router)))
}

func handleMessage(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)
    message := vars["msg"]
    response := map[string]string{"message": message}
    w.Header().Set("Content-Type", "application/json") // this
    json.NewEncoder(w).Encode(response)
}

func handleNumber(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)
    number …
Run Code Online (Sandbox Code Playgroud)

rest json content-type go mux

11
推荐指数
1
解决办法
1万
查看次数

Gorilla mux可选查询值

我一直在研究Go项目,其中使用gorilla/mux作为路由器.

我需要能够拥有与路由关联的查询值,但这些值应该是可选的.这意味着我想要捕获两者/articles/123/articles/123?key=456在同一个处理程序中.

为了做到这一点,我尝试使用r.Queries接受键/值对的方法:路由器.

  Path("/articles/{id:[0-9]+}").Queries("key", "{[0-9]*?}")
Run Code Online (Sandbox Code Playgroud)

但这只使value(456)可选,但不是key.因此,无论/articles/123?key=456/articles/123?key=是有效的,但不是/articles/123.

编辑:另一个要求是,在注册路由后,我想以编程方式构建它们,r.Queries即使文档特别指出它是可能的,我似乎无法弄清楚如何使用(https://github.com/gorilla/mux #registered-urls).

@jmaloney回答有效,但不允许从名称构建URL.

go mux gorilla

10
推荐指数
3
解决办法
2万
查看次数

GAE Golang Gorilla mux - 找不到404页面

我在GAE中使用gorilla mux时遇到了一些问题.

当我尝试它时,我'找不到404页'.不调用rootHandler函数(不生成任何跟踪)

以下是我的代码的一部分,任何想法?

提前

...
    func init() {
     r := mux.NewRouter()
     r.HandleFunc("/",rootHandler)
    }
    func rootHandler(w http.ResponseWriter, r *http.Request) {
     var functionName = "rootHandler"
     c := appengine.NewContext(r)
     c.Infof(functionName+"-start")
     defer c.Infof(functionName+"-end")
...
Run Code Online (Sandbox Code Playgroud)

google-app-engine go mux

9
推荐指数
1
解决办法
2973
查看次数