标签: mpeg

如何查看 .mp4 视频文件的“代码”?

我知道我的术语不正确,但在视频方面我是一个完整的新手。

我有一个普通的 .mp4 视频文件。我使用 MP4Box 来分割视频文件,这样我就可以使用支持 MPEG dash 的视频播放器播放它。它不是通过创建多个较小的视频文件来分割的。它会创建一个比旧视频文件大一点的新的大视频文件。

我想将常规视频文件与虚线视频文件进行比较,看看 MP4Box 对它做了什么来分割它。我相信它正在向新视频文件添加某种类型的标题。显然,当我在文本编辑器中打开它时,它是不可读的。我该如何比较这些文件?

video mpeg video-streaming mpeg-dash

6
推荐指数
1
解决办法
9647
查看次数

MediaFoundation SinkWriter:启用 MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS 会导致 WriteSample 失败并出现 E_FAIL 错误

我正在尝试将 RGB/NV12 样本编码为 h264,并通过实现 IMFByteStream 通过 SinkWriter 通过 WebSocket 流式传输编码的视频。在这个实验中,我使用像素着色器将 RGB32 样本转换为 NV12 样本。输出格式为带有 FMPEG4 容器的 H264。

我也尝试过直接输入 RGB 样本。通过软件方法它对 RGB 和 NV12 样本都可以正常工作,但是当取消注释下面提到的行时,WriteSample 失败并出现 E_FAIL 错误。不过,我正在正确设置 MF_SINK_WRITER_D3D_MANAGER。

COM_CHECK(attribs->SetUINT32(MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, TRUE));
Run Code Online (Sandbox Code Playgroud)

MFtrace 日志:

59980,EB60 10:18:27.65002 ### Exiting: traced process has exited
CMFPlatExportDetours::MFStartup @ Version=0x00020070, dwFlags=0x00000000
59980,EB60 10:18:27.65448 COle32ExportDetours::CoCreateInstance @ Created {60F9F51E-4613-4B35-AE88-332542B567B8} MF Fragmented MPEG4 Sink Class Factory (C:\WINDOWS\System32\mfmp4srcsnk.dll) @04B80148 - traced interfaces:
59980,EB60 10:18:27.65700 COle32ExportDetours::CoCreateInstance @ Created {9A02E012-6303-4E1E-B9A1-630F802592C5} Packed Property Storage Object (C:\WINDOWS\system32\propsys.dll) @012D5FEC - traced interfaces:
59980,EB60 10:18:27.65931 COle32ExportDetours::CoCreateInstance @ …
Run Code Online (Sandbox Code Playgroud)

directx mpeg h.264 ms-media-foundation

6
推荐指数
0
解决办法
352
查看次数

使用 ffmpeg 从图像和 MP3 文件创建与 iPhone 兼容的视频

我有以下命令用于从图像和 MP3 文件创建 MP4 视频文件,它在桌面和 Android 手机上的 Chrome 浏览器中播放良好 - 但在 iPhone 10 上不起作用。我需要一些额外的编解码器或设置来使其与 iPhone 兼容吗?为了更广泛的兼容性,我应该将其转换为 MPEG 文件吗?

ffmpeg -loop 1 -i 6f4aa5dfefc4dd32186f41315ad9d1e2-0.png -i "music.mp3" -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest aa-image0.mp4
Run Code Online (Sandbox Code Playgroud)

以下是用于创建 MP4 视频的输入MP3 文件的 ffprobe 详细信息以及该输出文件的 ffprobe :

Input #0, wav, from 'download0.mp3':
  Duration: 00:00:35.94, bitrate: 384 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 24000 Hz, 1 channels, s16, 384 kb/s
Run Code Online (Sandbox Code Playgroud)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'aa-image0.mp4':
  Metadata:
    major_brand …
Run Code Online (Sandbox Code Playgroud)

video mp4 mpeg ffmpeg codec

6
推荐指数
1
解决办法
728
查看次数

如何将视频文件(例如mpeg)转换为图像集合?

如何将视频文件(例如mpeg)转换为图像集合?

理想的答案将涵盖使用可用库的C++和Java,以及如何手动从视频文件中删除单个帧以获得某些常见的视频格式.

c++ java video mpeg

5
推荐指数
1
解决办法
2835
查看次数

MPEG1运动估计/补偿

我看到了MPEG 1的运动估计/补偿的以下解释,只是想知道它是否正确:

为什么我们不编码当前块和参考块之间的原始差异? 因为残差的数字通常要小得多.例如,假设一个物体在整个图像中加速.11帧中的x位置是以下数字.12 16 20 25 31 38 48 59 72 84 96原始差异为x 4 4 5 6 7 10 11 13 12 12因此预测值为xx 20 24 30 37 45 58 70 85 96因此残差为xx 0 1 1 1 3 1 2 -1 0

帧[i + 1] =(帧[i] - 帧[i-1])+帧[i]预测是将前两个参考帧的运动矢量加到最近的参考帧上吗?然后我们编码预测残差,它是帧[i + 1] - 预测帧[i + 1]的实际捕获镜头并将其发送给解码器?

mpeg

5
推荐指数
1
解决办法
918
查看次数

如何将mpg嵌入我的网页

我想将mpg(兼容DVD的mpeg2)电影文件嵌入到我的网页中.我没有机会将这些视频转换为任何其他格式.此网站仅供个人使用,因此任何类型的解决方案都是完美的.

真的适合任何建议或解决方案.

这是我的代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<body>

<embed src="my_video.mpg" autostart="false" height="350" width="500" />

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

解决了:

我对这个问题的解决方案是我必须为我的浏览器重新安装wmp插件并且工作正常

html javascript php mpeg

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

在 Google 电子表格中存储/检索数据

有没有办法使用 javascript 在 google 电子表格单元格中存储/检索值?我想要的:将数据存储到电子表格而不是数据库。

javascript mpeg google-sheets

5
推荐指数
1
解决办法
5122
查看次数

解复用器如何区分作为同步字节的0x47和作为数据的0x47?

对于解复用器,输入是字节流.一切都只是零和一个.现在,解析器如何区分数据中的0x47和传输流头的同步字节0x47?

例如,如果demux接收的数据是0x47 0x56 0xef 0x47 ...它将如何知道哪个0x47是同步字节?

它是否在同步字节后寻找任何附加位以确保它读取的0x47确实是标头的开头?机制是什么?

对于任何解析器来说都是如此.H.264解析器检查NAL起始码.它如何区分数据中的实际起始代码和起始代码.因为对于解析器,一切都只是字节.

谢谢.

video parsing mpeg transport-stream h.264

5
推荐指数
1
解决办法
909
查看次数

PCR的最大值

MPEG中的节目时钟参考(PCR)的最大值是多少?

我了解它是从27MHz时钟派生而来的,该时钟定期加载到42位寄存器中。

PCR(i)=PCR_Base(i) * 300 + PCR_Ext(i)

其中,PCR_Base装入33位寄存器中,而PCR_Ext装入9位寄存器中。

因此,PCR wrt 27MHz时钟的最大值为:

PCR =(2 ^ 33-1)* 300 +(2 ^ 9-1)= 2,576,980,374,811。

=>(2,576,980,374,811 / 27,000,000)= 95443.7s = 1590.7分钟= 26.5小时

26.5小时连续流式传输后,寄存器溢出发生。这种理解正确吗?

mpeg

5
推荐指数
1
解决办法
1796
查看次数

MediaFoundation:注册自定义 ClassFactory 不起作用

背景: 我正在使用 SinkWriter 将 NV12 缓冲区编码为包装在 MPEG4 容器中的 h264 视频流。一切正常,但有一个问题,因为 SinkWriter 抽象了低级编码器配置,我无法控制 GOP 大小、B 画面计数、CODECAPI_AVEncCommonRateControlMode 等属性。

问题是因为SinkWriter仅在SetInputMediaType调用之后实例化编码器转换,并且只有在该点之后我们才能获得CodecAPI实例。因此,在这一切发生之前,我们无法控制编码器并配置必要的道具,它也永远不会通过 CodecAPI 实例对编码器进行进一步更改。

实验: 我尝试了 PropertyStore( MF_SINK_WRITER_ENCODER_CONFIG ) 方法,但似乎没有任何变化(这可能是平台/编码器特定的行为),我还看到很多人抱怨这些 API 的不可预测行为。然后,我遇到了这个MSDN 线程(将近 7 年前的帖子),其中用户描述了他如何通过在 Windows7 机器上本地注册自定义类工厂来处理这个问题。

问题:在MSDN线程作为参考,我想实现的IClassFactory并通过注册它MFTRegisterLocal但功能的CreateInstance永远不会得到所谓的对我(的Windows 10的机器)。我只得到为 IID_IClassFactory 和 IID_IMFAttributes 接口调用的 QueryInterface 方法。而且,SinkWriter 似乎正在自行获取 MFT。

我知道我可能做错了什么,而且我不是 COM 专家。有没有其他方法可以实现这一目标?

自定义类工厂实现:

class MyClassFactory : public IClassFactory  {

public:
MyClassFactory () : _cRef(1) {}

~MyClassFactory() {}

// Only this method is getting called …
Run Code Online (Sandbox Code Playgroud)

mpeg video-encoding h.264 ms-media-foundation

5
推荐指数
1
解决办法
134
查看次数