我试图解码一个JSON数组并将其放在一个结构的片中.我已经阅读了如何执行此操作,但前提是JSON数组包含键.我的JSON数组不包含键.
我已经将程序剥离到只处理JSON数据的部分.它编译,可以在下面找到.
package main
// 2014-04-19
import (
"fmt"
"encoding/json"
)
type itemdata struct {
data1 int // I have tried making these strings
data2 int
data3 int
}
func main() {
datas := []itemdata{}
json.Unmarshal([]byte(`[["7293","1434","99646"],["4657","1051","23795"]]`), &datas)
// I have tried the JSON string without the qoutes around the numbers
fmt.Println(len(datas)) // This prints '2'
fmt.Println("This prints") // This does print
for i := range datas {
fmt.Println(datas[i].data1) // This prints '0', two times
}
fmt.Println("And so does this") // …Run Code Online (Sandbox Code Playgroud) 我正在使用 ffmpeg 对来自本地 nginx rtmp 服务器的流进行转码,并将转码后的媒体发送回同一本地 rtmp 服务器。当流离线时,ffmpeg 保持活动状态。当流再次开始时,ffmpeg 会接手转码工作。
我希望 ffmpeg 在输入 rtmp 流停止时退出,但我找不到配置它来执行此操作。我浏览了手册页和在线文档。
为了完整起见,这些是我当前向 ffmpeg 提供的参数:
ffmpeg -i 'rtmp://localhost/live/ijsbeer' -s '1280x720' -vcodec 'libx264' -preset 'veryfast' -crf '25' -maxrate '2000k' -bufsize '1000.0k' -force_key_frames '0: 00:02' -max_mushing_queue_size '4096' -acodec '复制' -copyts -copytb '0' -f 'flv' 'rtmp://localhost/live/ijsbeer_720p'
让 ffmpeg 退出本身解决了我的两个问题。首先,当流式传输到 rtmp 服务器的编码器(OBS)重新启动时,ffmpeg 有时会遇到非单调的 DTS 问题。其次,我想实现一个基本的监控系统来通知我转码器中的问题。当输入流停止时使 ffmpeg 退出似乎是确定 ffmpeg 是否正在工作的最可靠方法。解析 stderr/stdout 并不可靠,因为没有明确的输出格式。
转码时我收到这些常规 stderr 行:
帧= 241 fps= 30 q=30.0 大小= 38kB 时间=00:00:09.74 比特率= 32.0kbits/s 速度= 1.2x
当我停止源流时会暂停。没有日志输出表明源流已退出。