GVKun编程网logo

在python中从视频源创建视频缩略图(在python中从视频源创建视频缩略图怎么做)

14

对于想了解在python中从视频源创建视频缩略图的读者,本文将是一篇不可错过的文章,我们将详细介绍在python中从视频源创建视频缩略图怎么做,并且为您提供关于android–从视频网址获取视频的缩略

对于想了解在python中从视频源创建视频缩略图的读者,本文将是一篇不可错过的文章,我们将详细介绍在python中从视频源创建视频缩略图怎么做,并且为您提供关于android – 从视频网址获取视频的缩略图、android – 如何从资产文件夹中的mp4文件创建视频缩略图、android-image – 从路径创建视频缩略图、Android-setImageBitmap(bmp)在创建视频缩略图后返回null的有价值信息。

本文目录一览:

在python中从视频源创建视频缩略图(在python中从视频源创建视频缩略图怎么做)

在python中从视频源创建视频缩略图(在python中从视频源创建视频缩略图怎么做)

我有一个视频文件的网址,我想为每个视频源网址生成缩略图。我正在使用Django。

我的应用程序这样做:

1. Crawl the some webpage
2. Extract all the video link from it.
3. If there are thumbnails,get those thumbnails.
4. if not thumbnails:
    #here I need to generate video thumbnails from the
    #links I extracted in 2nd step.

有什么方法可以执行此操作而无需下载完整的视频并生成缩略图。

如果我下载每个视频,则将浪费大量带宽并需要大量时间。

谢谢

android – 从视频网址获取视频的缩略图

android – 从视频网址获取视频的缩略图

是否可以从视频网址获取缩略图?我需要在列表视图中缩略图视频.

解决方法

是的,可以使用ThumbnailUtils获取视频的缩略图.
FileOutputStream out;
File land=new File(Environment.getExternalStorageDirectory().getAbsoluteFile()
                +"/portland.jpg");// image file use to create image u can give any path.
Bitmap bitmap=ThumbnailUtils.createVideoThumbnail(filePath,MediaStore.Video.Thumbnails.FULL_SCREEN_KIND);//filePath is your video file path.
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG,100,stream);
        byte[] byteArray = stream.toByteArray();

        out=new  FileOutputStream(land.getPath());
        out.write(byteArray);
        out.close();

android – 如何从资产文件夹中的mp4文件创建视频缩略图

android – 如何从资产文件夹中的mp4文件创建视频缩略图

我在从资产文件夹中的mp4文件创建缩略图时遇到问题.尝试输入不同的资产路径但没有效果.我该如何解决?

那是我的适配器代码:

VideoEntry video = videos.get(position);
    holder.txtTitle.setText(video.getTitle());
    holder.imgIcon.setimageBitmap(ThumbnailUtils.createVideoThumbnail("file:///android_asset/videos/Core/Superman.mp4", Thumbnails.MICRO_KIND));

怎么了?

解:

 AssetManager am = getAssets();
 InputStream ims = am.open("images/" + category + "/" + item.replace(" ", "_").replace(".mp4", ".png").toLowerCase());
 Drawable d = Drawable.createFromStream(ims, null);
 holder.imgIcon.setimageDrawable(d);

解决方法:

ThumbnailUtils.createVideoThumbnail()只查询MediaStore中的现有缩略图,或强制MediaStore创建它(如果它不存在).这意味着您无法为MediaStore不可用的视频文件创建缩略图,因为它是应用程序的资产,而不是SD卡上的实际文件.您可以将文件解压缩到SD卡,或者只是在另一个应用程序中提供自己创建的缩略图.希望这可以帮助.

android-image – 从路径创建视频缩略图

android-image – 从路径创建视频缩略图

我试图用一段时间从视频创建缩略图但没有成功.事实上,我在网上找到了几个解决方案,但在所有 Android版本上都没有.

唯一可行的方法是使用视频的ID.我的问题是我需要使用视频路径,但我找不到办法做到这一点. (没有方法适用于所有Android版本.)

我需要一个适用于大于2.0的所有版本的解决方案就足够了.

你可以帮帮我吗?先感谢您!

解决方法

ThumbnailUtils.createVideoThumbnail (String filePath,int kind)可以帮忙吗?

Android-setImageBitmap(bmp)在创建视频缩略图后返回null

Android-setImageBitmap(bmp)在创建视频缩略图后返回null

如何解决Android-setImageBitmap(bmp)在创建视频缩略图后返回null?

我使用ThumbnailUtils.createVideoThumbnail()函数已经有好几年了,但是突然之间我不明白为什么它停止工作了。我有这样的视频路径(用VideoCompressor库压缩后得到):

 /storage/emulated/0/com.xscoder.appname/media/videos/VIDEO_20200918_145357.mp4

这是我的videoToSendURL变量。

因此,我使用以下代码显示视频的缩略图:

Bitmap thumb = ThumbnailUtils.createVideoThumbnail(videoToSendURL,MediaStore.Images.Thumbnails.MINI_KIND);
    if (thumb != null) {
        Log.i(TAG,"Thumb: " + thumb.getByteCount());
        myImageView.setimageBitmap(thumb);
    } else { Log.i("Something went wrong."); }

Logcat打印出:

THUMB: 294912

但是该应用程序崩溃了,我得到了以下致命异常:

Attempt to invoke virtual method ''void android.widget.ImageView.setimageBitmap(android.graphics.Bitmap)'' on a null object reference

我假设我的thumb位图不为空,因为Logcat返回了它的byteCount数据,并且我知道myImg不为空,我已经在onCreate()中声明了它。

-更新-

我真正需要做的是创建一个视频缩略图以将其上传到服务器,所以这是我使用的代码:

外部VideCompressor类,代码位于公共类XServerSDK扩展了Application {}

public static class VideoCompressor extends AsyncTask<String,String,String> {
      @SuppressLint("StaticFieldLeak")
      Context ctx;
      VideoCompressor(Context context){ ctx = context; }

      @Override protected void onPreExecute() {
         super.onPreExecute();
         showHUD(ctx);
         Toast.makeText(ctx,"Compressing Video...",Toast.LENGTH_LONG).show();
      }

      @Override
      protected String doInBackground(String... paths) {
         String filePath = null;
         try { filePath = KplCompressor.with(ctx).compressVideo(paths[0],paths[1]);
         } catch (URISyntaxException e) { e.printstacktrace();
            Log.i(TAG,"ERROR ON VIDEO COMPRESSOR: " + e.getMessage());
         }
         return  filePath;
      }
      @Override
      protected void onPostExecute(String compressedFilePath) {
         super.onPostExecute(compressedFilePath);

         File imageFile = new File(compressedFilePath);
         float length = imageFile.length() / 1024f; // Size in KB
         String videoSize;
         if(length >= 1024) { videoSize = length / 1024f + " MB";
         } else { videoSize = length + " KB"; }

         videoToSendURL = compressedFilePath;
         Log.i(TAG,"COMpressed VIDEO -> URL: " + videoToSendURL + " -> SIZE: " + videoSize);

        // HERE I CALL MY FUNCTION THAT''S IN MY Messages ACTIVITY
        new Messages().uploadFiles();

      }
   }

消息活动中:

void uploadFiles() {
      // Video
        XsuploadFile(videoToSendURL,"video.mp4",(Activity)ctx,new XServerSDK.XSFileHandler() {
        @Override public void done(final String vidURL,String e) {
            if (vidURL != null) {
                Log.i(TAG,"VIDEO URL: " + vidURL);
                // Create VideoThumbnail
                 Bitmap thumb = ThumbnailUtils.createVideoThumbnail(videoToSendURL,MediaStore.Images.Thumbnails.MINI_KIND);
                  if (thumb != null) {
                      Log.i(TAG,"videoToSendURL: " + videoToSendURL);
                      Log.i(TAG,"THUMB: " + thumb.getByteCount());
                      
                      // VideoThumb
                      String imgPath = getFilePathFromURI(getimageUri(thumb,ctx),ctx);
                      Log.i(TAG,"imgPath: " + imgPath);
                      XsuploadFile(imgPath,"image.jpg",(Activity) ctx,new XServerSDK.XSFileHandler() { @Override public void done(final String thumbURL,String e) { 
        if (thumbURL != null) { 
            Log.i(TAG,"VIDEO THUMB URL: " + thumbURL);
            if (vidURL.contains("upload_max_filesize")) {
                hideHUD();   
                simpleAlert("The uploaded file exceeds the upload_max_filesize directive and cannot be uploaded.",ctx);
           } else { 
              fileType = "video"; 
              sendMessage(thumbURL,vidURL,"","");
           } 
           // error
           } else { hideHUD(); simpleAlert(e,ctx);
    }}});// ./ XsuploadFile
        
    } else { hideHUD(); simpleAlert("Something went wrong,try again.",ctx); }
    
      // error
      } else { hideHUD(); simpleAlert(e,ctx); }
    }});// ./ XsuploadFile
}

这是我从Uri获取真实路径的代码:

//-----------------------------------------------
   // MARK - GET URI OF A STORED IMAGE
   //-----------------------------------------------
   public static Uri getimageUri(Bitmap bm,Context ctx) {
      ByteArrayOutputStream bytes = new ByteArrayOutputStream();
      bm.compress(Bitmap.CompressFormat.JPEG,100,bytes);
      String path = MediaStore.Images.Media.insertimage(ctx.getContentResolver(),bm,"image",null);
      return Uri.parse(path);
   }


   //-----------------------------------------------
   // MARK - GET REAL PATH FROM URI
   //-----------------------------------------------
   public static String getFilePathFromURI(Uri uri,Context ctx) {
      @SuppressLint("Recycle")
      Cursor cursor = ctx.getContentResolver().query(uri,null,null);
      assert cursor != null;
      cursor.movetoFirst();
      int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
      return cursor.getString(idx);
   }

最后,致命异常:

java.lang.NullPointerException: Attempt to invoke virtual method ''android.content.ContentResolver android.content.Context.getContentResolver()'' on a null object reference
        at android.content.Contextwrapper.getContentResolver(Contextwrapper.java:103)
        at com.xscoder.hi.XServerSDK.getimageUri(XServerSDK.java:1253)
        at com.xscoder.hi.Messages$16.done(Messages.java:1403)

因此,在这种情况下,代码在到达以下位置时会崩溃:

 String imgPath = getFilePathFromURI(getimageUri(thumb,ctx);

以前从未发生过,也许是因为我正在从uploadFiles()类中调用VideoCompressor函数吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

我们今天的关于在python中从视频源创建视频缩略图在python中从视频源创建视频缩略图怎么做的分享就到这里,谢谢您的阅读,如果想了解更多关于android – 从视频网址获取视频的缩略图、android – 如何从资产文件夹中的mp4文件创建视频缩略图、android-image – 从路径创建视频缩略图、Android-setImageBitmap(bmp)在创建视频缩略图后返回null的相关信息,可以在本站进行搜索。

本文标签: