求解读JAVA代码,为什么MP4文件不能播放? 12C

下载的一个压缩包(压缩包内含mp4文件、字幕文件等),压缩包有密码,android程序用密码打开压缩文件,并执行一系列操作后,程序自动播放压缩包内的MP4文件,但MP4文件不能直接使用播放器播放,求解答如何能让mp4文件用播放器播放 。。。谢谢 。。。这里是完整代码下载链接:点击下载完整代码,(用JD-GUI直接查看Jar内的代码、0000208821-DF705DD4是去掉了扩展名的压缩文件)

下面是部分代码(代码位于jar文件内的nc.class):

import android.widget.Toast;
import com.is.piano.base.ISApp;
import com.ispiano.crc64.Algorithm;
import java.io.File;
import java.io.PrintStream;
import java.util.List;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.FileHeader;
import net.lingala.zip4j.model.ZipParameters;

public class nc
{
  public static boolean a(String paramString1, String paramString2)
  {
    long l1 = System.currentTimeMillis();
    ZipFile localZipFile;
    File localFile;
    try
    {
      localZipFile = new ZipFile(paramString1);
      localZipFile.setFileNameCharset("GBK");
      if (localZipFile.isValidZipFile())
        break label101;
      mh.b(paramString1);
      throw new ZipException("\u538B\u7F29\u6587\u4EF6\u4E0D\u5408\u6CD5,\u53EF\u80FD\u88AB\u635F\u574F.");
    }
    catch (ZipException localZipException)
    {
      localZipException.printStackTrace();
      localFile = new File(paramString2);
      if (!localFile.exists())
        break label99;
    }
    File[] arrayOfFile;
    int i;
    if (localFile.isDirectory())
    {
      arrayOfFile = localFile.listFiles();
      i = arrayOfFile.length;
    }
    for (int j = 0; ; j++)
    {
      if (j >= i)
      {
        label99: return false;
        label101: if (localZipFile.isEncrypted())
          localZipFile.setPassword("ISPiano Zhang");
        List localList = localZipFile.getFileHeaders();
        long l2 = 0L;
        for (int k = 0; ; k++)
        {
          if (k >= localList.size())
          {
            if (l2 <= mh.b())
              break;
            return false;
          }
          l2 += ((FileHeader)localList.get(k)).getUncompressedSize();
        }
        localZipFile.extractAll(paramString2);
        mh.b(paramString1);
        System.out.println("\u89E3\u538B\u8017\u65F6\uFF1A" + (System.currentTimeMillis() - l1));
        return true;
      }
      arrayOfFile[j].delete();
    }
  }

  public static boolean a(String paramString1, String paramString2, String paramString3)
  {
    System.out.println("unzipUnfinishFile," + paramString1);
    while (true)
    {
      int i;
      try
      {
        String str1 = mh.c() + "/ispiano/package_cache/" + paramString1;
        ZipFile localZipFile = new ZipFile(str1);
        if (!localZipFile.isValidZipFile())
          return false;
        localZipFile.setPassword("ISPiano Zhang");
        List localList = localZipFile.getFileHeaders();
        Algorithm localAlgorithm = new Algorithm();
        i = 0;
        if (i < localList.size())
          continue;
        eg localeg = new eg();
        localeg.a(Long.parseLong(paramString3.substring(0, 8) + "00"), paramString2);
        localeg.g();
        mh.b(str1);
        new File(mh.c() + "/ispiano/package_cache/" + "dir_" + paramString1).delete();
        return true;
        FileHeader localFileHeader = (FileHeader)localList.get(i);
        String str2 = localFileHeader.getFileName();
        long l = localFileHeader.getUncompressedSize();
        String str3 = localAlgorithm.getFileName(paramString2 + paramString3 + str2);
        File localFile = new File(mh.c() + "/ispiano/video_cache/" + str3);
        mi.c("jing", str3 + "," + str2 + "   " + localFile.length() + "," + l);
        if ((!localFile.exists()) || (localFile.length() != l))
        {
          mh.b(mh.c() + "/ispiano/video_cache/" + str3);
          if (mh.b() >= l)
            continue;
          Toast.makeText(ISApp.a(), 2131230828, 0).show();
          return false;
          mh.a(mh.c() + "/ispiano/package_cache/" + "dir_" + paramString1);
          mh.a(mh.c() + "/ispiano/video_cache/");
          localZipFile.extractFile(str2, mh.c() + "/ispiano/package_cache/" + "dir_" + paramString1);
          new File(mh.c() + "/ispiano/package_cache/" + "dir_" + paramString1 + "/" + str2).renameTo(new File(mh.c() + "/ispiano/video_cache/" + str3));
        }
      }
      catch (ZipException localZipException)
      {
        localZipException.printStackTrace();
        return false;
      }
      i++;
    }
  }

  public static boolean b(String paramString1, String paramString2)
  {
    try
    {
      ZipFile localZipFile = new ZipFile(paramString2);
      ZipParameters localZipParameters = new ZipParameters();
      localZipParameters.setCompressionMethod(8);
      localZipParameters.setCompressionLevel(5);
      localZipFile.addFolder(paramString1, localZipParameters);
      return true;
    }
    catch (ZipException localZipException)
    {
      localZipException.printStackTrace();
    }
    return false;
  }

  public static boolean c(String paramString1, String paramString2)
  {
    try
    {
      new ZipFile(paramString1).extractAll(paramString2);
      return true;
    }
    catch (ZipException localZipException)
    {
      localZipException.printStackTrace();
    }
    return false;
  }
}

3个回答

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/* 创建VideoView对象 /
final VideoView videoView = (VideoView) findViewById(R.id.VideoView01);
/
设置路径 /
videoView.setVideoPath("/sdcard/test.mp4");
/
设置模式-播放进度条 */
videoView.setMediaController(new MediaController(Activity01.this));
videoView.requestFocus();
videoView.start();
}
你都没有加载Android内置的视频播放器,系统也不会从你的压缩文件里面加载,这是逻辑问题

l2walker
l2walker 含完整代码的jar文件已经上传了,见主贴上百度网盘下载。视频文件应该是MP4视频格式的,已经用相关软件查看过文件结构了。我也上传了一个压缩包,含该网站完整的视频文件、字幕文件等。谢谢呀,有时间就帮我看看哈
接近 5 年之前 回复
u011042435
一一叶 回复l2walker: 这样的话,你这个问题就大了,那你告一段代码有什么有,按你说的MP4文件的可能性太多,有可能是别的文件修改了扩展名,至于之前的文件不知道什么文件,自己猜。一种情况是他就是MP4只是用的比较特殊的视频编码格式,至少不是常有的编码格式,第三种,那就是加密的MP4文件
接近 5 年之前 回复
l2walker
l2walker 我的问题指的是下载的MP4文件为什么用手机或电脑内安装的通用播放器(如QQ影音播放器等)均不能播放??? 我的理解是该MP4文件是经过程序特殊处理过的,所以通用播放器无法播放该MP4文件,而该专用程序是可以播放的。我提供了代码,就是想搞清楚如何修改MP4文件,让通用播放器也能播放这个MP4文件。帮帮我呀,谢谢啦。没专门学过java ...
接近 5 年之前 回复

你学习一下怎么播放mp4然后迁到这个功能就好了

l2walker
l2walker 我的理解是该MP4文件是经过程序特殊处理过的,所以通用播放器无法播放该MP4文件,而该专用程序是可以播放的。我提供了代码,就是想搞清楚如何修改MP4文件,让通用播放器也能播放这个MP4文件
接近 5 年之前 回复
l2walker
l2walker 我的问题指的是下载的MP4文件为什么用手机或电脑内安装的通用播放器(如QQ影音播放器等)均不能播放??? 我的理解是该MP
接近 5 年之前 回复

需要下载DVE转换软件,视频文件,必须转换时可以使用!你是MP4转换DVD格式就行,再转换DVI,再转换MP4,这样,才行,

l2walker
l2walker 可以详细地讲一下吗?最好结合代码,谢谢
接近 5 年之前 回复
l2walker
l2walker 你好,你是看完 java 代码后,得出的结论吗 ?
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java程序源代码mp3播放器
java程序MP3播放器源代码急求,不用JMF,类似酷狗的播放器的源代码,比酷狗简单,只有播放面板,歌曲列表面板,歌词显示面板。播放面板有播放进度条,能控制播放,只要播放,暂停,停止按钮。点歌曲列表中的歌曲然后点播放就能播放然后歌词同步显示的那种。歌曲列表的歌曲来源本地指定路径文件。
MP4录像过程中断电,moov box没有写入,导致mp4文件无法播放
MP4录像过程中断电,moov box没有写入,导致mp4文件无法播放 目前有一个方法就是从损坏的MP4文件中分离出视音频数据,然后通过ffmpeg 将视音频重新合成一个新的mp4文件。 想问下,有没有其它更简单的方法,比如根据index信息,直接重构moov box,然后 添加到MP4的尾部,我们的MP4的moov结构放在文件尾部(某些MP4文件moov头部), 第二种方法不知道有没有可能。 或者谁有更好的处理方法,求不吝赐教,谢谢!
求大佬解答怎么获取链接中MP4的资源文件地址,或者可行的办法。
``` <script language='javascript'>jwplayer("divPlayer").setup({flashplayer: "/jwplayer/jwplayer.flash.swf",primary: 'flash',type: 'rtmp',streamer:"rtmp://lb11.bgf1.com:1935/vod/_definst_/?pid=1&fsn=5115910&otp=DB126FC530074107B72CFB9D436749&memberID=4924375&sotype=1",file: "mp4:2019/3/1122/ssni00619/ssni00619.mp4",width: '100%',rtmp: {bufferlength: 0.1},aspectratio: '16:9', stretching: "exactfit",autostart: 'true', });</script> ``` 本人java爬虫,随便玩玩,但无法获得该mp4的资源链接。求大佬解答或者有什么其他方法下载到该MP4文件??
页面播放MP4&MP3都没有声音
今天接手了一个IFC的项目,无非就是修修改改,但是当领导要求更换Video视频的时候出问题了,发现页面无论播放MP4还是MP3,都没有声音~~~ 确认不是muted和代码出错。。极其头痛,求大神相助!!!
java 怎样将视频编码为mpeg4的mp4文件转成编码为h264
前端是用H5写得video标签 只能正常播放h264编码的MP4 mpeg4编码的MP4只有声音没有画面 百度了一下都是工具转的 用JAVA该怎么转
求一个springboot能播放服务器某一个目录里面的mp4文件的demo
![图片说明](https://img-ask.csdn.net/upload/201908/17/1566014855_213403.jpg) 求一个springboot能播放服务器某一个目录里面的mp4文件的demo。我用的浏览器版本是google 版本 76.0.3809.100(正式版本) (64 位)
ffmpeg linux下运行java代码多个ts合成mp4 运行不报错 但是视频没保存 怎么回事?
ffmpeg linux下运行java代码多个ts合成mp4 运行不报错 但是视频没保存 怎么回事? 运行拼接的命令可以生成保存视频
SpringMVC解析MP4文件时报APR error: -730054或APR error: -730053异常,Chrome和IE能显示视频,Firefox显示不了
我重写了JstlView这个类,类名为DefaultJstlView,实现了里的checkResource方法,我用SpringMVC的DefaultJstlView来解析.jsp、.mp4视图,Chrome浏览器、IE浏览器、Firefox浏览器访问视频,结果用Chrome和IE测试时服务器报 APR error: -730054的异常,但能显示MP4视频文件,Firefox测试时却显示没有找到支持的视频格式和MINE类型,服务器也报 APR error: -730054的异常,怎么让Firefox浏览器在报 APR error: -730054的异常时能正常显示视频? 以下是错误信息: org.apache.catalina.connector.ClientAbortException: java.io.IOException: APR error: -730054 at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:396) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:381) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:310) at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:421) at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:409) at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:97) at org.apache.catalina.servlets.DefaultServlet.copyRange(DefaultServlet.java:2219) at org.apache.catalina.servlets.DefaultServlet.copy(DefaultServlet.java:2053) at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:1015) at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:410) at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) at org.apache.catalina.servlets.DefaultServlet.service(DefaultServlet.java:390) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:716) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:358) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318) at org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler.handleRequest(DefaultServletHttpRequestHandler.java:122) at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:716) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318) at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1228) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1152) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2527) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2516) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)
java怎么把MP3的格式转成pcm的格式,求大神解决,最好有代码,急急急!!!!!
最近做一个java项目,需要用到pcm文件格式的数据,但原始数据是mp3格式的,求java实现 mp3文件转pcm文件
android上使用MP4v2打包h264+aac,数据错误,不能播放生成的mp4文件
大家好,我在android上写了一个视频录像程序,视音频数据(h264+aac)保存在两个队列里,我想要用MP4v2,开两个线程把数据打包成MP4视频文件,结果发现生成的视频不能使用VideoView播放,去SD卡找到生成的视频文件,使用小米视频能播放,却没有声音,数据也有错误——视频时长显示为11:35:36,实际录像时长只有几秒,能播放的也是那几秒。 网上能查的资料很少,github上也没有可供参考的项目。我自己瞎改了一下参数,没有效果。测试后发现不写入音频数据的话,可以正常播放(没有声音),一写入音频数据,或者说调用了MP4AddAudioTrack找到audio的trackId就会出现该问题,猜测是数据写入错误,具体原因还不清楚,也想不出什么解决方法。请问有哪些可能的原因和解决问题的方向吗?(工作的一个问题,只能用MP4v2,不能用ffmpeg) 已经被这个问题困扰了很久了,所以把全部C币都拿出来悬赏,也不知道大家在意不在意这个C币,希望有了解MP4v2的大神帮忙解惑,万分感谢! --------------------------- 如果这个问题比较复杂,或者说可能的原因有很多,一下子说不完,那么可以给个学习方向上的建议吗?比如应该去哪里学习、补充哪些知识之类,对这个问题,我真的有一种无从下手的感觉。只要给我一个研究方向/建议,我也很感激了!
将H264文件转换为Mp4文件
实现h264文件转换为mp4文件,不需要播放出来。用getnextnal()函数实现,不要用ffmpeg函数做。
java运用FFmpeg实现本地两个MP4视频文件的合并
java如何运用FFmpeg实现本地两个MP4视频文件的合并
java基于http协议的 mp4视频 的拖拽播放 ,java后台的
想做一个mp4视频实时拖拽播放的一个功能,求思路或可行例子!
java swing mp3音频播放问题
想要实现本地文件中的录音文件(文件为MP3格式)播放,下面是我自己定义的播放监听的部分代码,求大神补全下面的play方法和pause方法 package MusicFramework; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFileChooser; public class AudioPlay implements ActionListener { JFileChooser fc = new JFileChooser(); @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getActionCommand().equals("openfileBtn")) { //点击打开播放文件按钮后的动作 //播放音频文件按钮可以启动 QueryByHumming.openfileBtn.setEnabled(false); QueryByHumming.playBtn.setEnabled(true); QueryByHumming.pauseBtn.setEnabled(false); //调用文件选择方法 openfile(); }else if(e.getActionCommand().equals("playBtn")){ //点击播放音频文件按钮的动作 QueryByHumming.openfileBtn.setEnabled(true); QueryByHumming.playBtn.setEnabled(false); QueryByHumming.pauseBtn.setEnabled(true); //调用播放音频的方法 play(); }else if(e.getActionCommand().equals("pauseBtn")){ //调用停止播放音频的方法 pause(); } } //选择音频文件 public void openfile(){ fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); int intRetVal = fc.showOpenDialog(QueryByHumming.pl3); if( intRetVal == JFileChooser.APPROVE_OPTION){ QueryByHumming.text3.setText(fc.getSelectedFile().getPath()); } } //播放音频文件 public void play(){ } //暂停播放 public void pause(){ } }
Jwplayer 两个mp4文件,一个可以播放,一个不可以播放
大家好,我现在的网页采用jwplayer播放mp4文件,一个可以播放,一个不可以播放。 求解决思路!谢谢! 1)两个文件在本地采用播放软件,如系统自带WMP的都可以正常播放。 2)两个文件的编码格式是一样的,详情如下:(右侧,who.mp4为正常播放的文件) ![图片说明](https://img-ask.csdn.net/upload/201505/06/1430877912_87425.png) 完整信息如下: General Complete name : possi.mp4 Format : MPEG-4 Format profile : Base Media / Version 2 Codec ID : mp42 File size : 69.4 MiB Duration : 5mn 36s Overall bit rate : 1 727 Kbps Video ID : 1 Format : AVC Format/Info : Advanced Video Codec Format profile : Baseline@L3.1 Format settings, CABAC : No Format settings, ReFrames : 1 frame Codec ID : avc1 Codec ID/Info : Advanced Video Coding Duration : 5mn 36s Bit rate mode : Variable Bit rate : 1 566 Kbps Width : 1 280 pixels Height : 720 pixels Display aspect ratio : 16:9 Frame rate mode : Variable Frame rate : 30.300 fps Minimum frame rate : 15.150 fps Maximum frame rate : 30.300 fps Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 0.056 Stream size : 62.9 MiB (91%) Audio ID : 2 Format : AAC Format/Info : Advanced Audio Codec Format profile : LC Codec ID : 40 Duration : 5mn 36s Bit rate mode : Constant Bit rate : 158 Kbps Nominal bit rate : 192 Kbps Channel(s) : 2 channels Channel positions : Front: L R Sampling rate : 44.1 KHz Compression mode : Lossy Stream size : 6.35 MiB (9%) 可以播放的视频格式: General Complete name : who.mp4 Format : MPEG-4 Format profile : Base Media / Version 2 Codec ID : mp42 File size : 96.2 MiB Duration : 2mn 41s Overall bit rate : 4 981 Kbps Encoded date : UTC 2015-03-19 14:48:59 Tagged date : UTC 2015-03-19 14:49:01 Video ID : 2 Format : AVC Format/Info : Advanced Video Codec Format profile : Main@L4.0 Format settings, CABAC : No Format settings, ReFrames : 2 frames Format settings, GOP : M=2, N=48 Codec ID : avc1 Codec ID/Info : Advanced Video Coding Duration : 2mn 41s Duration_LastFrame : 5mn 4s Bit rate mode : Variable Bit rate : 4 869 Kbps Width : 1 920 pixels Height : 1 080 pixels Display aspect ratio : 16:9 Frame rate mode : Constant Frame rate : 23.976 fps Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 0.098 Stream size : 94.0 MiB (98%) Title : Apple 视频媒体处理程序 Language : English Encoded date : UTC 2015-03-19 14:41:04 Tagged date : UTC 2015-03-19 14:49:01 Color primaries : BT.709-5, BT.1361, IEC 61966-2-4, SMPTE RP177 Transfer characteristics : BT.709-5, BT.1361 Matrix coefficients : BT.709-5, BT.1361, IEC 61966-2-4 709, SMPTE RP177 Audio ID : 1 Format : AAC Format/Info : Advanced Audio Codec Format profile : LC Codec ID : 40 Duration : 2mn 41s Bit rate mode : Constant Bit rate : 107 Kbps Nominal bit rate : 128 Kbps Channel(s) : 2 channels Channel positions : Front: L R Sampling rate : 44.1 KHz Compression mode : Lossy Stream size : 2.07 MiB (2%) Title : Apple 声音媒体处理程序 Language : English Encoded date : UTC 2015-03-19 14:41:04 Tagged date : UTC 2015-03-19 14:49:01 采用对比软件比较,仅有细小的差别,格式是一致的 从后台请求来看,也没有发送解析错误的报告,只是视频显示播放不了 ![图片说明](https://img-ask.csdn.net/upload/201505/06/1430877707_423015.png)
为什么很多视频网站都使用M3U8,相比与mp4直传视频流有何优势
我在一个视频网上观看M3U8容易卡顿, 卡顿原因好像是当前的片段播放完了,才去加载下一片段,没有预读取视频, 这样子的体验还不如用MP4,所以问题来了,为什么很多网站都要M3U8, 是占用的带宽更小?还是其他,请高人指点
调用xvid库压缩yuyv视频成MP4格式为什么播放不了?
最近做视频压缩程序,调用的是xvid1.3.3库,将摄像头采集的视频yuyv格式压缩成mp4流,直接写入到文件,但是压缩完的MP4文件在移动设备上不能正常播放,播放速度不一样,进度条不动,甚至无法播放,在电脑上也就是potplayer能播放,压缩后的MP4信息不全,没有比特率,时长等信息,难道是xvid压缩视频时没有MP4文件头引起的吗?有做过类似的开发人员吗?求帮助,感谢!
利用MP4v2录制MP4文件视频播放快问题
``` 录制场景是这样的,对一个视频会议进行录像,音频是混音后的pcmu格式的语音,视频在同一时刻,只录制某一个成员的视频,因此MP4视频构成就是 A成员视频+B成员视频+c成员视频 现在使用mp4v2进行录像,录制出来后的问题是:视频播放比音频快 这个问题怎么解决呢,视频代码如下: uint32_t datalen = *len - 12; int iframe = 0; uint32_t size; uint8_t *hdr = NULL; uint8_t fragment_type; uint8_t nal_type; uint8_t start_bit; switch_rtp_hdr_t *rtp_hdr = data; mp4_file_context_t *context = handle->private_info; uint8_t payload_number = 0; switch_mutex_lock(context->mutex); if (!context->video) { context->video = MP4AddH264VideoTrack(context->fd, 90000, 90000/FPS, 352, 288, H264_PROFILE_BASELINE, 0xe0, 0x1f, 3); if (context->video == MP4_INVALID_TRACK_ID) { switch_mutex_unlock(context->mutex); return SWITCH_STATUS_FALSE; } MP4SetVideoProfileLevel(context->fd, 0x7F); context->video_hint = MP4AddHintTrack(context->fd, context->video); if (context->video_hint == MP4_INVALID_TRACK_ID) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "invalid hint track!\n"); switch_mutex_unlock(context->mutex); return SWITCH_STATUS_FALSE; } MP4SetHintTrackRtpPayload( context->fd, context->video_hint, "H264", &payload_number, 20480, // magic number, maximum payload size, can be 0? FIXME NULL, false, false); context->video_sample_id = 1; } switch_mutex_unlock(context->mutex); hdr = ((uint8_t *)data + 12); fragment_type = hdr[0] & 0x1f; nal_type = hdr[1] & 0x1f; start_bit = hdr[1] & 0x80; iframe = (((fragment_type == 28 || fragment_type == 29) && nal_type == 5 && start_bit == 128) || fragment_type == 5 || fragment_type ==7 || fragment_type ==8) ? 1 : 0; tp_hdr->m, start_bit, iframe); if (switch_buffer_inuse(context->buf) == 0) { MP4AddRtpVideoHint(context->fd, context->video_hint, iframe, (uint8_t)MP4_INVALID_DURATION); } MP4AddRtpPacket(context->fd, context->video_hint, rtp_hdr->m, (uint8_t)MP4_INVALID_DURATION); MP4AddRtpSampleData(context->fd, context->video_hint, context->video_sample_id++, switch_buffer_inuse(context->buf), datalen + 4); size = htonl(datalen); switch_buffer_write(context->buf, &size, 4); switch_buffer_write(context->buf, hdr, datalen); switch_mutex_lock(context->mutex); if (fragment_type == 7 && !context->sps_set) { //sps MP4AddH264SequenceParameterSet(context->fd, context->video, hdr, datalen); context->sps_set = 1; } else if (fragment_type == 8 && !context->pps_set) { //pps MP4AddH264PictureParameterSet(context->fd, context->video, hdr, datalen); context->pps_set = 1; } if (nal_type == 7 || nal_type == 8 || rtp_hdr->m == 0) { } else { uint32_t used = switch_buffer_inuse(context->buf); const void *data; switch_buffer_peek_zerocopy(context->buf, &data); MP4WriteRtpHint(context->fd, context->video_hint, MP4_INVALID_DURATION, iframe); MP4WriteSample(context->fd, context->video, data, used, DURATION, 0, iframe); switch_buffer_zero(context->buf); } switch_mutex_unlock(context->mutex); *len = datalen; // FIXME ```
pyinstaller打包py成exe后音乐文件播放异常,pygame.error
已解决 虽然不知道什么原因 用pyinstaller打包以后pygame不支持播放mp3和ogg文件 我把音乐文件转换成wav格式就成功了 所以mp3和ogg在pycharm里可以正常使用,不过如果要转成exe的话还得先把音乐文件统一转化成wav才行 问题描述: ``` if self.direct == 1: pygame.init() music = r"music\ai.mp3" pygame.mixer.music.load(music) pygame.mixer.music.play() ``` 一个十分普通的语句,在pycharm里可以顺利运行,但使用pyinstaller完成打包,并把music文件夹复制到和exe文件同目录下后却不能正常播放music里面的音乐文件,出现如下报错:![图片说明](https://img-ask.csdn.net/upload/202001/11/1578673075_740305.png) 整条路径没有中文名,歌曲文件名为ai.mp3,也没有中文名; 打包语句:pyinstaller -D loadui_new.py 目前已经试过网上的冻结路径法、spec打包(使用--add-data添加文件)法,报错没有变化。 初学python,还请各位前辈能教一下,感激不尽
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问