MP4 export fails when output path contains non-ASCII characters (e.g. Japanese)

When exporting an MP4 video, ParaView cannot correctly generate the file if the output path contains non-ASCII characters (e.g., Japanese).

I imagine we need to use vtksys::fstream instead somewhere.Is this on Windows?

Cc: @mwestphal @todoooo Might be of interest to you.

It’s hard to comment without having the steps to recreate but FFMPEG avio_open expects a UTF-8 filename, so I would say the text provided has not been properly converted from UTF-16 on Windows.

  if (avio_open(&this->avFormatContext->pb, this->avFormatContext->filename, AVIO_FLAG_WRITE) < 0)
  {
    vtkGenericWarningMacro(<< "Could not open " << this->Writer->GetFileName() << ".");
    return 0;
  }

If the skybox movie representation is being used then the filename comes from request data.

int vtkSkyboxMovieRepresentation::RequestData(
vtkInformation* request, vtkInformationVector** inputVector, vtkInformationVector* outputVector)
{
if (inputVector[0]->GetNumberOfInformationObjects() == 1)
{
vtkTable* input = vtkTable::GetData(inputVector[0], 0);
if (input->GetNumberOfRows() > 0 && input->GetNumberOfColumns() > 0)
{
this->DummyPolyData->GetFieldData()->ShallowCopy(input->GetRowData());

  std::string text = vtkExtractString(this->DummyPolyData);
  this->FileName = text;
}

}
else
{
this->DummyPolyData->Initialize();
}
this->DummyPolyData->Modified();
return this->Superclass::RequestData(request, inputVector, outputVector);
}
1 Like