- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,我正在尝试使用 OpenMax 组件和来自 GitHub 的 hello_video 示例解码视频.
我只需编辑 video.c 并替换 AVFormat 上的“main frame while” -read frame packet for read not only *.h264 files 。 (我需要阅读 mp4、mov、mkv ......)..
因此,使用我使用 ffmpeg 生成的 test.h264 文件和其他文件,一切正常,并且在屏幕上我可以看到电影。
ffmpeg -i file.mp4 -vcodec copy -vbsf h264_mp4toannexb out.h264
do{
printf("###before DO!\n");
status=av_read_frame(pFormatCtx,&packet);
//only for video
if(packet.stream_index==*video_stream_index){
printf("=>Read frame, status: %d, index: %d, stream index: %d, packet duration: %d, size: %d\n",pstatus,index++,packet.stream_index,packet.duration,packet.size);
int psize=packet.size;
int preaded=0;
double pts=packet.duration;
while(psize!=0){
buf = ilclient_get_input_buffer(video_decode, 130, 1);
buf->nFlags = 0;
buf->nOffset = 0;
uint64_t val = (uint64_t)(pts == DVD_NOPTS_VALUE) ? 0 : pts;
if(first_frame==true){buf->nFlags = OMX_BUFFERFLAG_STARTTIME;first_frame=false;}else{buf->nFlags = OMX_BUFFERFLAG_TIME_UNKNOWN;}
buf->nTimeStamp = ToOMXTime(val);
buf->nFilledLen = (psize > buf->nAllocLen) ? buf->nAllocLen : psize;
memcpy(buf->pBuffer, packet.data+preaded,buf->nFilledLen);
psize-=buf->nFilledLen;
preaded+=buf->nFilledLen;
if(psize == 0){buf->nFlags|=OMX_BUFFERFLAG_ENDOFFRAME;printf("#######################################OMX_BUFFERFLAG_ENDOFFRAME\n");}
printf("=>BUFF size: %d\n",buf->nFilledLen);
OMX_ERRORTYPE r;
if(pstatus==0){if(r=OMX_EmptyThisBuffer(ILC_GET_HANDLE(video_decode), buf) != OMX_ErrorNone){status = -6;printf("Failed, OMX_EmptyThisBuffer, error: 0x%08x , buf allocate: %d, buf lenght: %d \n", r,buf->nAllocLen,buf->nFilledLen);break;}}
}//while psize
av_free_packet(&packet);
}//if index
}//do
while(pstatus==0);
最佳答案
登录控制台显示数据正确读取并正确解析到视频解码器的输入缓冲区
你是什么意思?最有可能的是,从 mp4 解复用的数据包不是 OMX 解码器所期望的附件 b 形式,这是 .h264 文件(流)格式的自然形式。所以,在你读完一个 NALU 之后,用 00000001 (四个字节,最后一位打开)替换标题,你可能会很幸运。
其他需要考虑的事情:解码器可能会或可能不会期望第一个 I 帧的 SPS/PPS,等等......
更新: LLVM 测试套件有一个 C source file正是这样做的。您可能还对引用 AVC/h264 implementation 感兴趣进行相反的转换 - 从附件 B 到 NALU。
关于video - omxplayer AVPacket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14715483/
嗨,我正在尝试使用 OpenMax 组件和来自 GitHub 的 hello_video 示例解码视频. 我只需编辑 video.c 并替换 AVFormat 上的“main frame while”
我现在正在处理一个 FFmpeg 项目,我必须存储 AVPacket 的数据来自av_read_frame , 并将数据填充到新的 AVPacket用于后续解码。 这是我的问题:当我尝试新建和释放 A
我正在使用 ffmpeg 编码器生成 AVPackets,现在我想将它们通过 UDP 发送到另一台计算机并在那里显示它们。问题是我不知道如何将数据包转换为字节并返回。我尝试用此方法复制包: AVPac
我正在使用 android NDK 和 FFmpeg native 库开发解码器。我已经使用 Android 工具为项目提供了原生支持,并且我在 videodecoder.cpp 文件中有 C 代码。
我有一个基于 Qt 的桌面应用程序,它从网络获取声音流并使用 QAudioOutput 播放它.我想为用户提供音量控制,以便他可以降低音量。我的代码如下所示: float volume_control
我正在使用 ffmpeg 对视频帧进行编码库,生成 AVPacket带有压缩数据。 感谢最近关于 S/O 的一些建议,我正在尝试使用 WebRTC 通过网络发送该帧。图书馆 libdatachanne
我想制作一个 AVPacket 的拷贝,以便以后在需要时对其进行解码。 AVPacket来自音频流。 av_dup_packet 似乎不起作用。 AVPacket 复制构造函数不起作用。 创建我自己的
我有一个存储在 char * 中的压缩图像,我想将它放回 AVPacket,以便我可以将它放入 ffmpeg 解码器。有人可以展示如何做到这一点吗?任何示例或教程将不胜感激。 提前致谢 最佳答案 我向
我在我的应用程序中使用了 FFMPEg 代码,我需要为我的程序获取 FLV 数据包。为此,我使用 avcodec_encode_video2()。我的问题是该函数创建了 AVPacket 数据包,它不
有没有办法在解码之前将一些用户私有(private)数据附加到 AVPacket 以匹配输入 AVPacket 和解码输出 AVFrame?某种AVFrame::opaque。 具体来说,h264 码
我的程序从网络接收 aac 音频流,并使用 ffmpeg 解码流,所以我必须将流数据打包到 AVPacket 结构,我使用局部变量来执行此操作,代码如下: bool OnRecvAACStream(c
我想编写一个必须通过QT UdpSocket 接收udp 数据包的应用程序,数据包由元数据和视频组成。 视频数据与来自 ffmpeg udp 的相同溪流。 我把这个数据包和选择的视频数据分开了,现在我
我编写了一个代码来读取编码域中的视频,并能够检索帧的大小和持续时间等信息。 AVPacket 类由一个变量作为数据组成。我可以阅读它,但由于它是一个咬数组,我不能以可读格式使用它。我想用这个数据与另一
我正在使用 ffmpeg 库。我想知道一个数据包可以占用多少内存。 我调试检查 AVPacket 上的成员,它们似乎都不合理,例如 AVPacket.size,ec。 最佳答案 如果您提供自己的数据缓
有可能知道一个 AVFrame 有多少个 AVPackets 吗? 我想实现一个用户可以反向播放视频的功能。 由于某些原因,我不想将临时数据放在本地文件中,所以我想直接通过 AVPacket 实现它。
我正在使用 FFMPEG 解码 H264 流,我的代码如下 AVFormatContext *pFormatCtx = NULL; AVCodecContext *pCodecCtx = NULL;
我正在开发一种工具,它从网络接收 h.264 实时流(发送方是硬件编码器),缓冲最后 x 分钟并在触发时创建最后 x 分钟的视频文件。 我的工具能够接收实时流,还可以使用 boost::seriali
我希望能够打开带有视频文件的流,并在解码器中发送我自己的数据包,其中包含我以前使用相同编解码器从不同流中存储的数据。就像在解码器中伪造我自己的数据包一样。 我的方法是使用 H.265 将帧编码为数据包
我正在开发使用 FFMPEG API 发送 mpeg2ts 流的应用程序。(avio_open、avformat_new_stream 等) 问题是应用程序已经具有 AAC-LC 音频,因此不需要对音
我在这里指的是这个线程: Muxing AVPackets into mp4 file 那边的问题与我的问题基本相同,第一个答案看起来很有希望。 用户 pogorskiy 提供的源代码(某种伪)似乎完
我是一名优秀的程序员,十分优秀!