蓝光原版与蓝光Remux格式到底有什么区别?

蓝光原版即蓝光盘直接拷贝出来的文件,未经过任何加工处理,保留了BD盘的完整性,Remux是无损的提取出BluRay-DVD和HD-DVD里面的视频数据和音频数据,封装到我们熟悉的TS或者AVI文件中。作为比较常见的下载格式而被广大高清爱好者熟悉,虽然Remux 等于没有对原版做过任何的压缩,只是重新封装而已,但笔者在长期接触过程中,还是发现一些区别,希望和大家探讨一下。

1、音频与视频数据
在视频和音频上,原版和Remux理论上是没有区别的,因为音频和视频没有进行任何的重编码工作。但是蓝光REMUX为解决新格式音频用电脑解码时的分离和播放问题,其实提取Remux的软件tsmuxer并不支持所有的次世代音频格式,而电脑播放采用的解码器也并不支持所有的次世代音频格式,特别是TrueHD的音轨,所以常常 Remux会采取折中方案,多压几条音轨。目前TVX,宇脉等高清播放机均实现了次世代音频的源码输出,但是在播放过程中,笔者发现REMUX的片源只能源码输出DTSHD TRUEHD的核心CORE,即音效只能达到5.1,并非真正的次世代音效,而蓝光原盘则可以实现真正的次世代源码输出,问题,是高清播放机对REMUX的片源的次世代音轨支持有问题,还是REMUX格式本身存在问题?

2、时间轴
播放机客户在播放REMUX的片子的过程中,快进会发现快进很不准确,并且无法后退,个别片子甚至会出现时间识别错误,而蓝光原盘快进快退操作都没有任何问题,REMUX后的片子为什么会出现这种问题,是TS格式的问题还是制作者的问题?
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的示例代码,用于将 GB28181 视频流转换为 WebSocket-FLV 格式并发送到客户端: ```go package main import ( "fmt" "net" "github.com/mengzhuo/joy4/format/flv/flvio" "github.com/mengzhuo/joy4/format/ts" "github.com/notedit/lal/pkg/avc" "github.com/notedit/lal/pkg/base" "github.com/notedit/lal/pkg/remux" "github.com/notedit/lal/pkg/rtmp" "github.com/notedit/lal/pkg/webrtc" ) func main() { // 创建 GB28181 视频流监听器 listener, err := net.Listen("tcp", "0.0.0.0:8000") if err != nil { fmt.Println("Error listening:", err.Error()) return } defer listener.Close() // 设置 WebSocket-FLV 的 URL url := "ws://localhost:8080" // 创建 WebSocket-FLV 客户端 client, err := webrtc.NewWebSocketFLVClient(url) if err != nil { fmt.Println("Error creating WebSocket-FLV client:", err.Error()) return } defer client.Close() // 循环接收 GB28181 视频流并转换为 WebSocket-FLV 格式发送给客户端 for { // 等待 GB28181 视频流连接 conn, err := listener.Accept() if err != nil { fmt.Println("Error accepting:", err.Error()) continue } // 创建 GB28181 视频流解码器 dec := ts.NewDecoder(conn) // 创建 WebSocket-FLV 视频流编码器 enc := remux.NewMuxer(base.FLV) // 监听 GB28181 视频流并转换为 WebSocket-FLV 格式发送给客户端 for { // 读取 GB28181 视频流数据 pkt, err := dec.ReadPacket() if err != nil { fmt.Println("Error reading packet:", err.Error()) break } // 解码 GB28181 视频流数据 frame, err := avc.ParseAVCFrame(pkt.Data) if err != nil { fmt.Println("Error parsing frame:", err.Error()) continue } // 将解码后的数据转换为 WebSocket-FLV 格式 flvTag := flvio.NewTag() flvTag.Timestamp = uint32(pkt.Time / 1000) flvTag.Type = flvio.TAG_TYPE_VIDEO flvTag.Data = frame.Data enc.WriteTag(flvTag) // 发送转换后的数据给客户端 client.WritePacket(flvTag) } // 关闭 GB28181 视频流连接 conn.Close() } } ``` 这段代码使用了 Golang 的 lal 框架和 joy4 库,实现了 GB28181 视频流与 WebSocket-FLV 格式的转换。具体实现步骤包括创建 GB28181 视频流监听器和 WebSocket-FLV 客户端,循环接收 GB28181 视频流并解码,将解码后的数据转换为 WebSocket-FLV 格式并发送给客户端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值