我知道我的术语不正确,但在视频方面我是一个完整的新手。
我有一个普通的 .mp4 视频文件。我使用 MP4Box 来分割视频文件,这样我就可以使用支持 MPEG dash 的视频播放器播放它。它不是通过创建多个较小的视频文件来分割的。它会创建一个比旧视频文件大一点的新的大视频文件。
我想将常规视频文件与虚线视频文件进行比较,看看 MP4Box 对它做了什么来分割它。我相信它正在向新视频文件添加某种类型的标题。显然,当我在文本编辑器中打开它时,它是不可读的。我该如何比较这些文件?
我正在尝试将 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) 我有以下命令用于从图像和 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) 如何将视频文件(例如mpeg)转换为图像集合?
理想的答案将涵盖使用可用库的C++和Java,以及如何手动从视频文件中删除单个帧以获得某些常见的视频格式.
我看到了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]的实际捕获镜头并将其发送给解码器?
我想将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插件并且工作正常
有没有办法使用 javascript 在 google 电子表格单元格中存储/检索值?我想要的:将数据存储到电子表格而不是数据库。
对于解复用器,输入是字节流.一切都只是零和一个.现在,解析器如何区分数据中的0x47和传输流头的同步字节0x47?
例如,如果demux接收的数据是0x47 0x56 0xef 0x47 ...它将如何知道哪个0x47是同步字节?
它是否在同步字节后寻找任何附加位以确保它读取的0x47确实是标头的开头?机制是什么?
对于任何解析器来说都是如此.H.264解析器检查NAL起始码.它如何区分数据中的实际起始代码和起始代码.因为对于解析器,一切都只是字节.
谢谢.
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小时连续流式传输后,寄存器溢出发生。这种理解正确吗?
背景: 我正在使用 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)