code: def test_convert_video_to_playable_mp4(self, test_file_dir):
      with tempfile.NamedTemporaryFile(
          suffix="out.avi", delete=False
      ) as tmp_not_playable_vid:
          shutil.copy(
              str(test_file_dir / "bad_video_sample.mp4"),
              tmp_not_playable_vid.name,
          )
          with patch("os.remove", wraps=os.remove) as mock_remove:
              playable_vid = (
                  processing_utils.convert_video_to_playable_mp4(
                      tmp_not_playable_vid.name
                  )
              )
          # check tempfile got deleted
          assert not Path(mock_remove.call_args[0][0]).exists()
          assert processing_utils.video_is_playable(playable_vid)
  
imports: import os
  import shutil
  import tempfile
  from copy import deepcopy
  from pathlib import Path
  from unittest.mock import patch
  import ffmpy
  import numpy
  import pytest
  from gradio_client import media_data
  from PIL import Image, ImageCms
  from gradio import processing_utils, utils
label_desc: Use image node_id 4 for calling the TestVideoProcessing obj's underlying member method code with example usage: obj.test_convert_video_to_playable_mp4(test_file_dir) without return types